
void __regparm1
sqlite3Update(Parse *pParse,SrcList *pTabList,ExprList *pChanges,Expr *pWhere,int onError,
             ExprList *pOrderBy,Expr *pLimit,Upsert *pUpsert)

{
  char *__n;
  int *aRegIdx;
  int iVar1;
  u8 uVar2;
  ushort uVar3;
  short sVar4;
  Select *pSVar5;
  sqlite3 *psVar6;
  code *pcVar7;
  char cVar8;
  byte bVar9;
  short sVar10;
  u16 wctrlFlags;
  Table *pTab;
  Trigger *pTrigger;
  int iVar11;
  int *aChange;
  int *piVar12;
  int iVar13;
  char *pcVar14;
  uint chngRowid;
  int iVar15;
  Expr *pEVar16;
  ExprList *pList;
  Op *pOVar17;
  u32 uVar18;
  int p2;
  int iVar19;
  Index *pIVar20;
  int *piVar21;
  Parse *pPVar22;
  Vdbe *pVVar23;
  WhereInfo *pOrderBy_00;
  ExprList *pChanges_00;
  int p3;
  i16 iVar24;
  SrcList *pSrc;
  uint uVar25;
  byte bVar26;
  int iVar27;
  int p2_00;
  int iVar28;
  int iVar29;
  Table *pTVar30;
  Table *pTVar31;
  int unaff_EDI;
  int in_GS_OFFSET;
  bool bVar32;
  bool bVar33;
  Expr *pEVar34;
  char *zArg1;
  u8 **dupFlags;
  char *pcVar35;
  u8 **ppuVar36;
  Expr *in_stack_fffffee4;
  int *in_stack_fffffee8;
  sqlite3 *psVar37;
  sqlite3 *db;
  int local_100;
  Table *local_fc;
  Vdbe *local_f8;
  Vdbe *local_f0;
  int local_ec;
  WhereInfo *local_e8;
  VTable *local_e4;
  Index *local_e0;
  Expr *local_dc;
  Expr *local_d8;
  Table *local_d4;
  uint local_c8;
  int local_c4;
  char *local_c0;
  Expr *local_b8;
  int local_ac;
  u16 local_a4;
  int local_9c;
  Table *local_98;
  int local_94;
  u8 *local_90;
  Table *local_8c;
  int local_84;
  WhereInfo *local_80;
  Expr *local_78;
  int local_74;
  char local_6e;
  Table *local_68;
  Expr *local_64;
  int tmask;
  int bReplace;
  AuthContext sContext;
  NameContext sNC;
  
  __x86_get_pc_thunk_di();
  db = pParse->db;
  bReplace = 0;
  sContext.zAuthContext = (char *)0x0;
  sContext.pParse = (Parse *)0x0;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;
  pTab = sqlite3SrcListLookup(pParse,pSrc);
  if (pTab != (Table *)0x0) {
    local_d4 = (Table *)0xffff8000;
    if (pTab->pSchema != (Schema *)0x0) {
      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);
    }
    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);
    pSVar5 = pTab->pSelect;
    local_100 = 0;
    if (1 < pSrc->nSrc) {
      local_100 = pChanges_00->nExpr;
    }
    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);
    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {
      pEVar34 = (Expr *)pParse->nTab;
      local_c0 = &pEVar34->affExpr;
      uVar18 = pTab->tabFlags;
      pParse->nTab = (int)local_c0;
      pIVar20 = pTab->pIndex;
      local_dc = pEVar34;
      if ((uVar18 & 0x80) == 0) {
        local_e0 = (Index *)0x0;
        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;
LAB_00091707:
        pEVar16 = (Expr *)local_c0;
        do {
          bVar32 = local_e0 == pIVar20;
          pIVar20 = pIVar20->pNext;
          if (bVar32) {
            local_dc = pEVar16;
          }
          pEVar16 = (Expr *)&pEVar16->affExpr;
          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);
        } while (pIVar20 != (Index *)0x0);
        pParse->nTab = (int)pEVar16;
      }
      else {
        if (pIVar20 != (Index *)0x0) {
          bVar26 = pIVar20->field_0x37;
          local_e0 = pIVar20;
          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {
            bVar26 = local_e0->field_0x37;
          }
          goto LAB_00091707;
        }
LAB_00091c69:
        local_e0 = (Index *)0x0;
        local_90 = (u8 *)0x0;
      }
      if (pWhere != (Expr *)0x0) {
        local_dc = (Expr *)pWhere->iTable;
        local_c0 = *(char **)&pWhere->iColumn;
        pParse->nTab = (int)pEVar34;
      }
      pSrc->a[0].iCursor = (int)local_dc;
      pcVar35 = (char *)0x91792;
      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));
      if (aChange != (int *)0x0) {
        aRegIdx = aChange + pTab->nCol;
        __n = (char *)(local_90 + 1);
        piVar21 = aRegIdx + (int)__n;
        zArg1 = __n;
        memset(piVar21,1,(size_t)__n);
        local_90[(int)piVar21 + 1] = '\0';
        sVar10 = pTab->nCol;
        if (0 < sVar10) {
          piVar12 = aChange;
          do {
            *piVar12 = -1;
            piVar12 = piVar12 + 1;
          } while (aChange + sVar10 != piVar12);
        }
        sNC.pNext = (NameContext *)0x0;
        sNC.nRef = 0;
        sNC.nErr = 0;
        sNC.pWinSelect = (Select *)0x0;
        sNC.ncFlags = 0x200;
        sNC.uNC.pEList = (ExprList *)pWhere;
        local_e8 = (WhereInfo *)pParse->pVdbe;
        sNC.pParse = pParse;
        sNC.pSrcList = pSrc;
        if (local_e8 == (WhereInfo *)0x0) {
          pcVar35 = (char *)0x92007;
          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);
          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;
        }
        else {
LAB_00091862:
          cVar8 = '\0';
          if (pChanges_00->nExpr < 1) {
            local_6e = '\0';
            local_ac = -1;
            local_b8 = (Expr *)0x0;
          }
          else {
            local_6e = '\0';
            local_e4 = (VTable *)0x0;
            local_ac = -1;
            local_b8 = (Expr *)0x0;
            local_d8 = (Expr *)pChanges_00->a;
            do {
              if (local_100 == 0) {
                pcVar35 = (char *)0x91be1;
                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);
                if (iVar11 != 0) goto LAB_00091be9;
              }
              iVar11 = (int)pTab->nCol;
              pcVar14 = (char *)local_d8->flags;
              if (0 < iVar11) {
                iVar28 = 0;
                local_fc = (Table *)pTab->aCol;
LAB_000918f0:
                pPVar22 = (Parse *)local_fc->zName;
                iVar13 = 0;
                do {
                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);
                  if (uVar25 == (byte)pcVar14[iVar13]) {
                    if (uVar25 == 0) {
                      if (pTab->iPKey == iVar28) {
                        cVar8 = '\x01';
                        local_b8 = *(Expr **)&local_d8->op;
                        local_ac = (int)local_e4;
LAB_00091c26:
                        aChange[iVar28] = (int)local_e4;
                        if (iVar11 <= iVar28) break;
                      }
                      else {
                        uVar3 = *(ushort *)&local_fc->pFKey;
                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {
                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;
                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);
                          goto LAB_00091be9;
                        }
                        aChange[iVar28] = (int)local_e4;
                        if (iVar11 <= iVar28) goto LAB_00092075;
                        local_6e = '\x01';
                      }
                      pcVar14 = db->aDb[(int)local_d4].zDbSName;
                      goto LAB_0009197f;
                    }
                  }
                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=
                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))
                  goto LAB_00091b70;
                  iVar13 = iVar13 + 1;
                } while( true );
              }
LAB_00091b82:
              if (local_e0 != (Index *)0x0) {
LAB_00092075:
                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);
                pParse->checkSchema = '\x01';
                goto LAB_00091be9;
              }
              pcVar35 = (char *)0x91b95;
              iVar11 = sqlite3IsRowid(pcVar14);
              if (iVar11 == 0) goto LAB_00092075;
              iVar28 = -1;
              cVar8 = '\x01';
              local_b8 = *(Expr **)&local_d8->op;
              pcVar14 = db->aDb[(int)local_d4].zDbSName;
              local_ac = (int)local_e4;
              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);
LAB_0009197f:
              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4
                                       );
              if (iVar11 == 1) goto LAB_00091be9;
              if (iVar11 == 2) {
                aChange[iVar28] = -1;
              }
              local_e4 = (VTable *)((int)local_e4 + 1);
              local_d8 = (Expr *)((int)local_d8 + 0x10);
            } while ((int)local_e4 < pChanges_00->nExpr);
          }
          bVar26 = local_6e + cVar8;
          if ((pTab->tabFlags & 0x60) != 0) {
            iVar24 = pTab->nCol;
            do {
              if (iVar24 < 1) break;
              bVar32 = false;
              iVar11 = 0;
              do {
                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {
                  iVar28 = sqlite3ExprReferencesUpdatedColumn
                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);
                  if (iVar28 != 0) {
                    aChange[iVar11] = 99999;
                    bVar32 = true;
                  }
                  iVar24 = pTab->nCol;
                }
                iVar11 = iVar11 + 1;
              } while (iVar11 < iVar24);
            } while (bVar32);
          }
          uVar25 = (uint)(pTab->nModuleArg != 0);
          *(uint *)&pSrc->a[0].colUsed = -uVar25;
          chngRowid = (uint)bVar26;
          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);
          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);
          if (pChanges == (ExprList *)0x5) {
            bReplace = 1;
          }
          pIVar20 = pTab->pIndex;
          local_98 = (Table *)aRegIdx;
          if (pIVar20 != (Index *)0x0) {
            local_fc = (Table *)0x0;
            do {
              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||
                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&
                  (iVar28 = sqlite3ExprReferencesUpdatedColumn
                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))
              {
                iVar28 = pParse->nMem + 1;
                pParse->nMem = (uint)pIVar20->nColumn + iVar28;
LAB_00091b52:
                if (iVar28 == 0) goto LAB_00091b56;
              }
              else {
                iVar28 = 0;
                if (pIVar20->nKeyCol != 0) {
                  do {
                    if (pIVar20->aiColumn[iVar28] < 0) {
                      uVar25 = sqlite3ExprReferencesUpdatedColumn
                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);
                    }
                    else {
                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;
                    }
                    if (uVar25 != 0) {
                      iVar28 = pParse->nMem + 1;
                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;
                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {
                        bReplace = 1;
                      }
                      goto LAB_00091b52;
                    }
                    iVar28 = iVar28 + 1;
                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);
                }
LAB_00091b56:
                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;
                iVar28 = 0;
              }
              pIVar20 = pIVar20->pNext;
              aRegIdx[(int)local_fc] = iVar28;
              local_fc = (Table *)((int)local_fc + 1);
            } while (pIVar20 != (Index *)0x0);
            local_98 = (Table *)(aRegIdx + (int)local_fc);
          }
          iVar28 = pParse->nMem + 1;
          pParse->nMem = iVar28;
          *(int *)local_98 = iVar28;
          if (bReplace != 0) {
            memset(piVar21,1,(size_t)__n);
          }
          if (pParse->nested == '\0') {
            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;
          }
          bVar32 = pTrigger != (Trigger *)0x0;
          bVar33 = iVar11 != 0;
          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);
          iVar28 = pTab->nModuleArg;
          if (iVar28 == 0) {
            sVar10 = pTab->nCol;
            local_84 = *(int *)local_98;
            local_74 = pParse->nMem;
            local_fc = (Table *)(local_74 + 1);
            pParse->nMem = (int)local_fc;
            if ((bVar32 || local_6e != '\0') || (bVar33)) {
              local_74 = local_74 + 2;
              pParse->nMem = (int)&local_fc->zName + (int)sVar10;
              if (!bVar33) goto joined_r0x00091d94;
LAB_00091d96:
              local_d4 = (Table *)(pParse->nMem + 1);
              pParse->nMem = (int)local_d4;
            }
            else {
              local_74 = 0;
joined_r0x00091d94:
              local_d4 = local_fc;
              if (bVar26 != 0 || bVar32) goto LAB_00091d96;
            }
            local_94 = pParse->nMem + 1;
            pParse->nMem = pParse->nMem + (int)sVar10;
          }
          else {
            local_84 = 0;
            local_74 = 0;
            local_94 = 0;
            local_d4 = (Table *)0x0;
            local_fc = (Table *)0x0;
          }
          if (pSVar5 == (Select *)0x0) {
            if (local_100 == 0) goto LAB_00091e0a;
            bVar32 = false;
          }
          else {
            sContext.zAuthContext = pParse->zAuthContext;
            bVar32 = false;
            pParse->zAuthContext = pTab->zName;
            sContext.pParse = pParse;
            if (local_100 == 0) {
              sqlite3MaterializeView
                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,
                         (Table *)iVar28);
LAB_00091e0a:
              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);
              if (iVar28 != 0) goto LAB_00091be9;
              bVar32 = true;
              iVar28 = pTab->nModuleArg;
            }
          }
          if (iVar28 == 0) {
            local_9c = 0;
            iVar28 = pParse->nLabel + -1;
            pParse->nLabel = iVar28;
            if (((db->flags & 0x100000000) != 0) &&
               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {
              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {
                local_9c = pParse->nMem + 1;
                pParse->nMem = local_9c;
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);
              }
              else {
                local_9c = 0;
              }
            }
            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {
              pTVar30 = (Table *)0x0;
              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);
              local_8c = (Table *)0x0;
              if (pWhere != (Expr *)0x0) {
                local_a4 = 0;
LAB_00091ee2:
                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);
                local_d8 = (Expr *)0x0;
                local_f0 = (Vdbe *)0x0;
                bVar9 = 0;
                uVar2 = '\x01';
                local_80 = (WhereInfo *)0x0;
                uVar18 = pTab->tabFlags;
                pTVar31 = pTVar30;
LAB_00091f2a:
                pTVar30 = pTVar31;
                if ((uVar18 & 0x80) == 0) {
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);
                  local_c4 = 0;
                  pTVar30 = local_8c;
                  local_98 = pTVar31;
                }
                else {
LAB_00091f32:
                  local_c4 = (int)(short)local_a4;
                  if (0 < local_c4) {
LAB_00091f43:
                    local_98 = (Table *)0x0;
                    local_68 = pTVar30;
                    do {
                      sqlite3ExprCodeGetColumnOfTable
                                ((Vdbe *)local_e8,pTab,(int)local_dc,
                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),
                                 (int)local_68);
                      local_98 = (Table *)((int)local_98 + 2);
                      local_68 = (Table *)((int)&local_68->zName + 1);
                    } while ((Table *)(local_c4 * 2) != local_98);
                  }
                  local_98 = pTVar30;
                  local_c8 = local_c4;
                  if (uVar2 == '\0') {
LAB_00092c5d:
                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);
                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,
                                               (int)local_8c);
                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);
                    sqlite3VdbeAddOp4Int
                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,
                               local_c8);
                    local_c4 = 0;
                    uVar2 = '\0';
                    pTVar30 = local_8c;
                  }
                  else if (local_f0 != (Vdbe *)0x0) {
                    sqlite3VdbeChangeToNoop
                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);
                  }
                }
                goto LAB_0009244d;
              }
              local_f0 = (Vdbe *)0x0;
              local_d8 = (Expr *)0x0;
              local_a4 = 0;
LAB_00093044:
              wctrlFlags = 0x1004;
              if ((pParse->nested == '\0') &&
                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||
                  (wctrlFlags = 0x100c, bVar26 != 0)))) {
                wctrlFlags = 0x1004;
              }
              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,
                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);
              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;
              local_64 = (Expr *)local_80->aiCurOnePass[0];
              local_78 = (Expr *)local_80->aiCurOnePass[1];
              uVar2 = local_80->eOnePass;
              bVar9 = local_80->field_0x30 & 1;
              pTVar31 = pTVar30;
              if (uVar2 == '\x01') {
                uVar18 = pTab->tabFlags;
                goto LAB_00091f2a;
              }
              pPVar22 = pParse->pToplevel;
              if (pParse->pToplevel == (Parse *)0x0) {
                pPVar22 = pParse;
              }
              pPVar22->isMultiWrite = '\x01';
              uVar18 = pTab->tabFlags;
              if (uVar2 == '\x02') {
                if ((((int)local_78 < 0) || (local_dc == local_78)) ||
                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))
                goto LAB_00091f2a;
                if ((uVar18 & 0x80) == 0) {
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);
                  goto LAB_000931ef;
                }
                local_c8 = (uint)(short)local_a4;
                uVar2 = '\0';
                local_98 = pTVar30;
                local_c4 = local_c8;
                if (0 < (int)local_c8) goto LAB_00091f43;
                goto LAB_00092c5d;
              }
              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;
              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);
              if (uVar2 == '\0') {
LAB_000931ef:
                iVar13 = pParse->nMem + 1;
                pParse->nMem = iVar13;
                *(int *)local_98 = iVar13;
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);
                uVar2 = '\0';
              }
              local_c4 = 0;
              pTVar31 = local_8c;
              local_98 = pTVar30;
LAB_0009314f:
              if ((uVar2 != '\x02') && (bVar32)) {
                sqlite3WhereEnd(local_80);
              }
              if (pSVar5 == (Select *)0x0) {
                if (uVar2 == '\0') {
                  if (pTab->nModuleArg != 0) goto LAB_000932c3;
LAB_00093245:
                  iVar13 = 0;
LAB_00093247:
                  sqlite3OpenTableAndIndices
                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)
                  ;
LAB_0009326e:
                  if (iVar13 != 0) {
                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;
                    if (iVar29 == iVar13) {
                      *(int *)((int)local_e8 + 0x68) = iVar13;
                    }
                    else {
                      if (-1 < iVar13) {
                        iVar29 = iVar13;
                      }
                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);
                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {
                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);
                      }
                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);
                    }
                  }
                  if (uVar2 == '\0') goto LAB_000932c3;
                }
                else {
                  if (-1 < (int)local_64) {
                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;
                  }
                  if (-1 < (int)local_78) {
                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;
                  }
                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {
                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);
                    if (pTab->nModuleArg == 0) goto LAB_00093247;
                    goto LAB_0009326e;
                  }
                  if (pTab->nModuleArg == 0) goto LAB_00093245;
                }
                if ((local_dc != local_64) && (local_dc != local_78)) {
                  sqlite3VdbeAddOp4Int
                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);
                }
LAB_00093182:
                local_f0 = (Vdbe *)iVar28;
                if (uVar2 != '\x01') {
                  local_f0 = (Vdbe *)(pParse->nLabel + -1);
                  pParse->nLabel = (int)local_f0;
                }
                pTVar30 = pTVar31;
                if (local_e0 == (Index *)0x0) {
                  pTVar30 = local_fc;
                }
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);
                local_8c = (Table *)0x0;
                goto LAB_0009246c;
              }
              if (uVar2 != '\0') goto LAB_00093182;
LAB_000932c3:
              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {
                local_f0 = (Vdbe *)(pParse->nLabel + -1);
                pParse->nLabel = (int)local_f0;
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);
                local_8c = *(Table **)((int)local_e8 + 0x68);
                if (local_100 == 0) {
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);
                  sqlite3VdbeAddOp4Int
                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);
                  goto LAB_00093326;
                }
                if (pSVar5 == (Select *)0x0) {
                  if (local_e0 == (Index *)0x0) {
                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);
                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,
                                      (int)local_fc);
                  }
                  else {
                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {
                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,
                                        (int)&local_98->zName + iVar13);
                    }
                    sqlite3VdbeAddOp4Int
                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,
                               (int)(short)local_a4);
                  }
                  goto LAB_0009246c;
                }
                if (cVar8 == '\0') goto LAB_000924ae;
                goto LAB_0009342d;
              }
              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,
                                                   (int)local_fc);
              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);
              local_8c = (Table *)0x0;
LAB_00093326:
              if (cVar8 != '\0') goto LAB_0009247e;
            }
            else {
              if (local_e0 == (Index *)0x0) {
                local_a4 = 0;
              }
              else {
                local_a4 = local_e0->nKeyCol;
              }
              local_c4 = (int)(short)local_a4;
              iVar13 = pParse->nMem;
              pTVar30 = (Table *)(iVar13 + 1);
              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);
              pParse->nMem = (int)local_8c;
              if (pWhere == (Expr *)0x0) {
                if (pSVar5 == (Select *)0x0) {
                  iVar29 = 0;
                }
                else {
                  iVar29 = (int)pTab->nCol;
                }
                iVar29 = local_c4 + local_100 + iVar29;
                local_d8 = (Expr *)pParse->nTab;
                pParse->nTab = (int)&local_d8->affExpr;
                if (local_e0 == (Index *)0x0) {
                  pOrderBy_00 = (WhereInfo *)
                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);
                  local_f0 = (Vdbe *)pOrderBy_00;
                }
                else {
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);
                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);
                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);
                  pOrderBy_00 = (WhereInfo *)pVVar23;
                  if (pVVar23 != (Vdbe *)0x0) {
                    *(u16 *)&pVVar23->pNext = (u16)iVar29;
                    pOrderBy_00 = local_e8;
                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);
                  }
                }
                if (local_100 == 0) goto LAB_00093044;
                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,
                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);
                if (pSVar5 != (Select *)0x0) {
                  local_dc = local_d8;
                }
              }
              else {
                if (local_100 == 0) goto LAB_00091ee2;
                local_d8 = (Expr *)0x0;
              }
              uVar2 = '\0';
              bVar9 = 1;
              local_80 = (WhereInfo *)0x0;
              pPVar22 = pParse->pToplevel;
              if (pParse->pToplevel == (Parse *)0x0) {
                pPVar22 = pParse;
              }
              pPVar22->isMultiWrite = '\x01';
              local_98 = pTVar30;
LAB_0009244d:
              local_8c = (Table *)0x0;
              pTVar31 = pTVar30;
              local_f0 = (Vdbe *)iVar28;
              if (pWhere == (Expr *)0x0) goto LAB_0009314f;
LAB_0009246c:
              if (cVar8 != '\0') {
                if (local_100 == 0) {
LAB_0009247e:
                  if (pParse->pVdbe != (Vdbe *)0x0) {
                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);
                  }
                }
                else {
LAB_0009342d:
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);
                }
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);
              }
            }
LAB_000924ae:
            if ((local_6e != '\0') || (bVar33)) {
              local_c8 = 0;
              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {
                local_c8 = sqlite3FkOldmask(pParse,pTab);
              }
LAB_000924dd:
              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);
              if (0 < pTab->nCol) {
                iVar13 = 0;
                do {
                  sVar10 = (short)iVar13;
                  if ((pTab->tabFlags & 0x20) != 0) {
                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);
                  }
                  if (((uVar18 | local_c8) == 0xffffffff) ||
                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))
                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {
                    sqlite3ExprCodeGetColumnOfTable
                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);
                  }
                  else {
                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);
                  }
                  iVar13 = iVar13 + 1;
                } while (iVar13 < pTab->nCol);
              }
              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);
              }
            }
            else {
              local_c8 = 0;
              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;
            }
            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);
            iVar13 = (int)pTab->nCol;
            if (0 < iVar13) {
              uVar25 = 0;
              iVar29 = local_94;
              do {
                if ((int)pTab->iPKey == uVar25) {
LAB_000926a2:
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);
                  iVar13 = (int)pTab->nCol;
                }
                else {
                  uVar3 = pTab->aCol[uVar25].colFlags;
                  if ((uVar3 & 0x60) == 0) {
                    iVar27 = aChange[uVar25];
                    if (iVar27 < 0) {
                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&
                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;
                      sqlite3ExprCodeGetColumnOfTable
                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);
                      bVar9 = 0;
                      iVar13 = (int)pTab->nCol;
                    }
                    else if (local_100 == 0) {
                      if (pParse->pVdbe != (Vdbe *)0x0) {
                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);
                        iVar13 = (int)pTab->nCol;
                      }
                    }
                    else {
                      if (pSVar5 == (Select *)0x0) {
                        iVar13 = (int)(short)local_a4;
                      }
                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);
                      iVar13 = (int)pTab->nCol;
                    }
                  }
                  else {
                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);
                  }
                }
                uVar25 = uVar25 + 1;
                iVar29 = iVar29 + 1;
              } while ((int)uVar25 < iVar13);
            }
            if ((pTab->tabFlags & 0x60) != 0) {
              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);
            }
            if ((tmask & 1U) == 0) {
              if (pSVar5 == (Select *)0x0) {
LAB_00092d63:
                pPVar22 = pParse;
                sqlite3GenerateConstraintChecks
                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,
                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,
                           (Upsert *)0x0);
                bVar32 = bVar26 != 0;
                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);
                if ((bReplace != 0) || (bVar32)) {
                  if (local_e0 == (Index *)0x0) {
                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,
                                                       (int)local_f0,(int)local_fc);
                  }
                  else {
                    piVar21 = (int *)sqlite3VdbeAddOp4Int
                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,
                                                (int)pTVar31,local_c4);
                  }
                }
                if (iVar11 != 0) {
                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,
                                 (int)in_stack_fffffee4);
                }
                pPVar22 = pParse;
                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);
                if (bVar9 != 0) {
                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);
                }
                if ((1 < iVar11) || (bVar32)) {
                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);
                }
                if (iVar11 == 0) {
                  if (uVar2 == '\x02') {
                    iVar11 = 6;
                  }
                  else {
                    iVar11 = 4;
                  }
                  sqlite3CompleteInsertion
                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,
                             0);
                }
                else {
                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,
                                 (int)in_stack_fffffee4);
                  if (uVar2 == '\x02') {
                    iVar11 = 6;
                  }
                  else {
                    iVar11 = 4;
                  }
                  sqlite3CompleteInsertion
                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,
                             0);
                  if ((pParse->db->flags & 0x4000) != 0) {
                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);
                  }
                }
              }
            }
            else {
              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);
              sqlite3CodeRowTrigger
                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,
                         (int)local_f0);
              if (pSVar5 == (Select *)0x0) {
                if (local_e0 == (Index *)0x0) {
                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)
                  ;
                }
                else {
                  sqlite3VdbeAddOp4Int
                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4
                            );
                }
                local_ec = local_94;
                iVar29 = (int)pTab->nCol;
                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {
                  uVar3 = pTab->aCol[iVar13].colFlags;
                  if ((uVar3 & 0x60) == 0) {
                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {
                      sqlite3ExprCodeGetColumnOfTable
                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);
                      iVar29 = (int)pTab->nCol;
                    }
                  }
                  else {
                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);
                  }
                  local_ec = local_ec + 1;
                }
                if ((pTab->tabFlags & 0x60) != 0) {
                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);
                }
                goto LAB_00092d63;
              }
            }
            if (local_9c != 0) {
              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);
            }
            sqlite3CodeRowTrigger
                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,
                       (int)local_f0);
            if (uVar2 != '\x01') {
              if (uVar2 == '\x02') {
                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);
                sqlite3WhereEnd(local_80);
              }
              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {
                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);
              }
              else {
                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);
                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);
              }
            }
            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);
            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&
                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {
              autoIncrementEnd(pParse);
            }
            if (local_9c != 0) {
              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);
              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);
              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {
                sqlite3VdbeSetColName
                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),
                           (_func_void_void_ptr *)0x0);
              }
            }
          }
          else {
            psVar37 = pParse->db;
            pVVar23 = pParse->pVdbe;
            local_e4 = pTab->pVTable;
            if (local_e4 != (VTable *)0x0) {
              psVar6 = local_e4->db;
              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))
              {
                psVar6 = local_e4->db;
              }
            }
            iVar13 = pParse->nTab;
            sVar10 = pTab->nCol;
            iVar11 = sVar10 + 2;
            iVar29 = pSrc->a[0].iCursor;
            dupFlags = (u8 **)(iVar13 + 1);
            pParse->nTab = (int)dupFlags;
            pEVar34 = (Expr *)0x0;
            ppuVar36 = dupFlags;
            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);
            iVar27 = pParse->nMem;
            iVar28 = iVar27 + 1;
            iVar15 = iVar11 + iVar27;
            pParse->nMem = iVar15;
            if (pSrc->nSrc < 2) {
              p2 = iVar15 + 2;
              pParse->nMem = p2;
              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,
                                           (ExprList *)0x0,4,0);
              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;
              iVar19 = (int)pTab->nCol;
              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {
                p3 = iVar27 + 3 + p2_00;
                if (aChange[p2_00] < 0) {
                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);
                  if (0 < pVVar23->nOp) {
                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;
                  }
                  iVar19 = (int)pTab->nCol;
                }
                else if (pParse->pVdbe != (Vdbe *)0x0) {
                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);
                  iVar19 = (int)pTab->nCol;
                }
              }
              if ((pTab->tabFlags & 0x80) == 0) {
                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);
                if (local_b8 == (Expr *)0x0) {
                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);
                }
                else if (pParse->pVdbe != (Vdbe *)0x0) {
                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);
                }
              }
              else {
                pIVar20 = pTab->pIndex;
                while( true ) {
                  if (pIVar20 == (Index *)0x0) {
                    /* WARNING: Does not return */
                    pcVar7 = (code *)invalidInstructionException();
                    (*pcVar7)();
                  }
                  if ((pIVar20->field_0x37 & 3) == 2) break;
                  pIVar20 = pIVar20->pNext;
                }
                sVar4 = *pIVar20->aiColumn;
                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);
                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);
              }
              uVar2 = local_e8->eOnePass;
              if (uVar2 == '\0') {
                pPVar22 = pParse->pToplevel;
                if (pParse->pToplevel == (Parse *)0x0) {
                  pPVar22 = pParse;
                }
                pPVar22->isMultiWrite = '\x01';
                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);
                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);
                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);
                goto LAB_000922b8;
              }
              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);
              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);
            }
            else {
              if (local_b8 == (Expr *)0x0) {
                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);
              }
              else {
                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);
              }
              ppuVar36 = (u8 **)0x9221e;
              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);
              pTVar30 = pTab;
              if (0 < pTab->nCol) {
                iVar29 = 0;
                do {
                  if (aChange[iVar29] < 0) {
                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);
                    if (pEVar16 != (Expr *)0x0) {
                      pEVar16->iColumn = (short)iVar29 + 1;
                    }
                  }
                  else {
                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;
                    if (pEVar16 != (Expr *)0x0) {
                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);
                    }
                  }
                  iVar29 = iVar29 + 1;
                  ppuVar36 = (u8 **)0x92275;
                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);
                  pTVar30 = (Table *)(int)pTab->nCol;
                } while (iVar29 < (int)pTVar30);
              }
              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,
                               (ExprList *)pTVar30,in_stack_fffffee4);
              local_e8 = (WhereInfo *)0x0;
              if (pList != (ExprList *)0x0) {
                exprListDeleteNN(psVar37,pList);
              }
LAB_000922b8:
              if (pSrc->nSrc == 1) {
                sqlite3WhereEnd(local_e8);
              }
              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);
              uVar2 = '\0';
              if (0 < iVar11) {
                iVar29 = 0;
                do {
                  iVar27 = iVar29 + 1;
                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);
                  iVar29 = iVar27;
                } while (iVar27 != sVar10 + 2);
              }
            }
            sqlite3VtabMakeWritable(pParse,pTab);
            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);
            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);
            if (pChanges == (ExprList *)0xb) {
              pChanges._0_2_ = 2;
            }
            else {
            }
            if (0 < pVVar23->nOp) {
              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;
            }
            pPVar22 = pParse->pToplevel;
            if (pParse->pToplevel == (Parse *)0x0) {
              pPVar22 = pParse;
            }
            pPVar22->mayAbort = '\x01';
            if (uVar2 == '\0') {
              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);
              if ((int)local_f8 < 0) {
                local_f8 = (Vdbe *)(pVVar23->nOp + -1);
              }
              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);
              if (pVVar23->db->mallocFailed == '\0') {
                pOVar17 = pVVar23->aOp + (int)local_f8;
              }
              pOVar17->p2 = pVVar23->nOp;
              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);
            }
            else {
              sqlite3WhereEnd(local_e8);
            }
          }
        }
LAB_00091be9:
        pPVar22 = sContext.pParse;
        if (sContext.pParse != (Parse *)0x0) {
          sContext.pParse = (Parse *)0x0;
          pPVar22->zAuthContext = sContext.zAuthContext;
        }
        sqlite3DbFreeNN(db,aChange);
        goto LAB_00091598;
      }
    }
  }
  pPVar22 = sContext.pParse;
  if (sContext.pParse != (Parse *)0x0) {
    sContext.pParse = (Parse *)0x0;
    pPVar22->zAuthContext = sContext.zAuthContext;
  }
LAB_00091598:
  psVar37 = db;
  sqlite3SrcListDelete(db,pSrc);
  if (pChanges_00 != (ExprList *)0x0) {
    exprListDeleteNN(db,pChanges_00);
  }
  if (pTabList != (SrcList *)0x0) {
    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);
  }
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
LAB_00091b70:
  iVar28 = iVar28 + 1;
  local_fc = (Table *)((int)local_fc + 0x14);
  if (iVar28 == iVar11) goto LAB_00091b82;
  goto LAB_000918f0;
}



void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)

{
  size_t __n;
  char cVar1;
  ushort uVar2;
  short *psVar3;
  code *pcVar4;
  bool bVar5;
  byte bVar6;
  short sVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  int *piVar16;
  int *piVar17;
  int *piVar18;
  int *piVar19;
  int *piVar20;
  int iVar21;
  uint *extraout_ECX;
  uint uVar22;
  int extraout_ECX_00;
  int extraout_ECX_01;
  int extraout_ECX_02;
  int extraout_ECX_03;
  int extraout_ECX_04;
  undefined4 extraout_ECX_05;
  undefined4 extraout_ECX_06;
  int *extraout_ECX_07;
  int *extraout_ECX_08;
  int *extraout_ECX_09;
  int extraout_ECX_10;
  int extraout_ECX_11;
  int extraout_ECX_12;
  int extraout_ECX_13;
  int extraout_ECX_14;
  int extraout_ECX_15;
  undefined4 extraout_ECX_16;
  undefined4 extraout_ECX_17;
  int extraout_ECX_18;
  int extraout_ECX_19;
  int *extraout_EDX;
  int *piVar23;
  uint uVar24;
  uint extraout_EDX_00;
  uint uVar25;
  uint extraout_EDX_01;
  uint extraout_EDX_02;
  uint extraout_EDX_03;
  undefined4 extraout_EDX_04;
  uint extraout_EDX_05;
  uint extraout_EDX_06;
  uint extraout_EDX_07;
  uint extraout_EDX_08;
  byte bVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int *piVar30;
  int unaff_EDI;
  int in_GS_OFFSET;
  bool bVar31;
  undefined8 uVar32;
  undefined8 uVar33;
  undefined4 uVar34;
  uint local_100;
  int *local_fc;
  int local_f8;
  int local_f0;
  int local_ec;
  int *local_e8;
  uint local_e4;
  int local_e0;
  int *local_dc;
  uint *local_d8;
  int local_d4;
  uint local_c8;
  int local_c4;
  int *local_c0;
  uint local_b8;
  int local_ac;
  short local_a4;
  int local_9c;
  int *local_98;
  int local_94;
  int local_90;
  int local_8c;
  int local_84;
  int *local_78;
  int local_74;
  char local_6e;
  int local_68;
  int *local_64;
  byte local_50 [4];
  int local_4c;
  int local_48;
  int *local_44;
  int *local_40;
  int *local_3c;
  int *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x9151b;
  FUN_000a94ff();
  iVar27 = *param_1;
  local_4c = 0;
  local_48 = 0;
  local_44 = (int *)0x0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;
  piVar8 = (int *)FUN_00091200();
  if (piVar8 != (int *)0x0) {
    local_d4 = -0x8000;
    if (piVar8[0x12] != 0) {
      local_d4 = FUN_0002a630();
    }
    iVar9 = FUN_0002add0(extraout_ECX,local_50);
    piVar20 = (int *)piVar8[3];
    local_100 = 0;
    if (1 < *extraout_EDX) {
      local_100 = *extraout_ECX;
    }
    iVar10 = FUN_00083c60();
    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {
      piVar16 = (int *)param_1[10];
      local_c0 = (int *)((int)piVar16 + 1);
      bVar26 = *(byte *)(piVar8 + 9);
      param_1[10] = (int)local_c0;
      iVar10 = piVar8[2];
      local_dc = piVar16;
      if ((bVar26 & 0x80) == 0) {
        local_e0 = 0;
        if (iVar10 == 0) goto LAB_00091c69;
LAB_00091707:
        piVar23 = local_c0;
        do {
          bVar31 = local_e0 == iVar10;
          iVar10 = *(int *)(iVar10 + 0x14);
          if (bVar31) {
            local_dc = piVar23;
          }
          piVar23 = (int *)((int)piVar23 + 1);
          local_90 = ~(uint)piVar16 + (int)piVar23;
        } while (iVar10 != 0);
        param_1[10] = (int)piVar23;
      }
      else {
        if (iVar10 != 0) {
          bVar26 = *(byte *)(iVar10 + 0x37);
          local_e0 = iVar10;
          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {
            bVar26 = *(byte *)(local_e0 + 0x37);
          }
          goto LAB_00091707;
        }
LAB_00091c69:
        local_e0 = 0;
        local_90 = 0;
      }
      if (param_4 != (int *)0x0) {
        local_dc = (int *)param_4[7];
        local_c0 = (int *)param_4[8];
        param_1[10] = (int)piVar16;
      }
      extraout_EDX[0xc] = (int)local_dc;
      puVar11 = (undefined4 *)FUN_0002e2d0();
      if (puVar11 != (undefined4 *)0x0) {
        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);
        __n = local_90 + 1;
        piVar18 = piVar23 + __n;
        memset(piVar18,1,__n);
        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;
        sVar7 = *(short *)((int)piVar8 + 0x2a);
        if (0 < sVar7) {
          puVar12 = puVar11;
          do {
            *puVar12 = 0xffffffff;
            puVar12 = puVar12 + 1;
          } while (puVar11 + sVar7 != puVar12);
        }
        local_34 = 0;
        local_30 = 0;
        local_2c = 0;
        local_24 = 0;
        local_28 = 0x200;
        local_38 = param_4;
        local_e8 = (int *)param_1[2];
        local_40 = param_1;
        local_3c = extraout_EDX;
        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))
        {
          cVar1 = '\0';
          if ((int)*extraout_ECX < 1) {
            local_6e = '\0';
            local_ac = -1;
            local_b8 = 0;
          }
          else {
            local_6e = '\0';
            local_e4 = 0;
            local_ac = -1;
            local_b8 = 0;
            local_d8 = extraout_ECX + 1;
            do {
              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;
              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);
              uVar25 = local_d8[1];
              if (0 < iVar10) {
                iVar29 = 0;
                local_fc = (int *)piVar8[1];
LAB_000918f0:
                iVar15 = *local_fc;
                iVar13 = 0;
                do {
                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);
                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);
                  if (uVar24 == uVar22) {
                    if (uVar24 == 0) {
                      if ((short)piVar8[10] == iVar29) {
                        cVar1 = '\x01';
                        local_b8 = *local_d8;
                        local_ac = local_e4;
LAB_00091c26:
                        puVar11[iVar29] = local_e4;
                        if (iVar10 <= iVar29) break;
                      }
                      else {
                        uVar2 = *(ushort *)(local_fc + 4);
                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {
                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;
                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);
                          goto LAB_00091be9;
                        }
                        puVar11[iVar29] = local_e4;
                        if (iVar10 <= iVar29) goto LAB_00092075;
                        local_6e = '\x01';
                      }
                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);
                      goto LAB_0009197f;
                    }
                  }
                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=
                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;
                  iVar13 = iVar13 + 1;
                } while( true );
              }
LAB_00091b82:
              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {
LAB_00092075:
                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);
                *(undefined1 *)((int)param_1 + 0x11) = 1;
                goto LAB_00091be9;
              }
              iVar29 = -1;
              cVar1 = '\x01';
              local_b8 = *local_d8;
              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);
              local_ac = local_e4;
              iVar15 = unaff_EDI + 0x18a8f;
LAB_0009197f:
              iVar10 = FUN_0003c520(iVar15,uVar34);
              if (iVar10 == 1) goto LAB_00091be9;
              if (iVar10 == 2) {
                puVar11[iVar29] = 0xffffffff;
              }
              local_e4 = local_e4 + 1;
              local_d8 = local_d8 + 4;
            } while ((int)local_e4 < (int)*extraout_ECX);
          }
          bVar26 = local_6e + cVar1;
          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
            sVar7 = *(short *)((int)piVar8 + 0x2a);
            do {
              if (sVar7 < 1) break;
              bVar31 = false;
              iVar10 = 0;
              do {
                if (((int)puVar11[iVar10] < 0) &&
                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {
                  iVar29 = FUN_00028fd0();
                  if (iVar29 != 0) {
                    puVar11[iVar10] = 99999;
                    bVar31 = true;
                  }
                  sVar7 = *(short *)((int)piVar8 + 0x2a);
                }
                iVar10 = iVar10 + 1;
              } while (iVar10 < sVar7);
            } while (bVar31);
          }
          iVar10 = piVar8[0xe];
          extraout_EDX[0xf] = -(uint)(iVar10 != 0);
          piVar14 = (int *)(uint)bVar26;
          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);
          iVar10 = FUN_0002a330(piVar14);
          if (param_3 == 5) {
            local_4c = 1;
          }
          iVar29 = piVar8[2];
          local_98 = piVar23;
          if (iVar29 != 0) {
            local_fc = (int *)0x0;
            do {
              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||
                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {
                iVar15 = param_1[0xb] + 1;
                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;
LAB_00091b52:
                if (iVar15 == 0) goto LAB_00091b56;
              }
              else {
                iVar15 = 0;
                if (*(short *)(iVar29 + 0x32) != 0) {
                  do {
                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);
                    if (sVar7 < 0) {
                      uVar25 = FUN_00028fd0();
                    }
                    else {
                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;
                    }
                    if (uVar25 != 0) {
                      iVar15 = param_1[0xb] + 1;
                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;
                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {
                        local_4c = 1;
                      }
                      goto LAB_00091b52;
                    }
                    iVar15 = iVar15 + 1;
                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));
                }
LAB_00091b56:
                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;
                iVar15 = 0;
              }
              iVar29 = *(int *)(iVar29 + 0x14);
              piVar23[(int)local_fc] = iVar15;
              local_fc = (int *)((int)local_fc + 1);
            } while (iVar29 != 0);
            local_98 = piVar23 + (int)local_fc;
          }
          iVar29 = param_1[0xb];
          param_1[0xb] = iVar29 + 1;
          *local_98 = iVar29 + 1;
          if (local_4c != 0) {
            memset(piVar18,1,__n);
          }
          if (*(char *)((int)param_1 + 0x12) == '\0') {
            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;
          }
          bVar31 = iVar10 != 0;
          FUN_0006dd90();
          iVar29 = piVar8[0xe];
          if (iVar29 == 0) {
            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
            local_84 = *local_98;
            local_74 = param_1[0xb];
            local_fc = (int *)(local_74 + 1);
            param_1[0xb] = (int)local_fc;
            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {
              local_74 = local_74 + 2;
              param_1[0xb] = (int)local_fc + (int)piVar30;
              if (!bVar31) goto joined_r0x00091d94;
LAB_00091d96:
              local_d4 = param_1[0xb] + 1;
              param_1[0xb] = local_d4;
            }
            else {
              local_74 = 0;
joined_r0x00091d94:
              local_d4 = (int)local_fc;
              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;
            }
            local_94 = param_1[0xb] + 1;
            uVar25 = param_1[0xb] + (int)piVar30;
            param_1[0xb] = uVar25;
          }
          else {
            local_84 = 0;
            local_74 = 0;
            local_94 = 0;
            local_d4 = 0;
            local_fc = (int *)0x0;
            uVar25 = extraout_EDX_00;
            piVar30 = piVar8;
          }
          if (piVar20 == (int *)0x0) {
            if (local_100 == 0) goto LAB_00091e0a;
            bVar5 = false;
            iVar15 = 0;
          }
          else {
            iVar15 = param_1[0x3d];
            bVar5 = false;
            param_1[0x3d] = *piVar8;
            uVar25 = local_100;
            piVar30 = piVar8;
            local_48 = iVar15;
            local_44 = param_1;
            if (local_100 == 0) {
              FUN_00083b40(param_2,local_dc,iVar29,iVar29);
LAB_00091e0a:
              uVar32 = FUN_0003c9d0();
              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);
              if ((int)uVar32 != 0) goto LAB_00091be9;
              bVar5 = true;
              iVar29 = piVar8[0xe];
              iVar15 = extraout_ECX_00;
            }
          }
          if (iVar29 == 0) {
            local_9c = 0;
            iVar29 = param_1[0xe] + -1;
            param_1[0xe] = iVar29;
            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {
              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {
                local_9c = param_1[0xb] + 1;
                param_1[0xb] = local_9c;
                FUN_000315c0(local_9c,0,piVar30,piVar30);
                iVar15 = extraout_ECX_10;
                uVar25 = extraout_EDX_06;
              }
              else {
                local_9c = 0;
              }
            }
            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {
              iVar27 = 0;
              FUN_000315c0(local_84,local_fc,iVar15,iVar15);
              local_8c = 0;
              if (param_4 != (int *)0x0) {
                local_a4 = 0;
LAB_00091ee2:
                FUN_00075fd0(param_1,param_2,iVar29,0x10);
                local_f0 = 0;
                bVar6 = 0;
                local_e4 = 1;
                uVar22 = piVar8[9];
                iVar15 = extraout_ECX_01;
                uVar25 = extraout_EDX_01;
                iVar13 = iVar27;
LAB_00091f2a:
                iVar27 = iVar13;
                if ((uVar22 & 0x80) == 0) {
                  FUN_000315c0(local_fc,0,uVar22,uVar22);
                  local_c4 = 0;
                  iVar15 = extraout_ECX_18;
                  uVar25 = extraout_EDX_07;
                  iVar27 = local_8c;
                  local_98 = (int *)iVar13;
                }
                else {
LAB_00091f32:
                  local_c4 = (int)local_a4;
                  if (0 < local_c4) {
LAB_00091f43:
                    local_98 = (int *)0x0;
                    local_68 = iVar27;
                    do {
                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)
                      ;
                      local_98 = (int *)((int)local_98 + 2);
                      local_68 = local_68 + 1;
                      iVar15 = extraout_ECX_02;
                      uVar25 = extraout_EDX_02;
                    } while ((int *)(local_c4 * 2) != local_98);
                  }
                  local_98 = (int *)iVar27;
                  local_c8 = local_c4;
                  if (local_e4 == 0) {
LAB_00092c5d:
                    uVar34 = FUN_0002e150();
                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);
                    FUN_00032090(local_c8);
                    FUN_000316b0(local_8c,local_98,local_c8);
                    local_c4 = 0;
                    local_e4 = 0;
                    iVar15 = extraout_ECX_04;
                    uVar25 = extraout_EDX_05;
                    iVar27 = local_8c;
                  }
                  else if (local_f0 != 0) {
                    FUN_0002b350();
                    iVar15 = extraout_ECX_03;
                    uVar25 = extraout_EDX_03;
                  }
                }
                goto LAB_0009244d;
              }
              local_f0 = 0;
              local_a4 = 0;
LAB_00093044:
              uVar34 = 0x1004;
              if ((*(char *)((int)param_1 + 0x12) == '\0') &&
                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||
                  (uVar34 = 0x100c, bVar26 != 0)))) {
                uVar34 = 0x1004;
              }
              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);
              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);
              iVar15 = (int)uVar32;
              if (iVar15 == 0) goto LAB_00091be9;
              local_64 = *(int **)(iVar15 + 0x14);
              local_78 = *(int **)(iVar15 + 0x18);
              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);
              bVar6 = *(byte *)(iVar15 + 0x30) & 1;
              piVar30 = (int *)(local_e4 - 1);
              iVar15 = extraout_ECX_11;
              iVar13 = iVar27;
              if (piVar30 == (int *)0x0) {
                uVar22 = piVar8[9];
                goto LAB_00091f2a;
              }
              piVar17 = (int *)param_1[0x1d];
              if ((int *)param_1[0x1d] == (int *)0x0) {
                piVar17 = param_1;
              }
              *(undefined1 *)(piVar17 + 5) = 1;
              uVar22 = piVar8[9];
              uVar25 = uVar22 & 0x80;
              if (local_e4 == 2) {
                if ((((int)local_78 < 0) || (local_dc == local_78)) ||
                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')
                   ) goto LAB_00091f2a;
                if (uVar25 == 0) {
                  FUN_000315c0(local_fc,0,uVar22,uVar22);
                  iVar15 = extraout_ECX_14;
                  goto LAB_000931ef;
                }
                local_c8 = (uint)local_a4;
                local_e4 = 0;
                local_98 = (int *)iVar27;
                local_c4 = local_c8;
                if (0 < (int)local_c8) goto LAB_00091f43;
                goto LAB_00092c5d;
              }
              if (uVar25 != 0) goto LAB_00091f32;
              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);
              iVar15 = extraout_ECX_12;
              if (local_e4 == 0) {
LAB_000931ef:
                iVar13 = param_1[0xb];
                param_1[0xb] = iVar13 + 1;
                *local_98 = iVar13 + 1;
                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);
                local_e4 = 0;
                iVar15 = extraout_ECX_15;
                piVar30 = local_98;
              }
              local_c4 = 0;
              iVar13 = local_8c;
              local_98 = (int *)iVar27;
LAB_0009314f:
              if ((local_e4 != 2) && (bVar5)) {
                uVar32 = FUN_00043f00();
                iVar15 = extraout_ECX_13;
              }
              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
              if (piVar20 == (int *)0x0) {
                if (local_e4 == 0) {
                  piVar17 = piVar8;
                  if (piVar8[0xe] != 0) goto LAB_000932c3;
LAB_00093245:
                  iVar27 = 0;
LAB_00093247:
                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);
LAB_0009326e:
                  if (iVar27 != 0) {
                    iVar15 = local_e8[0x1a] + -1;
                    if (iVar15 == iVar27) {
                      local_e8[0x1a] = iVar27;
                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);
                    }
                    else {
                      if (-1 < iVar27) {
                        iVar15 = iVar27;
                      }
                      iVar27 = *local_e8;
                      local_f0 = unaff_EDI + 0x4e0b5;
                      if (*(char *)(iVar27 + 0x4d) == '\0') {
                        local_f0 = iVar15 * 0x14 + local_e8[0x19];
                      }
                      *(int *)(local_f0 + 8) = local_e8[0x1a];
                      uVar32 = CONCAT44(iVar27,local_f0);
                    }
                  }
                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
                  piVar17 = (int *)uVar32;
                  if (local_e4 == 0) goto LAB_000932c3;
                }
                else {
                  if (-1 < (int)local_64) {
                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;
                  }
                  if (-1 < (int)local_78) {
                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;
                  }
                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {
                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);
                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);
                    iVar27 = (int)uVar33;
                    if (piVar8[0xe] == 0) goto LAB_00093247;
                    goto LAB_0009326e;
                  }
                  if (piVar8[0xe] == 0) goto LAB_00093245;
                }
                piVar30 = local_64;
                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {
                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);
                }
LAB_00093182:
                local_f0 = iVar29;
                if (local_e4 != 1) {
                  iVar27 = param_1[0xe];
                  param_1[0xe] = iVar27 + -1;
                  local_f0 = iVar27 + -1;
                }
                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);
                local_8c = 0;
                goto LAB_0009246c;
              }
              piVar17 = (int *)uVar32;
              if (local_e4 != 0) goto LAB_00093182;
LAB_000932c3:
              piVar30 = local_e8;
              if ((local_e0 != 0) || (local_100 != 0)) {
                local_f0 = param_1[0xe] + -1;
                param_1[0xe] = local_f0;
                FUN_000315c0(iVar29,0,local_f0,local_f0);
                iVar29 = local_e8[0x1a];
                local_8c = iVar29;
                if (local_100 == 0) {
                  FUN_000315c0(iVar13,0,local_e8,local_e8);
                  FUN_000316b0(local_f0,iVar13,0);
                  goto LAB_00093326;
                }
                if (piVar20 == (int *)0x0) {
                  if (local_e0 == 0) {
                    FUN_000315c0(local_fc,0,iVar29,iVar29);
                    iVar29 = FUN_000315c0(local_f0,local_fc);
                  }
                  else {
                    iVar29 = (int)local_a4;
                    iVar27 = iVar29;
                    uVar34 = extraout_ECX_16;
                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;
                        piVar30 = (int *)((int)piVar30 + 1)) {
                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);
                      uVar34 = extraout_ECX_17;
                    }
                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);
                  }
                  goto LAB_0009246c;
                }
                if (cVar1 == '\0') goto LAB_000924ae;
                goto LAB_0009342d;
              }
              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);
              FUN_000315c0(local_f0,local_fc);
              local_8c = 0;
LAB_00093326:
              if (cVar1 != '\0') goto LAB_0009247e;
            }
            else {
              if (local_e0 == 0) {
                local_a4 = 0;
              }
              else {
                local_a4 = *(short *)(local_e0 + 0x32);
              }
              local_c4 = (int)local_a4;
              iVar13 = param_1[0xb];
              iVar27 = iVar13 + 1;
              local_8c = local_100 + 1 + iVar13 + local_c4;
              param_1[0xb] = local_8c;
              if (param_4 == (int *)0x0) {
                if (piVar20 == (int *)0x0) {
                  iVar15 = 0;
                }
                else {
                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);
                }
                iVar15 = local_c4 + local_100 + iVar15;
                piVar30 = (int *)param_1[10];
                iVar21 = (int)piVar30 + 1;
                param_1[10] = iVar21;
                if (local_e0 == 0) {
                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);
                  local_f0 = iVar13;
                }
                else {
                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);
                  local_f0 = FUN_000315c0(iVar15,0);
                  iVar13 = FUN_0004b310();
                  if (iVar13 != 0) {
                    *(short *)(iVar13 + 8) = (short)iVar15;
                    iVar13 = FUN_0002b210();
                  }
                }
                if (local_100 == 0) goto LAB_00093044;
                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);
                iVar15 = extraout_ECX_19;
                uVar25 = extraout_EDX_08;
                if (piVar20 != (int *)0x0) {
                  local_dc = piVar30;
                }
              }
              else if (local_100 == 0) goto LAB_00091ee2;
              local_e4 = 0;
              bVar6 = 1;
              piVar30 = (int *)param_1[0x1d];
              if ((int *)param_1[0x1d] == (int *)0x0) {
                piVar30 = param_1;
              }
              *(undefined1 *)(piVar30 + 5) = 1;
              local_98 = (int *)iVar27;
LAB_0009244d:
              uVar32 = CONCAT44(uVar25,iVar29);
              local_8c = 0;
              piVar30 = param_4;
              iVar13 = iVar27;
              local_f0 = iVar29;
              if (param_4 == (int *)0x0) goto LAB_0009314f;
LAB_0009246c:
              if (cVar1 != '\0') {
                if (local_100 == 0) {
LAB_0009247e:
                  if (param_1[2] != 0) {
                    FUN_00077ad0();
                  }
                }
                else {
LAB_0009342d:
                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);
                }
                FUN_000315c0(0,0,piVar30,piVar30);
              }
            }
LAB_000924ae:
            if ((local_6e != '\0') || (bVar31)) {
              local_c8 = 0;
              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {
                local_c8 = FUN_00017857();
              }
LAB_000924dd:
              uVar25 = FUN_00096110(0,3,piVar8,param_3);
              piVar16 = piVar8;
              if (0 < *(short *)((int)piVar8 + 0x2a)) {
                iVar27 = 0;
                do {
                  sVar7 = (short)iVar27;
                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {
                    sVar7 = FUN_0002a110();
                  }
                  if (((uVar25 | local_c8) == 0xffffffff) ||
                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))
                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))
                  {
                    FUN_00077cb0(iVar27,sVar7 + local_74);
                  }
                  else {
                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);
                  }
                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                  iVar27 = iVar27 + 1;
                } while (iVar27 < (int)piVar16);
              }
              if ((cVar1 == '\0') && (local_e0 == 0)) {
                FUN_000315c0(local_d4,0,piVar16,piVar16);
              }
            }
            else {
              local_c8 = 0;
              if (iVar9 != 0) goto LAB_000924dd;
            }
            piVar30 = piVar8;
            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);
            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
            piVar16 = piVar8;
            if (0 < (int)piVar18) {
              piVar16 = (int *)0x0;
              iVar27 = local_94;
              do {
                if ((int *)(int)(short)piVar8[10] == piVar16) {
LAB_000926a2:
                  FUN_000315c0(iVar27,0,piVar30);
                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                }
                else {
                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);
                  if ((uVar2 & 0x60) == 0) {
                    if ((int)puVar11[(int)piVar16] < 0) {
                      piVar19 = piVar18;
                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&
                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))
                      goto LAB_000926a2;
                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);
                      bVar6 = 0;
                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                      piVar30 = piVar19;
                    }
                    else if (local_100 == 0) {
                      if (param_1[2] != 0) {
                        FUN_00077ad0();
                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                      }
                    }
                    else {
                      if (piVar20 == (int *)0x0) {
                        piVar18 = (int *)(int)local_a4;
                      }
                      piVar30 = piVar20;
                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);
                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                    }
                  }
                  else {
                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);
                  }
                }
                piVar16 = (int *)((int)piVar16 + 1);
                iVar27 = iVar27 + 1;
              } while ((int)piVar16 < (int)piVar18);
            }
            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
              FUN_00018629();
            }
            if ((local_50[0] & 1) == 0) {
              if (piVar20 == (int *)0x0) {
LAB_00092d63:
                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,
                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);
                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
                bVar31 = bVar26 != 0;
                piVar16 = (int *)(uint)bVar31;
                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {
                  if (local_e0 == 0) {
                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);
                  }
                  else {
                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);
                  }
                }
                if (iVar10 != 0) {
                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);
                }
                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);
                piVar20 = extraout_ECX_07;
                if (bVar6 != 0) {
                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);
                  piVar20 = extraout_ECX_08;
                }
                if ((1 < iVar10) || (bVar31)) {
                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);
                  piVar20 = extraout_ECX_09;
                }
                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);
                if (iVar10 == 0) {
                  if (local_e4 == 2) {
                    uVar34 = 6;
                  }
                  else {
                    uVar34 = 4;
                    piVar30 = piVar20;
                  }
                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);
                }
                else {
                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);
                  if (local_e4 == 2) {
                    uVar34 = 6;
                  }
                  else {
                    uVar34 = 4;
                    piVar30 = piVar16;
                  }
                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);
                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {
                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);
                    piVar30 = piVar14;
                  }
                }
              }
            }
            else {
              piVar30 = (int *)FUN_00032360();
              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)
              ;
              piVar16 = piVar8;
              if (piVar20 == (int *)0x0) {
                if (local_e0 == 0) {
                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);
                }
                else {
                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);
                }
                local_ec = local_94;
                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);
                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;
                    piVar16 = (int *)((int)piVar16 + 1)) {
                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);
                  if ((uVar2 & 0x60) == 0) {
                    if (((int)puVar11[(int)piVar16] < 0) &&
                       (piVar16 != (int *)(int)(short)piVar8[10])) {
                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);
                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);
                    }
                  }
                  else {
                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);
                  }
                  local_ec = local_ec + 1;
                }
                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
                  FUN_00018629();
                }
                goto LAB_00092d63;
              }
            }
            if (local_9c != 0) {
              FUN_000315c0(1,0,piVar16,piVar16);
              piVar30 = piVar16;
            }
            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);
            if (local_e4 != 1) {
              if (local_e4 == 2) {
                FUN_00031430();
                FUN_00043f00();
              }
              else if ((local_e0 == 0) && (local_100 == 0)) {
                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);
              }
              else {
                FUN_00031430();
                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);
              }
            }
            FUN_00031430();
            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&
                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {
              FUN_00017af1();
            }
            if (local_9c != 0) {
              FUN_000315c0(1,0,local_9c,local_9c);
              FUN_0002ee80();
              iVar27 = *local_e8;
              if (*(char *)(iVar27 + 0x4d) == '\0') {
                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);
              }
            }
          }
          else {
            piVar20 = (int *)param_1[2];
            piVar16 = (int *)piVar8[0x10];
            if (piVar16 != (int *)0x0) {
              iVar27 = *piVar16;
              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {
                iVar27 = *piVar16;
              }
            }
            sVar7 = *(short *)((int)piVar8 + 0x2a);
            iVar27 = sVar7 + 2;
            iVar9 = param_1[10] + 1;
            param_1[10] = iVar9;
            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);
            iVar10 = param_1[0xb];
            iVar9 = iVar10 + 1;
            iVar29 = iVar27 + iVar10;
            param_1[0xb] = iVar29;
            if (*extraout_EDX < 2) {
              iVar15 = iVar29 + 2;
              param_1[0xb] = iVar15;
              iVar13 = FUN_0007d3c0(0,0,4,0);
              if (iVar13 == 0) goto LAB_00091be9;
              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {
                if ((int)puVar11[iVar28] < 0) {
                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);
                  if (0 < piVar20[0x1a]) {
                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;
                  }
                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
                }
                else if (param_1[2] != 0) {
                  FUN_00077ad0();
                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
                }
              }
              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {
                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);
                if (local_b8 == 0) {
                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);
                }
                else if (param_1[2] != 0) {
                  FUN_00077ad0();
                }
              }
              else {
                iVar21 = piVar8[2];
                while( true ) {
                  if (iVar21 == 0) {
                    /* WARNING: Does not return */
                    pcVar4 = (code *)invalidInstructionException();
                    (*pcVar4)();
                  }
                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;
                  iVar21 = *(int *)(iVar21 + 0x14);
                }
                psVar3 = *(short **)(iVar21 + 4);
                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);
                FUN_000315c0(iVar10 + 2,0);
              }
              cVar1 = *(char *)(iVar13 + 0x2e);
              if (cVar1 == '\0') {
                piVar8 = (int *)param_1[0x1d];
                if ((int *)param_1[0x1d] == (int *)0x0) {
                  piVar8 = param_1;
                }
                *(undefined1 *)(piVar8 + 5) = 1;
                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);
                FUN_000315c0(iVar15,0);
                FUN_000315c0(iVar29 + 1,iVar15);
                goto LAB_000922b8;
              }
              uVar34 = FUN_0002b350();
              FUN_000315c0(0,0,uVar34,uVar34);
            }
            else {
              if (local_b8 == 0) {
                FUN_00047ba0(0);
              }
              else {
                FUN_00052c60(0);
              }
              iVar10 = FUN_000449c0();
              piVar16 = piVar8;
              if (0 < *(short *)((int)piVar8 + 0x2a)) {
                iVar29 = 0;
                do {
                  if ((int)puVar11[iVar29] < 0) {
                    iVar10 = FUN_00047ba0(0);
                    if (iVar10 != 0) {
                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;
                    }
                  }
                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {
                    FUN_00052c60(0);
                  }
                  iVar29 = iVar29 + 1;
                  iVar10 = FUN_000449c0();
                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                } while (iVar29 < (int)piVar16);
              }
              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);
              if (iVar10 != 0) {
                FUN_000433a0();
              }
LAB_000922b8:
              piVar8 = extraout_EDX;
              if (*extraout_EDX == 1) {
                piVar8 = (int *)FUN_00043f00();
              }
              piVar16 = piVar8;
              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);
              cVar1 = '\0';
              if (0 < iVar27) {
                iVar10 = 0;
                do {
                  iVar29 = iVar10 + 1;
                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);
                  iVar10 = iVar29;
                } while (iVar29 != sVar7 + 2);
              }
            }
            uVar34 = FUN_0002e240();
            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);
            FUN_00032090(0xfffffff4);
            if (param_3 == 0xb) {
              param_3._0_2_ = 2;
            }
            else {
            }
            if (0 < piVar20[0x1a]) {
              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;
            }
            piVar8 = (int *)param_1[0x1d];
            if ((int *)param_1[0x1d] == (int *)0x0) {
              piVar8 = param_1;
            }
            *(undefined1 *)((int)piVar8 + 0x15) = 1;
            if (cVar1 == '\0') {
              FUN_000315c0(local_f8 + 1,0,param_1,param_1);
              if (local_f8 < 0) {
                local_f8 = piVar20[0x1a] + -1;
              }
              iVar27 = unaff_EDI + 0x4e0b5;
              if (*(char *)(*piVar20 + 0x4d) == '\0') {
                iVar27 = local_f8 * 0x14 + piVar20[0x19];
              }
              *(int *)(iVar27 + 8) = piVar20[0x1a];
              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);
            }
            else {
              FUN_00043f00();
            }
          }
        }
LAB_00091be9:
        piVar8 = local_44;
        if (local_44 != (int *)0x0) {
          local_44 = (int *)0x0;
          piVar8[0x3d] = local_48;
        }
        FUN_00024720();
        goto LAB_00091598;
      }
    }
  }
  piVar8 = local_44;
  if (local_44 != (int *)0x0) {
    local_44 = (int *)0x0;
    piVar8[0x3d] = local_48;
  }
LAB_00091598:
  FUN_00043120();
  if (extraout_ECX != (uint *)0x0) {
    FUN_000433a0();
  }
  if (param_2 != 0) {
    FUN_000432e0();
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
LAB_00091b70:
  iVar29 = iVar29 + 1;
  local_fc = local_fc + 5;
  if (iVar29 == iVar10) goto LAB_00091b82;
  goto LAB_000918f0;
}


PUSH EBP
PUSH EDI
MOV EBP,EAX
PUSH ESI
PUSH EBX
CALL 0x000a94ff
ADD EDI,0x4cae5
SUB ESP,0x10c
MOV EBX,dword ptr [EBP]
MOV EAX,dword ptr [ESP + 0x120]
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0xd0],0x0
MOV dword ptr [ESP + 0xd4],0x0
MOV dword ptr [ESP + 0xd8],0x0
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x128]
MOV dword ptr [ESP + 0x8],EBX
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xfc],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EBP + 0x24]
TEST EAX,EAX
MOV dword ptr [ESP + 0x1c],EAX
JNZ 0x00091598
MOVZX EAX,byte ptr [EBX + 0x4d]
TEST AL,AL
MOV byte ptr [ESP + 0x30],AL
JZ 0x000915f0
NOP
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDI
CALL 0x00043120
MOV ESI,dword ptr [ESP + 0x10]
TEST ESI,ESI
JZ 0x000915b8
MOV EDX,ESI
MOV EAX,EDI
CALL 0x000433a0
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x000915cb
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x000432e0
MOV EAX,dword ptr [ESP + 0xfc]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00092116
ADD ESP,0x10c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBP
CALL 0x00091200
TEST EAX,EAX
MOV dword ptr [ESP + 0x18],EAX
JZ 0x0009166c
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x48],0xffff8000
MOV EDX,dword ptr [EAX + 0x48]
TEST EDX,EDX
JZ 0x0009161e
MOV EAX,dword ptr [EBP]
CALL 0x0002a630
MOV dword ptr [ESP + 0x48],EAX
SUB ESP,0x8
MOV ECX,0x7f
LEA EAX,[ESP + 0xd4]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
MOV EAX,EBP
PUSH EBX
MOV ESI,dword ptr [ESP + 0x28]
MOV EDX,ESI
CALL 0x0002add0
MOV dword ptr [ESP + 0x60],EAX
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [ESP + 0x5c],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX],0x1
JLE 0x0009165d
MOV EAX,dword ptr [EBX]
MOV dword ptr [ESP + 0x1c],EAX
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,EBP
CALL 0x00083c60
TEST EAX,EAX
JZ 0x00091698
MOV EDX,dword ptr [ESP + 0xd8]
TEST EDX,EDX
JZ 0x00091598
MOV EAX,dword ptr [ESP + 0xd4]
MOV dword ptr [ESP + 0xd8],0x0
MOV dword ptr [EDX + 0xf4],EAX
JMP 0x00091598
MOV ECX,dword ptr [ESP + 0xcc]
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,EBP
CALL 0x0003d4a0
TEST EAX,EAX
MOV dword ptr [ESP + 0x74],EAX
JNZ 0x0009166c
MOV EAX,dword ptr [EBP + 0x28]
MOV ESI,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x60],EAX
ADD EAX,0x1
TEST byte ptr [ESI + 0x24],0x80
MOV dword ptr [ESP + 0x5c],EAX
MOV dword ptr [EBP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x8]
JZ 0x00091c59
TEST EAX,EAX
JZ 0x00092139
MOVZX EDX,byte ptr [EAX + 0x37]
AND EDX,0x3
CMP DL,0x2
JZ 0x00092130
MOV EDX,EAX
JMP 0x000916fc
MOVZX ECX,byte ptr [EDX + 0x37]
AND ECX,0x3
CMP CL,0x2
JZ 0x00091703
MOV EDX,dword ptr [EDX + 0x14]
TEST EDX,EDX
JNZ 0x000916f0
MOV dword ptr [ESP + 0x3c],EDX
MOV ESI,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [ESP + 0x5c]
MOV dword ptr [ESP + 0x20],EBP
MOV EBX,ESI
NOT ESI
MOV ECX,ESI
LEA ESI,[ESI]
CMP dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [EAX + 0x14]
CMOVZ EBX,EDX
ADD EDX,0x1
TEST EAX,EAX
LEA ESI,[ECX + EDX*0x1]
JNZ 0x00091720
MOV EBP,dword ptr [ESP + 0x20]
LEA EAX,[ESI + 0x2]
MOV dword ptr [ESP + 0x40],EBX
MOV dword ptr [ESP + 0x8c],ESI
MOV dword ptr [EBP + 0x28],EDX
MOV EBX,dword ptr [ESP + 0x24]
TEST EBX,EBX
JZ 0x00091766
MOV EDX,dword ptr [EBX + 0x1c]
MOV EBX,dword ptr [EBX + 0x20]
MOV dword ptr [ESP + 0x5c],EBX
MOV EBX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x40],EDX
MOV dword ptr [EBP + 0x28],EBX
MOV EBX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x40]
XOR ECX,ECX
MOV dword ptr [EBX + 0x30],EDX
MOV EBX,dword ptr [ESP + 0x18]
MOVSX EDX,word ptr [EBX + 0x2a]
MOV EBX,dword ptr [ESP + 0x8c]
LEA EDX,[EBX + EDX*0x1 + 0x1]
LEA EDX,[EAX + EDX*0x4]
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0002e2d0
TEST EAX,EAX
MOV dword ptr [ESP + 0x28],EAX
JZ 0x0009166c
MOV EAX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x28]
SUB ESP,0x4
MOVSX EAX,word ptr [EAX + 0x2a]
LEA EDX,[EBX + EAX*0x4]
LEA EAX,[ESI + 0x1]
MOV EBX,EDI
MOV dword ptr [ESP + 0x6c],EDX
MOV dword ptr [ESP + 0x84],EAX
LEA EDX,[EDX + EAX*0x4]
PUSH EAX
PUSH 0x1
MOV dword ptr [ESP + 0x78],EDX
PUSH EDX
CALL 0x000168b0
MOV EDX,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x10
MOV byte ptr [EDX + ESI*0x1 + 0x1],0x0
MOVSX EDX,word ptr [EAX + 0x2a]
TEST DX,DX
JLE 0x000917ff
MOV ESI,dword ptr [ESP + 0x28]
LEA EDX,[ESI + EDX*0x4]
MOV EAX,ESI
MOV dword ptr [EAX],0xffffffff
ADD EAX,0x4
CMP EDX,EAX
JNZ 0x000917f2
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0xe8],0x0
MOV dword ptr [ESP + 0xec],0x0
MOV dword ptr [ESP + 0xf0],0x0
MOV dword ptr [ESP + 0xf8],0x0
MOV dword ptr [ESP + 0xdc],EBP
MOV dword ptr [ESP + 0xe0],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0xf4],0x200
MOV dword ptr [ESP + 0xe4],EAX
MOV EAX,dword ptr [EBP + 0x8]
TEST EAX,EAX
MOV dword ptr [ESP + 0x34],EAX
JZ 0x00092000
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JLE 0x00093592
MOV EAX,dword ptr [ESP + 0x48]
MOV byte ptr [ESP + 0xae],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x70],0xffffffff
MOV dword ptr [ESP + 0x64],0x0
MOV dword ptr [ESP + 0x54],EBP
SHL EAX,0x4
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,0x4
MOV dword ptr [ESP + 0x44],EAX
LEA EAX,[ESP + 0xdc]
MOV dword ptr [ESP + 0x78],EAX
LEA ESI,[ESI]
MOV EBX,dword ptr [ESP + 0x1c]
TEST EBX,EBX
JZ 0x00091bd2
MOV EAX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [ESP + 0x44]
MOVSX EAX,word ptr [EAX + 0x2a]
MOV EBX,dword ptr [ESI + 0x4]
TEST EAX,EAX
MOV dword ptr [ESP + 0x2c],EAX
JLE 0x00091b82
MOV EAX,dword ptr [ESP + 0x18]
XOR EBP,EBP
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x20],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [EAX]
XOR EAX,EAX
JMP 0x00091918
MOVZX ECX,byte ptr [EDI + ECX*0x1 + 0xfffd7080]
CMP byte ptr [EDI + EDX*0x1 + 0xfffd7080],CL
JNZ 0x00091b70
ADD EAX,0x1
MOVZX EDX,byte ptr [ESI + EAX*0x1]
MOVZX ECX,byte ptr [EBX + EAX*0x1]
CMP EDX,ECX
JNZ 0x00091900
TEST EDX,EDX
JNZ 0x00091915
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EAX + 0x28]
CMP EAX,EBP
JZ 0x00091c40
MOV EDX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x20]
TEST EDX,EDX
MOVZX EAX,word ptr [EAX + 0x10]
JZ 0x00091c1e
TEST AL,0x1
JZ 0x00091c1e
CMP dword ptr [ESP + 0x2c],EBP
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX + EBP*0x4],EDX
JLE 0x00092075
MOV byte ptr [ESP + 0xae],0x1
MOV EAX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + EBX*0x1]
SUB ESP,0x8
MOV EDX,0x17
PUSH EAX
PUSH ESI
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x0003c520
ADD ESP,0x10
CMP EAX,0x1
JZ 0x00091be9
CMP EAX,0x2
JNZ 0x000919b4
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EAX + EBP*0x4],0xffffffff
MOV ESI,dword ptr [ESP + 0x10]
ADD dword ptr [ESP + 0x38],0x1
MOV EAX,dword ptr [ESP + 0x38]
ADD dword ptr [ESP + 0x44],0x10
CMP EAX,dword ptr [ESI]
JL 0x000918b8
MOV EBP,dword ptr [ESP + 0x54]
MOVZX EAX,byte ptr [ESP + 0x30]
MOVZX EBX,byte ptr [ESP + 0xae]
MOV ESI,dword ptr [ESP + 0x18]
ADD EBX,EAX
TEST byte ptr [ESI + 0x24],0x60
MOV byte ptr [ESP + 0xac],BL
JZ 0x00091a64
MOVZX EDX,word ptr [ESI + 0x2a]
MOV dword ptr [ESP + 0x2c],EBP
MOV EBP,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x38],EAX
TEST DX,DX
JLE 0x00091a60
MOV dword ptr [ESP + 0x20],0x0
XOR EBX,EBX
MOV EAX,dword ptr [EBP + EBX*0x4]
TEST EAX,EAX
JNS 0x00091a4e
MOV ECX,dword ptr [ESI + 0x4]
LEA EAX,[EBX + EBX*0x4]
LEA EAX,[ECX + EAX*0x4]
TEST byte ptr [EAX + 0x10],0x60
JZ 0x00091a4e
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [ESP + 0x38]
MOV EDX,EBP
CALL 0x00028fd0
TEST EAX,EAX
JZ 0x00091a4a
MOV dword ptr [EBP + EBX*0x4],0x1869f
MOV dword ptr [ESP + 0x20],0x1
MOVZX EDX,word ptr [ESI + 0x2a]
ADD EBX,0x1
MOVSX EAX,DX
CMP EBX,EAX
JL 0x00091a11
MOV ECX,dword ptr [ESP + 0x20]
TEST ECX,ECX
JNZ 0x00091a02
MOV EBP,dword ptr [ESP + 0x2c]
MOV ESI,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0xc]
XOR EAX,EAX
MOV EDX,dword ptr [ESI + 0x38]
TEST EDX,EDX
SETNZ AL
XOR EDX,EDX
NEG EAX
MOV dword ptr [EBX + 0x3c],EAX
MOVZX EAX,byte ptr [ESP + 0xac]
ADC EDX,0x0
NEG EDX
SUB ESP,0xc
MOV dword ptr [EBX + 0x40],EDX
MOV EDX,ESI
MOV dword ptr [ESP + 0xa0],EAX
PUSH EAX
MOV EAX,dword ptr [EBP]
MOV ECX,dword ptr [ESP + 0x38]
CALL 0x0002a330
MOV dword ptr [ESP + 0x8c],EAX
ADD ESP,0x10
CMP dword ptr [ESP + 0x124],0x5
JZ 0x00092106
MOV EAX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [EAX + 0x8]
TEST ESI,ESI
JZ 0x00092f98
CMP dword ptr [ESP + 0x7c],0x1
MOV dword ptr [ESP + 0x20],0x0
SETG DL
CMP byte ptr [ESP + 0xac],0x0
SETNZ AL
OR EDX,EAX
MOVZX EAX,byte ptr [ESP + 0x30]
MOV byte ptr [ESP + 0x38],DL
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x00091b16
MOV EBX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x68]
MOV ESI,dword ptr [ESI + 0x14]
MOV dword ptr [EDX + EBX*0x4],EAX
ADD EBX,0x1
TEST ESI,ESI
MOV dword ptr [ESP + 0x20],EBX
JZ 0x00091c88
CMP dword ptr [ESP + 0x3c],ESI
JZ 0x00091b43
CMP byte ptr [ESP + 0x38],0x0
JNZ 0x00091b43
MOV EAX,dword ptr [ESI + 0x24]
TEST EAX,EAX
JZ 0x00092020
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x00028fd0
TEST EAX,EAX
JZ 0x00092020
MOV EAX,dword ptr [EBP + 0x2c]
MOVZX EDX,word ptr [ESI + 0x34]
ADD EAX,0x1
ADD EDX,EAX
MOV dword ptr [EBP + 0x2c],EDX
TEST EAX,EAX
JNZ 0x00091af9
MOV EAX,dword ptr [ESP + 0x6c]
MOV EBX,dword ptr [ESP + 0x20]
MOV byte ptr [EAX + EBX*0x1 + 0x1],0x0
XOR EAX,EAX
JMP 0x00091af9
ADD EBP,0x1
ADD dword ptr [ESP + 0x20],0x14
CMP EBP,dword ptr [ESP + 0x2c]
JNZ 0x000918f0
MOV ECX,dword ptr [ESP + 0x3c]
TEST ECX,ECX
JNZ 0x00092075
MOV EAX,EBX
CALL 0x00029a00
TEST EAX,EAX
JZ 0x00092075
MOV EAX,dword ptr [ESP + 0x44]
MOV ESI,dword ptr [ESP + 0x58]
MOV EBP,0xffffffff
MOV byte ptr [ESP + 0x30],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x64],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + ESI*0x1]
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x70],ESI
LEA ESI,[EDI + 0xfffcbfaa]
JMP 0x0009197f
MOV EAX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x78]
CALL 0x0003c9d0
TEST EAX,EAX
JZ 0x000918c4
MOV EAX,dword ptr [ESP + 0xd8]
TEST EAX,EAX
JZ 0x00091c0c
MOV EDX,dword ptr [ESP + 0xd4]
MOV dword ptr [ESP + 0xd8],0x0
MOV dword ptr [EAX + 0xf4],EDX
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x00024720
JMP 0x00091598
TEST AL,0x60
JNZ 0x000923f9
CMP dword ptr [ESP + 0x2c],EBP
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX + EBP*0x4],EDX
JG 0x00091971
JMP 0x00091b82
MOV EAX,dword ptr [ESP + 0x44]
MOV byte ptr [ESP + 0x30],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x64],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x70],EAX
JMP 0x00091c26
TEST EAX,EAX
MOV dword ptr [ESP + 0x3c],0x0
JNZ 0x00091707
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x8c],0x0
XOR ESI,ESI
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,0x2
JMP 0x00091749
LEA EAX,[EDX + EBX*0x4]
MOV dword ptr [ESP + 0x84],EAX
MOV EAX,dword ptr [EBP + 0x2c]
MOV ESI,dword ptr [ESP + 0x84]
ADD EAX,0x1
MOV dword ptr [EBP + 0x2c],EAX
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0xd0]
TEST EAX,EAX
JZ 0x00091cc7
PUSH EAX
PUSH dword ptr [ESP + 0x84]
MOV EBX,EDI
PUSH 0x1
PUSH dword ptr [ESP + 0x78]
CALL 0x000168b0
ADD ESP,0x10
CMP byte ptr [EBP + 0x12],0x0
JNZ 0x00091cd8
MOV EAX,dword ptr [ESP + 0x34]
OR byte ptr [EAX + 0x8e],0x10
MOV EBX,dword ptr [ESP + 0x50]
MOV ESI,dword ptr [ESP + 0x7c]
MOV ECX,dword ptr [ESP + 0x48]
TEST EBX,EBX
SETNZ byte ptr [ESP + 0x2c]
TEST ESI,ESI
MOVZX EAX,byte ptr [ESP + 0x2c]
SETNZ byte ptr [ESP + 0xad]
MOVZX EBX,byte ptr [ESP + 0xad]
MOV EDX,EAX
MOV EAX,EBP
OR EDX,EBX
MOVZX EDX,DL
CALL 0x0006dd90
MOV ESI,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESI + 0x38]
TEST EAX,EAX
MOV dword ptr [ESP + 0xa8],EAX
JNZ 0x000920d0
MOV ECX,dword ptr [ESP + 0x84]
CMP byte ptr [ESP + 0xac],0x0
MOVZX EBX,byte ptr [ESP + 0x2c]
MOVSX ESI,word ptr [ESI + 0x2a]
MOV ECX,dword ptr [ECX]
MOV dword ptr [ESP + 0x98],ECX
MOV ECX,dword ptr [EBP + 0x2c]
LEA EDX,[ECX + 0x1]
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [EBP + 0x2c],EDX
SETNZ DL
OR EDX,EBX
OR BL,byte ptr [ESP + 0xae]
JNZ 0x00091d70
CMP byte ptr [ESP + 0xad],0x0
JZ 0x0009211b
LEA EBX,[ECX + 0x2]
CMP byte ptr [ESP + 0xad],0x0
MOV dword ptr [ESP + 0xa8],EBX
MOV EBX,dword ptr [ESP + 0x20]
LEA ECX,[EBX + ESI*0x1]
MOV dword ptr [EBP + 0x2c],ECX
JNZ 0x00091d96
TEST DL,DL
MOV dword ptr [ESP + 0x48],EBX
JZ 0x00091da3
MOV EBX,dword ptr [EBP + 0x2c]
ADD EBX,0x1
MOV dword ptr [ESP + 0x48],EBX
MOV dword ptr [EBP + 0x2c],EBX
MOV EDX,dword ptr [EBP + 0x2c]
LEA EBX,[EDX + 0x1]
ADD EDX,ESI
MOV dword ptr [EBP + 0x2c],EDX
MOV dword ptr [ESP + 0x88],EBX
MOV ECX,dword ptr [ESP + 0x4c]
TEST ECX,ECX
JZ 0x00092146
MOV ESI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EBP + 0xf4]
MOV byte ptr [ESP + 0xaf],0x0
MOV EDX,dword ptr [ESI]
MOV dword ptr [ESP + 0xd8],EBP
MOV dword ptr [ESP + 0xd4],ECX
MOV dword ptr [EBP + 0xf4],EDX
MOV EDX,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JNZ 0x00091e31
MOV ECX,dword ptr [ESI + 0x48]
PUSH EAX
MOV EDX,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x48]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x20]
CALL 0x00083b40
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[ESP + 0xdc]
CALL 0x0003c9d0
TEST EAX,EAX
JNZ 0x00091be9
MOV EAX,dword ptr [ESP + 0x18]
MOV byte ptr [ESP + 0xaf],0x1
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
MOV dword ptr [ESP + 0xb0],EAX
JNZ 0x0009215e
MOV EAX,dword ptr [EBP + 0x38]
MOV dword ptr [ESP + 0x80],0x0
SUB EAX,0x1
MOV dword ptr [ESP + 0x74],EAX
MOV dword ptr [EBP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x8]
TEST byte ptr [EAX + 0x20],0x1
JZ 0x00091e7a
CMP dword ptr [EBP + 0x78],0x0
MOV EAX,dword ptr [ESP + 0xb0]
MOV dword ptr [ESP + 0x80],EAX
JZ 0x00092fa8
MOV EBX,dword ptr [ESP + 0x1c]
TEST EBX,EBX
JNZ 0x00091e90
MOV EAX,dword ptr [ESP + 0x18]
TEST byte ptr [EAX + 0x24],0x80
JZ 0x00092ff2
MOV EAX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
JZ 0x0009374e
MOVZX EAX,word ptr [EAX + 0x32]
MOV word ptr [ESP + 0x78],AX
MOVSX EBX,word ptr [ESP + 0x78]
MOV EAX,dword ptr [EBP + 0x2c]
LEA ESI,[EAX + 0x1]
MOV dword ptr [ESP + 0x58],EBX
ADD EAX,EBX
MOV dword ptr [ESP + 0x54],EBX
MOV EBX,dword ptr [ESP + 0x1c]
CMP dword ptr [ESP + 0x24],0x0
LEA EAX,[EBX + EAX*0x1 + 0x1]
MOV dword ptr [ESP + 0x90],EAX
MOV dword ptr [EBP + 0x2c],EAX
JZ 0x00093655
CMP dword ptr [ESP + 0x1c],0x0
JNZ 0x00092414
PUSH 0x10
PUSH dword ptr [ESP + 0x78]
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
CALL 0x00075fd0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0xa0],0x0
MOV dword ptr [ESP + 0x38],0x1
MOV dword ptr [ESP + 0x9c],0x0
MOV EAX,dword ptr [EAX + 0x24]
TEST AL,0x80
JZ 0x0009361d
MOVSX EAX,word ptr [ESP + 0x78]
TEST EAX,EAX
MOV dword ptr [ESP + 0x54],EAX
MOV dword ptr [ESP + 0x58],EAX
JLE 0x00091fbd
MOV EBX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0xb4],ESI
MOV dword ptr [ESP + 0x84],0x0
MOV EAX,EBX
ADD EAX,EBX
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0xbc],EAX
SUB ESP,0x8
PUSH dword ptr [ESP + 0xbc]
MOV EAX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x90]
MOV EAX,dword ptr [EAX + 0x4]
MOVSX EAX,word ptr [EAX + EDX*0x1]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x00077cb0
ADD dword ptr [ESP + 0x94],0x2
ADD dword ptr [ESP + 0xc4],0x1
MOV EAX,dword ptr [ESP + 0x94]
ADD ESP,0x10
CMP dword ptr [ESP + 0xbc],EAX
JNZ 0x00091f68
MOV dword ptr [ESP + 0x20],EBX
CMP dword ptr [ESP + 0x38],0x0
JZ 0x00092c5d
CMP dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x84],ESI
JZ 0x0009244d
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x2c]
LEA EDX,[EAX + 0x64]
MOV EAX,dword ptr [EAX]
CALL 0x0002b350
MOV dword ptr [ESP + 0x84],ESI
JMP 0x0009244d
MOV EAX,EBP
CALL 0x000318c0
TEST EAX,EAX
MOV dword ptr [ESP + 0x34],EAX
JZ 0x00091be9
JMP 0x00091862
XOR EBX,EBX
CMP word ptr [ESI + 0x32],0x0
JNZ 0x0009204f
JMP 0x00091b56
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EDX + EAX*0x4]
NOT EAX
SHR EAX,0x1f
TEST EAX,EAX
JNZ 0x00092096
MOVZX EAX,word ptr [ESI + 0x32]
ADD EBX,0x1
CMP EBX,EAX
JGE 0x00091b56
MOV EAX,dword ptr [ESI + 0x4]
MOVSX EAX,word ptr [EAX + EBX*0x2]
TEST AX,AX
JNS 0x00092030
MOV EAX,EBX
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
SHL EAX,0x4
ADD EAX,dword ptr [ESI + 0x28]
MOV EAX,dword ptr [EAX + 0x4]
CALL 0x00028fd0
JMP 0x0009203c
MOV EBP,dword ptr [ESP + 0x54]
LEA EAX,[EDI + 0xfffccf07]
SUB ESP,0x4
PUSH EBX
PUSH EAX
PUSH EBP
CALL 0x0003c160
MOV byte ptr [EBP + 0x11],0x1
ADD ESP,0x10
JMP 0x00091be9
MOV EAX,dword ptr [EBP + 0x2c]
MOVZX EDX,word ptr [ESI + 0x34]
ADD EAX,0x1
ADD EDX,EAX
CMP dword ptr [ESP + 0x124],0xb
MOV dword ptr [EBP + 0x2c],EDX
JNZ 0x00091b52
CMP byte ptr [ESI + 0x36],0x5
JNZ 0x00091b52
MOV dword ptr [ESP + 0xd0],0x1
JMP 0x00091b52
MOV dword ptr [ESP + 0x98],0x0
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0x88],0x0
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x20],0x0
JMP 0x00091db5
MOV dword ptr [ESP + 0xd0],0x1
JMP 0x00091abe
CALL 0x000a9ea0
TEST DL,DL
JNZ 0x00091d96
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x48],EBX
JMP 0x00091da3
MOV dword ptr [ESP + 0x3c],EAX
JMP 0x00091707
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x00091c69
CMP dword ptr [ESP + 0x1c],0x0
JZ 0x00091e0a
MOV byte ptr [ESP + 0xaf],0x0
JMP 0x00091e31
MOV EAX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [EBP]
MOV ESI,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x40]
MOV dword ptr [ESP + 0x30],EBX
TEST EAX,EAX
MOV dword ptr [ESP + 0x38],EAX
JZ 0x0009218e
CMP dword ptr [EAX],EBX
JZ 0x0009218e
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JZ 0x0009218a
MOV EBX,dword ptr [ESP + 0x30]
CMP EBX,dword ptr [EAX]
JNZ 0x0009217b
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EBP + 0x28]
MOVSX EAX,word ptr [EAX + 0x2a]
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x48],EAX
LEA EBX,[EAX + 0x2]
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x3c],EBX
MOV EDX,dword ptr [EAX + 0x30]
LEA EAX,[ECX + 0x1]
MOV dword ptr [EBP + 0x28],EAX
MOV dword ptr [ESP + 0x20],EDX
PUSH EAX
MOV EDX,0x64
PUSH EAX
PUSH 0x0
MOV EAX,ESI
PUSH EBX
CALL 0x000315c0
MOV EDX,dword ptr [EBP + 0x2c]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,EBX
LEA ECX,[EDX + 0x1]
MOV dword ptr [ESP + 0x50],EDX
ADD EAX,EDX
MOV dword ptr [EBP + 0x2c],EAX
MOV dword ptr [ESP + 0x3c],ECX
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0xc]
CMP dword ptr [EBX],0x1
JLE 0x00092a00
MOV EDX,dword ptr [ESP + 0x64]
TEST EDX,EDX
JZ 0x000929cd
SUB ESP,0xc
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x00052c60
ADD ESP,0x10
MOV ECX,EAX
MOV EAX,dword ptr [EBP]
XOR EDX,EDX
CALL 0x000449c0
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x18]
CMP word ptr [EAX + 0x2a],0x0
JLE 0x00092287
XOR EAX,EAX
MOV dword ptr [ESP + 0x20],ESI
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + ESI*0x4]
TEST EAX,EAX
JS 0x00092995
MOV EDX,dword ptr [ESP + 0x10]
SHL EAX,0x4
MOV EAX,dword ptr [EDX + EAX*0x1 + 0x4]
TEST EAX,EAX
JZ 0x00092266
SUB ESP,0xc
MOV EDX,EAX
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x00052c60
ADD ESP,0x10
MOV ECX,EAX
MOV EAX,dword ptr [EBP]
MOV EDX,EBX
ADD ESI,0x1
CALL 0x000449c0
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EAX + 0x2a]
CMP ESI,EAX
JL 0x00092233
MOV ESI,dword ptr [ESP + 0x20]
PUSH EAX
PUSH dword ptr [ESP + 0x18]
XOR ECX,ECX
PUSH dword ptr [ESP + 0x14]
PUSH EBX
MOV EAX,EBP
MOV EDX,dword ptr [ESP + 0x2c]
CALL 0x0001addf
ADD ESP,0x10
TEST EBX,EBX
MOV dword ptr [ESP + 0x34],0x0
JZ 0x000922b8
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,EBX
CALL 0x000433a0
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX],0x1
JZ 0x000929f2
PUSH EAX
PUSH EAX
MOV EDX,0x25
PUSH 0x0
PUSH 0x0
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x2c]
CALL 0x000315c0
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0x10
CMP dword ptr [ESP + 0x3c],0x0
JLE 0x0009231d
MOV EAX,dword ptr [ESP + 0x48]
XOR EBX,EBX
ADD EAX,0x2
MOV dword ptr [ESP + 0x20],EAX
SUB ESP,0x8
MOV EDX,0x59
MOV EAX,dword ptr [ESP + 0x34]
ADD EAX,EBX
PUSH EAX
PUSH EBX
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x2c]
ADD EBX,0x1
CALL 0x000315c0
ADD ESP,0x10
CMP EBX,dword ptr [ESP + 0x20]
JNZ 0x000922f6
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,EBP
CALL 0x0002e240
PUSH EAX
PUSH EAX
XOR ECX,ECX
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x48]
MOV EDX,0xa
MOV EAX,ESI
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x48]
MOV EDX,EAX
MOV EAX,ESI
MOV dword ptr [ESP],0xfffffff4
CALL 0x00032090
ADD ESP,0x10
CMP dword ptr [ESP + 0x124],0xb
JZ 0x000929e8
MOVZX EAX,word ptr [ESP + 0x124]
MOV EDX,dword ptr [ESI + 0x68]
TEST EDX,EDX
JLE 0x0009237e
IMUL EDX,EDX,0x14
ADD EDX,dword ptr [ESI + 0x64]
MOV word ptr [EDX + -0x12],AX
MOV EAX,dword ptr [EBP + 0x74]
TEST EAX,EAX
CMOVZ EAX,EBP
CMP dword ptr [ESP + 0x74],0x0
MOV byte ptr [EAX + 0x15],0x1
JNZ 0x000929bf
PUSH EBP
PUSH EBP
MOV EDX,0x5
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x30]
LEA EAX,[EBX + 0x1]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,ESI
CALL 0x000315c0
ADD ESP,0x10
TEST EBX,EBX
MOV EDX,dword ptr [ESI + 0x68]
JNS 0x000923c2
LEA EAX,[EDX + -0x1]
MOV dword ptr [ESP + 0x24],EAX
MOV ECX,dword ptr [ESI]
LEA EAX,[EDI + 0x15d0]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000923d8
IMUL EAX,dword ptr [ESP + 0x24],0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV dword ptr [EAX + 0x8],EDX
PUSH EDI
MOV EDX,0x74
PUSH EDI
PUSH 0x0
MOV EAX,ESI
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x2c]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00091be9
MOV EBP,dword ptr [ESP + 0x54]
PUSH EAX
LEA EAX,[EDI + 0xfffcfb98]
PUSH ESI
PUSH EAX
PUSH EBP
CALL 0x0003c160
ADD ESP,0x10
JMP 0x00091be9
MOV dword ptr [ESP + 0x44],0x0
MOV EAX,dword ptr [EBP + 0x74]
MOV dword ptr [ESP + 0x84],ESI
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0xa0],0x1
MOV dword ptr [ESP + 0x9c],0x0
TEST EAX,EAX
CMOVZ EAX,EBP
MOV byte ptr [EAX + 0x14],0x1
MOV EBX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x90],0x0
TEST EBX,EBX
MOV dword ptr [ESP + 0x2c],EAX
JZ 0x0009314f
CMP byte ptr [ESP + 0x30],0x0
JZ 0x000924ae
CMP dword ptr [ESP + 0x1c],0x0
JNZ 0x0009342d
CMP dword ptr [EBP + 0x8],0x0
JZ 0x00092493
MOV ECX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x64]
MOV EAX,EBP
CALL 0x00077ad0
PUSH EBX
PUSH EBX
MOV EDX,0xf
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
CMP byte ptr [ESP + 0xae],0x0
JNZ 0x000935b9
CMP byte ptr [ESP + 0xad],0x0
JNZ 0x000935b9
CMP dword ptr [ESP + 0x50],0x0
MOV dword ptr [ESP + 0x54],0x0
JZ 0x000925cc
PUSH dword ptr [ESP + 0x124]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EAX,EBP
PUSH EBX
PUSH 0x3
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x60]
CALL 0x00096110
OR EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x64],EAX
ADD ESP,0x10
CMP word ptr [EBX + 0x2a],0x0
MOV EAX,EBX
JLE 0x000925a1
MOV dword ptr [ESP + 0x60],ESI
XOR EBX,EBX
MOV ESI,EAX
JMP 0x00092540
SUB ESP,0x8
MOV EDX,ESI
PUSH EAX
PUSH EBX
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x00077cb0
ADD ESP,0x10
MOVSX EAX,word ptr [ESI + 0x2a]
ADD EBX,0x1
CMP EBX,EAX
JGE 0x0009259d
TEST byte ptr [ESI + 0x24],0x20
MOV EAX,EBX
JZ 0x00092551
MOV EDX,EBX
MOV EAX,ESI
CALL 0x0002a110
CWDE
ADD EAX,dword ptr [ESP + 0xa8]
CMP dword ptr [ESP + 0x54],-0x1
JZ 0x0009251e
CMP EBX,0x1f
JG 0x00092574
MOV EDX,0x1
MOV ECX,EBX
SHL EDX,CL
TEST dword ptr [ESP + 0x54],EDX
JNZ 0x0009251e
MOV ECX,dword ptr [ESI + 0x4]
LEA EDX,[EBX + EBX*0x4]
LEA EDX,[ECX + EDX*0x4]
TEST byte ptr [EDX + 0x10],0x1
JNZ 0x0009251e
PUSH EDX
PUSH EDX
XOR ECX,ECX
PUSH 0x0
PUSH EAX
MOV EDX,0x48
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00092535
MOV ESI,dword ptr [ESP + 0x60]
TEST byte ptr [ESP + 0x30],0x1
JNZ 0x000925cc
CMP dword ptr [ESP + 0x3c],0x0
JNZ 0x000925cc
PUSH EAX
PUSH EAX
MOV EDX,0x4d
PUSH 0x0
PUSH dword ptr [ESP + 0x54]
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
PUSH dword ptr [ESP + 0x124]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EAX,EBP
PUSH EBX
PUSH 0x1
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x60]
CALL 0x00096110
MOV dword ptr [ESP + 0x64],EAX
MOVSX EAX,word ptr [EBX + 0x2a]
ADD ESP,0x10
MOV ECX,EBX
TEST EAX,EAX
MOV EDX,EAX
JLE 0x000926cc
MOV EBX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x6c],ESI
MOV ESI,ECX
MOV dword ptr [ESP + 0x30],EBP
MOV dword ptr [ESP + 0x60],EBX
MOVSX EBX,word ptr [ESP + 0x78]
MOV EBP,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x64],EBX
XOR EBX,EBX
JMP 0x00092642
AND ECX,0x20
CMP CX,0x1
ADC EBP,-0x1
ADD EBX,0x1
ADD EBP,0x1
MOV EDX,EAX
CMP EBX,EAX
JGE 0x000926c4
MOVSX ECX,word ptr [ESI + 0x28]
CMP ECX,EBX
JZ 0x000926a2
LEA ECX,[EBX + EBX*0x4]
SHL ECX,0x2
ADD ECX,dword ptr [ESI + 0x4]
MOVZX ECX,word ptr [ECX + 0x10]
TEST CL,0x60
JNZ 0x00092628
MOV ECX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ECX + EBX*0x4]
TEST ECX,ECX
JS 0x0009294f
CMP dword ptr [ESP + 0x1c],0x0
JZ 0x00092922
MOV EAX,dword ptr [ESP + 0x4c]
TEST EAX,EAX
CMOVZ EDX,dword ptr [ESP + 0x64]
PUSH EAX
PUSH EAX
PUSH EBP
ADD ECX,EDX
MOV EDX,0x59
PUSH ECX
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOVSX EAX,word ptr [ESI + 0x2a]
JMP 0x00092632
SUB ESP,0x8
XOR ECX,ECX
MOV EDX,0x48
PUSH 0x0
PUSH EBP
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOVSX EAX,word ptr [ESI + 0x2a]
JMP 0x00092632
MOV ESI,dword ptr [ESP + 0x6c]
MOV EBP,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x18]
TEST byte ptr [EAX + 0x24],0x60
JZ 0x000926e6
MOV EDX,dword ptr [ESP + 0x88]
MOV ECX,EAX
MOV EAX,EBP
CALL 0x00018629
TEST byte ptr [ESP + 0xcc],0x1
JNZ 0x00092825
CMP dword ptr [ESP + 0x4c],0x0
JZ 0x00092d63
MOV ESI,dword ptr [ESP + 0x80]
TEST ESI,ESI
JZ 0x00092728
PUSH EBX
PUSH EBX
MOV EDX,0x52
PUSH 0x0
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x90]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
SUB ESP,0x8
MOV EAX,EBP
MOV ECX,0x7f
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x130]
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x2c]
PUSH 0x2
PUSH dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x70]
CALL 0x00096280
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x38]
CMP EAX,0x1
JZ 0x0009279a
CMP EAX,0x2
JZ 0x00092d2b
CMP dword ptr [ESP + 0x3c],0x0
JNZ 0x00092cf9
CMP dword ptr [ESP + 0x1c],0x0
JNZ 0x00092cf9
PUSH EDX
PUSH EDX
XOR ECX,ECX
PUSH 0x0
PUSH dword ptr [ESP + 0x38]
MOV EDX,0xb
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00031430
CMP byte ptr [EBP + 0x12],0x0
JNZ 0x000927be
CMP dword ptr [EBP + 0x78],0x0
JNZ 0x000927be
CMP dword ptr [ESP + 0x24],0x0
JZ 0x00092ecd
MOV EAX,dword ptr [ESP + 0x80]
TEST EAX,EAX
JZ 0x00091be9
PUSH EAX
PUSH EAX
MOV EDX,0x50
PUSH 0x0
PUSH 0x1
MOV ESI,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x90]
MOV EAX,ESI
CALL 0x000315c0
MOV EAX,ESI
MOV EDX,0x1
CALL 0x0002ee80
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x00091be9
PUSH EAX
PUSH EAX
LEA EAX,[EDI + 0xfffccf1a]
PUSH 0x0
XOR ECX,ECX
XOR EDX,EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x0004ab40
ADD ESP,0x10
JMP 0x00091be9
MOV EBX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x88]
MOV EDX,EBX
CALL 0x00032360
PUSH EAX
PUSH EAX
MOV ECX,0x7f
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x130]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x30]
PUSH EBX
PUSH 0x1
PUSH dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x70]
CALL 0x00096280
ADD ESP,0x20
CMP dword ptr [ESP + 0x4c],0x0
JNZ 0x000926ff
CMP dword ptr [ESP + 0x3c],0x0
JZ 0x000935ed
PUSH EAX
PUSH dword ptr [ESP + 0x5c]
MOV EDX,0x1d
PUSH ESI
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000316b0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x88]
MOV EBX,dword ptr [ESP + 0xb0]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EAX + 0x2a]
JMP 0x000928cc
AND DL,0x20
SETNZ DL
MOVZX EDX,DL
SUB dword ptr [ESP + 0x30],EDX
ADD dword ptr [ESP + 0x30],0x1
ADD EBX,0x1
CMP EBX,EAX
JGE 0x00092d49
IMUL EDX,EBX,0x14
MOV ECX,dword ptr [ESP + 0x18]
ADD EDX,dword ptr [ECX + 0x4]
MOVZX EDX,word ptr [EDX + 0x10]
TEST DL,0x60
JNZ 0x000928b7
MOV EDX,dword ptr [ESP + 0x28]
CMP dword ptr [EDX + EBX*0x4],0x0
JNS 0x000928c4
MOV EDX,dword ptr [ESP + 0x18]
MOVSX EDX,word ptr [EDX + 0x28]
CMP EBX,EDX
JZ 0x000928c4
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x38]
PUSH EBX
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x00077cb0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EDX + 0x2a]
JMP 0x000928c4
MOV EDX,dword ptr [ESP + 0x10]
SHL ECX,0x4
MOV EDX,dword ptr [EDX + ECX*0x1 + 0x4]
MOV ECX,dword ptr [ESP + 0x30]
CMP dword ptr [ECX + 0x8],0x0
JZ 0x00092632
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,EBP
CALL 0x00077ad0
MOVSX EAX,word ptr [ESI + 0x2a]
JMP 0x00092632
TEST byte ptr [ESP + 0xcc],0x1
JZ 0x0009296b
CMP EBX,0x1f
JG 0x0009296b
MOV EAX,dword ptr [ESP + 0x54]
BT EAX,EBX
JNC 0x000926a2
PUSH EAX
PUSH EAX
MOV EDX,ESI
PUSH EBP
PUSH EBX
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x50]
CALL 0x00077cb0
ADD ESP,0x10
MOV dword ptr [ESP + 0xa0],0x0
MOVSX EAX,word ptr [ESI + 0x2a]
JMP 0x00092632
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x4b
PUSH 0x0
MOV EAX,EBP
CALL 0x00047ba0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00092266
LEA EDX,[ESI + 0x1]
MOV word ptr [EAX + 0x20],DX
JMP 0x00092266
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00043f00
JMP 0x00091be9
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x4b
PUSH 0x0
MOV EAX,EBP
CALL 0x00047ba0
ADD ESP,0x10
JMP 0x00092212
MOV EAX,0x2
JMP 0x0009236d
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00043f00
JMP 0x000922c5
LEA EBX,[EAX + 0x1]
ADD EAX,0x2
MOV dword ptr [ESP + 0x44],EAX
MOV dword ptr [EBP + 0x2c],EAX
MOV EAX,EBP
MOV dword ptr [ESP + 0x30],EBX
PUSH 0x0
PUSH 0x4
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x0007d3c0
MOV dword ptr [ESP + 0x44],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00091be9
MOV EDX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x18]
XOR EBX,EBX
ADD EDX,0x3
MOVSX EAX,word ptr [EAX + 0x2a]
MOV dword ptr [ESP + 0x4c],EDX
JMP 0x00092a82
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EDX,dword ptr [EDX + EBX*0x4]
ADD ECX,EBX
TEST EDX,EDX
JS 0x00092ab7
CMP dword ptr [EBP + 0x8],0x0
JZ 0x00092a7f
MOV EAX,dword ptr [ESP + 0x10]
SHL EDX,0x4
MOV EDX,dword ptr [EAX + EDX*0x1 + 0x4]
MOV EAX,EBP
CALL 0x00077ad0
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EAX + 0x2a]
ADD EBX,0x1
CMP EBX,EAX
JL 0x00092a4e
MOV EAX,dword ptr [ESP + 0x18]
TEST byte ptr [EAX + 0x24],0x80
JZ 0x00092b97
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + 0x8]
JMP 0x00092aac
MOVZX EDX,byte ptr [EAX + 0x37]
AND EDX,0x3
CMP DL,0x2
JZ 0x00092aeb
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JNZ 0x00092a9d
MOV EAX,[0x00000004]
UD2
PUSH EAX
PUSH EAX
MOV EDX,0xa6
PUSH ECX
PUSH EBX
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000315c0
MOV EAX,dword ptr [ESI + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x00092ae1
IMUL EAX,EAX,0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV word ptr [EAX + -0x12],0x1
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EAX,word ptr [EAX + 0x2a]
JMP 0x00092a7f
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,0xa6
MOVSX EBX,word ptr [EAX]
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x34]
MOV EAX,ESI
PUSH EBX
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000315c0
MOV EAX,dword ptr [ESP + 0x50]
POP EDX
MOV EDX,0x4e
LEA ECX,[EAX + EBX*0x1 + 0x3]
ADD EAX,0x2
POP EBX
PUSH 0x0
PUSH EAX
MOV EAX,ESI
CALL 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EBX,byte ptr [EAX + 0x2e]
TEST EBX,EBX
JNZ 0x00092bdb
MOV EAX,dword ptr [EBP + 0x74]
MOV EDX,0x5b
TEST EAX,EAX
CMOVZ EAX,EBP
MOV byte ptr [EAX + 0x14],0x1
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x38]
MOV EAX,ESI
PUSH dword ptr [ESP + 0x48]
MOV ECX,dword ptr [ESP + 0x3c]
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x50]
MOV EDX,0x78
MOV EBX,dword ptr [ESP + 0x2c]
MOV EAX,ESI
MOV ECX,EBX
CALL 0x000315c0
POP ECX
POP EAX
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x3c]
MOV ECX,EBX
MOV EDX,0x79
MOV EAX,ESI
CALL 0x000315c0
ADD ESP,0x10
JMP 0x000922b8
PUSH EAX
PUSH EAX
MOV EDX,0x7f
PUSH 0x0
PUSH dword ptr [ESP + 0x38]
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x64]
ADD ECX,0x2
TEST EDX,EDX
JZ 0x00092cdc
CMP dword ptr [EBP + 0x8],0x0
JZ 0x00092b27
MOV EAX,EBP
CALL 0x00077ad0
JMP 0x00092b27
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESI]
LEA EDX,[ESI + 0x64]
CALL 0x0002b350
PUSH EAX
PUSH EAX
MOV EDX,0x74
PUSH 0x0
PUSH 0x0
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x74],EBX
JMP 0x0009231d
MOV EBX,dword ptr [ESP + 0xa4]
TEST EBX,EBX
JS 0x00091f2a
CMP dword ptr [ESP + 0x40],EBX
JZ 0x00091f2a
SUB EBX,dword ptr [ESP + 0x60]
MOV ECX,EBX
MOV EBX,dword ptr [ESP + 0x6c]
CMP byte ptr [EBX + ECX*0x1],0x0
JZ 0x00091f2a
TEST EDX,EDX
JZ 0x000931d2
MOVSX EAX,word ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x38],0x0
TEST EAX,EAX
MOV dword ptr [ESP + 0x54],EAX
MOV dword ptr [ESP + 0x58],EAX
JG 0x00091f43
MOV EDX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0002e150
MOV dword ptr [ESP + 0x2c],EAX
PUSH EAX
MOV ECX,ESI
PUSH EAX
MOV EBX,dword ptr [ESP + 0x98]
MOV EDX,0x5b
PUSH EBX
PUSH dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
POP EDX
MOV EDX,EAX
PUSH dword ptr [ESP + 0x60]
MOV ECX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x00032090
ADD ESP,0xc
MOV EDX,0x82
PUSH dword ptr [ESP + 0x58]
PUSH ESI
PUSH EBX
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000316b0
ADD ESP,0x10
MOV dword ptr [ESP + 0x84],ESI
MOV dword ptr [ESP + 0x58],0x0
MOV ESI,EBX
MOV dword ptr [ESP + 0x38],0x0
JMP 0x0009244d
PUSH EAX
PUSH EAX
MOV EDX,0x7f
PUSH 0x0
PUSH ECX
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00092b27
MOV ESI,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,ESI
CALL 0x00031430
PUSH ECX
PUSH ECX
MOV EDX,0x5
PUSH 0x0
PUSH dword ptr [ESP + 0x9c]
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x54]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x0009279a
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x2c]
CALL 0x00031430
MOV EAX,dword ptr [ESP + 0x9c]
CALL 0x00043f00
JMP 0x0009279a
MOV EAX,dword ptr [ESP + 0x18]
TEST byte ptr [EAX + 0x24],0x60
JZ 0x00092d63
MOV EDX,dword ptr [ESP + 0x88]
MOV ECX,EAX
MOV EAX,EBP
CALL 0x00018629
PUSH EBX
PUSH EBX
PUSH 0x0
PUSH dword ptr [ESP + 0x34]
LEA EAX,[ESP + 0xe0]
PUSH EAX
PUSH dword ptr [ESP + 0x40]
MOVZX EAX,byte ptr [ESP + 0x13c]
PUSH EAX
PUSH dword ptr [ESP + 0xb0]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x84]
PUSH dword ptr [ESP + 0x6c]
MOV ECX,dword ptr [ESP + 0x98]
MOV EDX,dword ptr [ESP + 0x48]
CALL 0x0001b7d8
ADD ESP,0x30
CMP byte ptr [ESP + 0xac],0x0
SETNZ AL
CMP dword ptr [ESP + 0xd0],0x0
MOV EBX,EAX
JNZ 0x00092dca
TEST AL,AL
JZ 0x00092df4
CMP dword ptr [ESP + 0x3c],0x0
JZ 0x00092ea9
PUSH ECX
PUSH dword ptr [ESP + 0x5c]
MOV EDX,0x1d
PUSH ESI
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000316b0
ADD ESP,0x10
CMP dword ptr [ESP + 0x7c],0x0
JZ 0x00092e1b
PUSH EAX
PUSH dword ptr [ESP + 0x98]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x30]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0001b07a
ADD ESP,0x10
PUSH EAX
PUSH -0x1
MOV EAX,EBP
PUSH dword ptr [ESP + 0x70]
PUSH dword ptr [ESP + 0x68]
MOV ECX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0001a8f2
ADD ESP,0x10
CMP dword ptr [ESP + 0xa0],0x0
JZ 0x00092e5d
PUSH EAX
PUSH EAX
MOV EDX,0x87
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
CMP dword ptr [ESP + 0x7c],0x1
JG 0x00092f6e
TEST BL,BL
JNZ 0x00092f6e
CMP dword ptr [ESP + 0x7c],0x0
JNZ 0x00092eed
CMP dword ptr [ESP + 0x38],0x2
JZ 0x00092ee3
PUSH ECX
PUSH ECX
PUSH 0x0
PUSH 0x0
PUSH 0x4
PUSH dword ptr [ESP + 0x7c]
PUSH dword ptr [ESP + 0x60]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x78]
MOV ECX,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00016ec8
ADD ESP,0x20
JMP 0x000926ff
PUSH EDX
PUSH EDX
MOV EDX,0x20
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00092df4
CMP dword ptr [EBP + 0x70],0x0
JZ 0x000927be
MOV EAX,EBP
CALL 0x00017af1
JMP 0x000927be
PUSH EDX
PUSH EDX
PUSH 0x0
PUSH 0x0
PUSH 0x6
JMP 0x00092e86
PUSH EAX
PUSH dword ptr [ESP + 0x98]
XOR ECX,ECX
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x54]
MOV EAX,EBP
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0001b07a
ADD ESP,0x10
CMP dword ptr [ESP + 0x38],0x2
JZ 0x00092f8e
PUSH EBX
PUSH EBX
PUSH 0x0
PUSH 0x0
PUSH 0x4
PUSH dword ptr [ESP + 0x7c]
PUSH dword ptr [ESP + 0x60]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x78]
MOV ECX,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00016ec8
MOV EAX,dword ptr [EBP]
ADD ESP,0x20
TEST byte ptr [EAX + 0x1d],0x40
JZ 0x000926ff
PUSH EAX
PUSH dword ptr [ESP + 0x98]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0001cbe8
ADD ESP,0x10
JMP 0x000926ff
PUSH EAX
PUSH EAX
MOV EDX,0x7a
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00092e70
PUSH EAX
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH 0x6
JMP 0x00092f1c
MOV EAX,dword ptr [ESP + 0x68]
MOV dword ptr [ESP + 0x84],EAX
JMP 0x00091c92
CMP byte ptr [EBP + 0x12],0x0
JNZ 0x00092fb5
CMP dword ptr [ESP + 0x24],0x0
JZ 0x00092fc5
MOV dword ptr [ESP + 0x80],0x0
JMP 0x00091e7a
MOV EAX,dword ptr [EBP + 0x2c]
XOR ECX,ECX
MOV EDX,0x45
ADD EAX,0x1
MOV dword ptr [ESP + 0x80],EAX
MOV dword ptr [EBP + 0x2c],EAX
PUSH ESI
PUSH ESI
PUSH 0x0
PUSH EAX
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00091e7a
PUSH ECX
PUSH ECX
MOV EDX,0x48
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0xa4]
XOR ECX,ECX
MOV EAX,dword ptr [ESP + 0x44]
MOV ESI,0x0
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x90],0x0
CMP dword ptr [ESP + 0x24],0x0
JNZ 0x00093611
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x44],0x0
MOV word ptr [ESP + 0x78],0x0
CMP byte ptr [EBP + 0x12],0x0
MOV EAX,0x1004
JNZ 0x00093086
CMP dword ptr [ESP + 0x50],0x0
JNZ 0x000935af
CMP dword ptr [ESP + 0x7c],0x0
JNZ 0x000935af
CMP dword ptr [ESP + 0xd0],0x0
JNZ 0x000935af
CMP byte ptr [ESP + 0xac],0x0
MOV EAX,0x100c
JNZ 0x000935af
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
MOV EAX,EBP
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x0007d3c0
MOV dword ptr [ESP + 0xac],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00091be9
MOV EBX,dword ptr [EAX + 0x14]
MOV dword ptr [ESP + 0xb8],EBX
MOV EBX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0xa4],EBX
MOVZX EBX,byte ptr [EAX + 0x2e]
MOVZX EAX,byte ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x38],EBX
AND EAX,0x1
SUB EBX,0x1
MOV dword ptr [ESP + 0xa0],EAX
JZ 0x00093586
MOV EAX,dword ptr [EBP + 0x74]
TEST EAX,EAX
CMOVZ EAX,EBP
MOV byte ptr [EAX + 0x14],0x1
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + 0x24]
MOV EDX,EAX
AND EDX,0x80
CMP dword ptr [ESP + 0x38],0x2
JZ 0x00092c0b
TEST EDX,EDX
JNZ 0x00091f32
PUSH EBX
PUSH EBX
MOV EDX,0x7f
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
CMP dword ptr [ESP + 0x38],0x0
JZ 0x000931ef
MOV dword ptr [ESP + 0x84],ESI
MOV ESI,dword ptr [ESP + 0x90]
MOV dword ptr [ESP + 0x58],0x0
CMP dword ptr [ESP + 0x38],0x2
JZ 0x0009316c
CMP byte ptr [ESP + 0xaf],0x0
JZ 0x0009316c
MOV EAX,dword ptr [ESP + 0x9c]
CALL 0x00043f00
CMP dword ptr [ESP + 0x4c],0x0
JZ 0x00093336
CMP dword ptr [ESP + 0x38],0x0
JZ 0x000932c3
CMP dword ptr [ESP + 0x38],0x1
JZ 0x0009322e
MOV EAX,dword ptr [EBP + 0x38]
SUB EAX,0x1
MOV dword ptr [ESP + 0x2c],EAX
MOV dword ptr [EBP + 0x38],EAX
CMP dword ptr [ESP + 0x3c],0x0
MOV ECX,ESI
MOV EDX,0x32
CMOVZ ECX,dword ptr [ESP + 0x20]
PUSH EAX
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x80]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x90],0x0
JMP 0x0009246c
PUSH EAX
PUSH EAX
MOV EDX,0x7f
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x2c]
MOV EBX,dword ptr [ESP + 0x84]
MOV EDX,0x93
ADD EAX,0x1
MOV dword ptr [EBP + 0x2c],EAX
MOV dword ptr [EBX],EAX
PUSH ECX
PUSH ECX
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0xa8]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x38],0x0
JMP 0x00093139
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x0009319a
MOV EAX,dword ptr [ESP + 0x18]
CMP dword ptr [EAX + 0x38],0x0
JNZ 0x000932c3
XOR EBX,EBX
SUB ESP,0xc
MOV ECX,0x61
MOV EAX,EBP
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x80]
PUSH dword ptr [ESP + 0x78]
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00017bea
ADD ESP,0x20
TEST EBX,EBX
JZ 0x000932b8
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [EAX + 0x68]
LEA EAX,[ECX + -0x1]
CMP EAX,EBX
JZ 0x000933cf
TEST EBX,EBX
CMOVNS EAX,EBX
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0x54],EDX
LEA EDX,[EDI + 0x15d0]
MOV dword ptr [ESP + 0x2c],EDX
MOV EDX,dword ptr [ESP + 0x54]
CMP byte ptr [EDX + 0x4d],0x0
JNZ 0x000932b1
IMUL EAX,EAX,0x14
ADD EAX,dword ptr [EBX + 0x64]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EAX + 0x8],ECX
CMP dword ptr [ESP + 0x38],0x0
JNZ 0x00093388
CMP dword ptr [ESP + 0x3c],0x0
JNZ 0x000933db
CMP dword ptr [ESP + 0x1c],0x0
JNZ 0x000933db
PUSH EAX
PUSH EAX
MOV EDX,0x2a
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x80]
MOV EBX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0xa8]
MOV EAX,EBX
CALL 0x000315c0
MOV dword ptr [ESP + 0x3c],EAX
POP EDX
POP ECX
PUSH dword ptr [ESP + 0x28]
PUSH EAX
MOV EDX,0x20
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,EBX
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x90],0x0
CMP byte ptr [ESP + 0x30],0x0
JNZ 0x0009247e
JMP 0x000924ae
CMP dword ptr [ESP + 0x38],0x0
JZ 0x0009323b
MOV EAX,dword ptr [ESP + 0xb8]
TEST EAX,EAX
JS 0x00093358
SUB EAX,dword ptr [ESP + 0x60]
MOV EBX,dword ptr [ESP + 0x6c]
MOV byte ptr [EBX + EAX*0x1],0x0
MOV EAX,dword ptr [ESP + 0xa4]
TEST EAX,EAX
JS 0x0009336f
SUB EAX,dword ptr [ESP + 0x60]
MOV EBX,dword ptr [ESP + 0x6c]
MOV byte ptr [EBX + EAX*0x1],0x0
CMP dword ptr [ESP + 0x38],0x2
JZ 0x000934d3
MOV EAX,dword ptr [ESP + 0x18]
CMP dword ptr [EAX + 0x38],0x0
JZ 0x00093245
MOV EAX,dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0xb8]
CMP EAX,EBX
JZ 0x00093182
MOV EBX,dword ptr [ESP + 0xa4]
CMP EAX,EBX
JZ 0x00093182
MOV ECX,EAX
PUSH EDX
PUSH dword ptr [ESP + 0x5c]
PUSH ESI
PUSH dword ptr [ESP + 0x80]
MOV EDX,0x1d
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000316b0
ADD ESP,0x10
JMP 0x00093182
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [EAX + 0x68],EBX
JMP 0x000932b8
MOV EAX,dword ptr [EBP + 0x38]
MOV EDX,0x25
SUB EAX,0x1
MOV dword ptr [ESP + 0x2c],EAX
MOV dword ptr [EBP + 0x38],EAX
PUSH EAX
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x80]
MOV EBX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,EBX
CALL 0x000315c0
MOV EAX,dword ptr [EBX + 0x68]
MOV dword ptr [ESP + 0xa0],EAX
ADD ESP,0x10
CMP dword ptr [ESP + 0x1c],0x0
JZ 0x00093498
CMP dword ptr [ESP + 0x4c],0x0
JZ 0x00093451
CMP byte ptr [ESP + 0x30],0x0
JZ 0x000924ae
PUSH EAX
PUSH EAX
MOV EDX,0x59
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x7c]
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00092493
CMP dword ptr [ESP + 0x3c],0x0
JZ 0x00093548
MOVSX EAX,word ptr [ESP + 0x78]
XOR EBX,EBX
MOV dword ptr [ESP + 0x54],EAX
CMP EBX,dword ptr [ESP + 0x54]
JGE 0x0009351e
PUSH EAX
PUSH EAX
MOV EDX,0x59
MOV EAX,dword ptr [ESP + 0x8c]
ADD EAX,EBX
PUSH EAX
PUSH EBX
ADD EBX,0x1
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00093467
PUSH EBX
PUSH EBX
MOV EDX,0x7e
PUSH 0x0
PUSH ESI
MOV EBX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,EBX
CALL 0x000315c0
ADD ESP,0xc
MOV EDX,0x1d
MOV EAX,EBX
PUSH 0x0
PUSH ESI
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
CALL 0x000316b0
ADD ESP,0x10
JMP 0x00093326
MOV EAX,dword ptr [ESP + 0xa4]
MOV EBX,dword ptr [ESP + 0x8c]
NOT EAX
SHR EAX,0x1f
SUB EBX,EAX
TEST EBX,EBX
JLE 0x0009337a
PUSH ECX
PUSH ECX
MOV EDX,0x11
PUSH 0x0
PUSH 0x0
XOR ECX,ECX
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x18]
CMP dword ptr [EAX + 0x38],0x0
JNZ 0x0009326e
JMP 0x00093247
PUSH ECX
PUSH dword ptr [ESP + 0x58]
MOV EDX,0x1d
PUSH dword ptr [ESP + 0x8c]
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000316b0
ADD ESP,0x10
JMP 0x0009246c
PUSH EAX
PUSH EAX
MOV EDX,0x7f
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,EBX
CALL 0x000315c0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x38]
MOV EDX,0x20
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,EBX
CALL 0x000315c0
ADD ESP,0x10
JMP 0x0009246c
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + 0x24]
JMP 0x00091f2a
MOV byte ptr [ESP + 0xae],0x0
MOV dword ptr [ESP + 0x70],0xffffffff
MOV dword ptr [ESP + 0x64],0x0
JMP 0x000919d2
MOV EAX,0x1004
JMP 0x00093086
CMP dword ptr [ESP + 0x7c],0x0
MOV dword ptr [ESP + 0x54],0x0
JZ 0x000924dd
MOV EAX,dword ptr [EBP]
TEST byte ptr [EAX + 0x1d],0x40
JZ 0x000924dd
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,EBP
CALL 0x00017857
MOV dword ptr [ESP + 0x54],EAX
JMP 0x000924dd
PUSH EAX
PUSH EAX
MOV EDX,0x20
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x0009289b
MOV word ptr [ESP + 0x78],0x0
JMP 0x00091ee2
PUSH EAX
PUSH EAX
MOV EDX,0x7f
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x84],ESI
MOV dword ptr [ESP + 0x58],0x0
MOV ESI,dword ptr [ESP + 0x90]
JMP 0x0009244d
MOV EAX,dword ptr [ESP + 0x58]
ADD EAX,EBX
CMP dword ptr [ESP + 0x4c],0x0
JZ 0x00093747
MOV EBX,dword ptr [ESP + 0x18]
MOVSX EDX,word ptr [EBX + 0x2a]
LEA EBX,[EAX + EDX*0x1]
MOV EAX,dword ptr [EBP + 0x28]
MOV dword ptr [ESP + 0x44],EAX
ADD EAX,0x1
CMP dword ptr [ESP + 0x3c],0x0
MOV dword ptr [EBP + 0x28],EAX
JZ 0x00093727
PUSH EAX
PUSH EAX
MOV EDX,0x48
MOV ECX,dword ptr [ESP + 0x5c]
LEA EAX,[ESI + ECX*0x1 + -0x1]
XOR ECX,ECX
PUSH EAX
PUSH ESI
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH EBX
MOV EDX,0x64
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,EBP
CALL 0x0004b310
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000936e6
MOV word ptr [EAX + 0x8],BX
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,0xfffffff7
CALL 0x0002b210
CMP dword ptr [ESP + 0x1c],0x0
JZ 0x00093044
PUSH EAX
PUSH dword ptr [ESP + 0x18]
MOV EAX,EBP
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x54]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EDX,EBX
CALL 0x0001addf
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x40]
CMP dword ptr [ESP + 0x4c],0x0
CMOVNZ EAX,EBX
MOV dword ptr [ESP + 0x40],EAX
JMP 0x0009241c
PUSH EAX
PUSH EAX
MOV EDX,0x64
PUSH 0x0
PUSH EBX
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x000315c0
MOV dword ptr [ESP + 0x3c],EAX
ADD ESP,0x10
JMP 0x000936e6
XOR EDX,EDX
JMP 0x0009366e
MOV word ptr [ESP + 0x78],0x0
JMP 0x00091ea5
(translation_unit "void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)\n\n{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}\n\n" (function_definition "void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)\n\n{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" primitive_type (ERROR "__regparm1" identifier) (function_declarator "FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "char cVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int extraout_ECX_00;" primitive_type identifier ;) (declaration "int extraout_ECX_01;" primitive_type identifier ;) (declaration "int extraout_ECX_02;" primitive_type identifier ;) (declaration "int extraout_ECX_03;" primitive_type identifier ;) (declaration "int extraout_ECX_04;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX_05;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_06;" type_identifier identifier ;) (declaration "int *extraout_ECX_07;" primitive_type (pointer_declarator "*extraout_ECX_07" * identifier) ;) (declaration "int *extraout_ECX_08;" primitive_type (pointer_declarator "*extraout_ECX_08" * identifier) ;) (declaration "int *extraout_ECX_09;" primitive_type (pointer_declarator "*extraout_ECX_09" * identifier) ;) (declaration "int extraout_ECX_10;" primitive_type identifier ;) (declaration "int extraout_ECX_11;" primitive_type identifier ;) (declaration "int extraout_ECX_12;" primitive_type identifier ;) (declaration "int extraout_ECX_13;" primitive_type identifier ;) (declaration "int extraout_ECX_14;" primitive_type identifier ;) (declaration "int extraout_ECX_15;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX_16;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_17;" type_identifier identifier ;) (declaration "int extraout_ECX_18;" primitive_type identifier ;) (declaration "int extraout_ECX_19;" primitive_type identifier ;) (declaration "int *extraout_EDX;" primitive_type (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "uint extraout_EDX_00;" type_identifier identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint extraout_EDX_01;" type_identifier identifier ;) (declaration "uint extraout_EDX_02;" type_identifier identifier ;) (declaration "uint extraout_EDX_03;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_04;" type_identifier identifier ;) (declaration "uint extraout_EDX_05;" type_identifier identifier ;) (declaration "uint extraout_EDX_06;" type_identifier identifier ;) (declaration "uint extraout_EDX_07;" type_identifier identifier ;) (declaration "uint extraout_EDX_08;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "undefined8 uVar32;" type_identifier identifier ;) (declaration "undefined8 uVar33;" type_identifier identifier ;) (declaration "undefined4 uVar34;" type_identifier identifier ;) (declaration "uint local_100;" type_identifier identifier ;) (declaration "int *local_fc;" primitive_type (pointer_declarator "*local_fc" * identifier) ;) (declaration "int local_f8;" primitive_type identifier ;) (declaration "int local_f0;" primitive_type identifier ;) (declaration "int local_ec;" primitive_type identifier ;) (declaration "int *local_e8;" primitive_type (pointer_declarator "*local_e8" * identifier) ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "int local_e0;" primitive_type identifier ;) (declaration "int *local_dc;" primitive_type (pointer_declarator "*local_dc" * identifier) ;) (declaration "uint *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int *local_c0;" primitive_type (pointer_declarator "*local_c0" * identifier) ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "short local_a4;" (sized_type_specifier "short" short) identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int *local_98;" primitive_type (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "char local_6e;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "byte local_50 [4];" type_identifier (array_declarator "local_50 [4]" identifier [ number_literal ]) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x9151b;" (assignment_expression "uStack_14 = 0x9151b" identifier = number_literal) ;) (expression_statement "FUN_000a94ff();" (call_expression "FUN_000a94ff()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;" if (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(*(char *)(iVar27 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00091598;" goto statement_identifier ;)) (expression_statement "piVar8 = (int *)FUN_00091200();" (assignment_expression "piVar8 = (int *)FUN_00091200()" identifier = (cast_expression "(int *)FUN_00091200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00091200()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" { (expression_statement "local_d4 = -0x8000;" (assignment_expression "local_d4 = -0x8000" identifier = number_literal) ;) (if_statement "if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }" if (parenthesized_expression "(piVar8[0x12] != 0)" ( (binary_expression "piVar8[0x12] != 0" (subscript_expression "piVar8[0x12]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      local_d4 = FUN_0002a630();\n    }" { (expression_statement "local_d4 = FUN_0002a630();" (assignment_expression "local_d4 = FUN_0002a630()" identifier = (call_expression "FUN_0002a630()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "iVar9 = FUN_0002add0(extraout_ECX,local_50);" (assignment_expression "iVar9 = FUN_0002add0(extraout_ECX,local_50)" identifier = (call_expression "FUN_0002add0(extraout_ECX,local_50)" identifier (argument_list "(extraout_ECX,local_50)" ( identifier , identifier )))) ;) (expression_statement "piVar20 = (int *)piVar8[3];" (assignment_expression "piVar20 = (int *)piVar8[3]" identifier = (cast_expression "(int *)piVar8[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[3]" identifier [ number_literal ]))) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }" if (parenthesized_expression "(1 < *extraout_EDX)" ( (binary_expression "1 < *extraout_EDX" number_literal < (pointer_expression "*extraout_EDX" * identifier)) )) (compound_statement "{\n      local_100 = *extraout_ECX;\n    }" { (expression_statement "local_100 = *extraout_ECX;" (assignment_expression "local_100 = *extraout_ECX" identifier = (pointer_expression "*extraout_ECX" * identifier)) ;) })) (expression_statement "iVar10 = FUN_00083c60();" (assignment_expression "iVar10 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" if (parenthesized_expression "((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0))" ( (binary_expression "(iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = FUN_0003d4a0(), iVar10 == 0)" ( (comma_expression "iVar10 = FUN_0003d4a0(), iVar10 == 0" (assignment_expression "iVar10 = FUN_0003d4a0()" identifier = (call_expression "FUN_0003d4a0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" { (expression_statement "piVar16 = (int *)param_1[10];" (assignment_expression "piVar16 = (int *)param_1[10]" identifier = (cast_expression "(int *)param_1[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "local_c0 = (int *)((int)piVar16 + 1);" (assignment_expression "local_c0 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar26 = *(byte *)(piVar8 + 9);" (assignment_expression "bVar26 = *(byte *)(piVar8 + 9)" identifier = (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) ))))) ;) (expression_statement "param_1[10] = (int)local_c0;" (assignment_expression "param_1[10] = (int)local_c0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = piVar8[2];" (assignment_expression "iVar10 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "local_dc = piVar16;" (assignment_expression "local_dc = piVar16" identifier = identifier) ;) (if_statement "if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" if (parenthesized_expression "((bVar26 & 0x80) == 0)" ( (binary_expression "(bVar26 & 0x80) == 0" (parenthesized_expression "(bVar26 & 0x80)" ( (binary_expression "bVar26 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }" { (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" identifier = number_literal) ;) (if_statement "if (iVar10 == 0) goto LAB_00091c69;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091c69;" goto statement_identifier ;)) (labeled_statement "LAB_00091707:\n        piVar23 = local_c0;" statement_identifier : (expression_statement "piVar23 = local_c0;" (assignment_expression "piVar23 = local_c0" identifier = identifier) ;)) (do_statement "do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);" do (compound_statement "{\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        }" { (expression_statement "bVar31 = local_e0 == iVar10;" (assignment_expression "bVar31 = local_e0 == iVar10" identifier = (binary_expression "local_e0 == iVar10" identifier == identifier)) ;) (expression_statement "iVar10 = *(int *)(iVar10 + 0x14);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x14)" identifier = (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (bVar31) {\n            local_dc = piVar23;\n          }" if (parenthesized_expression "(bVar31)" ( identifier )) (compound_statement "{\n            local_dc = piVar23;\n          }" { (expression_statement "local_dc = piVar23;" (assignment_expression "local_dc = piVar23" identifier = identifier) ;) })) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_90 = ~(uint)piVar16 + (int)piVar23;" (assignment_expression "local_90 = ~(uint)piVar16 + (int)piVar23" identifier = (binary_expression "~(uint)piVar16 + (int)piVar23" (unary_expression "~(uint)piVar16" ~ (cast_expression "(uint)piVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "param_1[10] = (int)piVar23;" (assignment_expression "param_1[10] = (int)piVar23" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" else (compound_statement "{\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" { (if_statement "if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" { (expression_statement "bVar26 = *(byte *)(iVar10 + 0x37);" (assignment_expression "bVar26 = *(byte *)(iVar10 + 0x37)" identifier = (pointer_expression "*(byte *)(iVar10 + 0x37)" * (cast_expression "(byte *)(iVar10 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x37)" ( (binary_expression "iVar10 + 0x37" identifier + number_literal) ))))) ;) (expression_statement "local_e0 = iVar10;" (assignment_expression "local_e0 = iVar10" identifier = identifier) ;) (while_statement "while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" while (parenthesized_expression "(((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)))" ( (parenthesized_expression "((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))" ( (binary_expression "(bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" (binary_expression "(bVar26 & 3) != 2" (parenthesized_expression "(bVar26 & 3)" ( (binary_expression "bVar26 & 3" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" ( (comma_expression "local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0" (assignment_expression "local_e0 = *(int *)(local_e0 + 0x14)" identifier = (pointer_expression "*(int *)(local_e0 + 0x14)" * (cast_expression "(int *)(local_e0 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x14)" ( (binary_expression "local_e0 + 0x14" identifier + number_literal) ))))) , (binary_expression "local_e0 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" { (expression_statement "bVar26 = *(byte *)(local_e0 + 0x37);" (assignment_expression "bVar26 = *(byte *)(local_e0 + 0x37)" identifier = (pointer_expression "*(byte *)(local_e0 + 0x37)" * (cast_expression "(byte *)(local_e0 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x37)" ( (binary_expression "local_e0 + 0x37" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00091707;" goto statement_identifier ;) })) (labeled_statement "LAB_00091c69:\n        local_e0 = 0;" statement_identifier : (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }))) (if_statement "if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" { (expression_statement "local_dc = (int *)param_4[7];" (assignment_expression "local_dc = (int *)param_4[7]" identifier = (cast_expression "(int *)param_4[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "local_c0 = (int *)param_4[8];" (assignment_expression "local_c0 = (int *)param_4[8]" identifier = (cast_expression "(int *)param_4[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[8]" identifier [ number_literal ]))) ;) (expression_statement "param_1[10] = (int)piVar16;" (assignment_expression "param_1[10] = (int)piVar16" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "extraout_EDX[0xc] = (int)local_dc;" (assignment_expression "extraout_EDX[0xc] = (int)local_dc" (subscript_expression "extraout_EDX[0xc]" identifier [ number_literal ]) = (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar11 = (undefined4 *)FUN_0002e2d0();" (assignment_expression "puVar11 = (undefined4 *)FUN_0002e2d0()" identifier = (cast_expression "(undefined4 *)FUN_0002e2d0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e2d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" { (expression_statement "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a)" identifier = (binary_expression "puVar11 + *(short *)((int)piVar8 + 0x2a)" identifier + (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "__n = local_90 + 1;" (assignment_expression "__n = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar23 + __n;" (assignment_expression "piVar18 = piVar23 + __n" identifier = (binary_expression "piVar23 + __n" identifier + identifier)) ;) (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" identifier (argument_list "(piVar18,1,__n)" ( identifier , number_literal , identifier ))) ;) (expression_statement "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + local_90 + 1)" * (cast_expression "(undefined1 *)((int)piVar18 + local_90 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + local_90 + 1)" ( (binary_expression "(int)piVar18 + local_90 + 1" (binary_expression "(int)piVar18 + local_90" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" if (parenthesized_expression "(0 < sVar7)" ( (binary_expression "0 < sVar7" number_literal < identifier) )) (compound_statement "{\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" { (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (do_statement "do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);" do (compound_statement "{\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          }" { (expression_statement "*puVar12 = 0xffffffff;" (assignment_expression "*puVar12 = 0xffffffff" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 + sVar7 != puVar12)" ( (binary_expression "puVar11 + sVar7 != puVar12" (binary_expression "puVar11 + sVar7" identifier + identifier) != identifier) )) ;) })) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0x200;" (assignment_expression "local_28 = 0x200" identifier = number_literal) ;) (expression_statement "local_38 = param_4;" (assignment_expression "local_38 = param_4" identifier = identifier) ;) (expression_statement "local_e8 = (int *)param_1[2];" (assignment_expression "local_e8 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_3c = extraout_EDX;" (assignment_expression "local_3c = extraout_EDX" identifier = identifier) ;) (if_statement "if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" if (parenthesized_expression "((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))" ( (binary_expression "(local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" (parenthesized_expression "(local_e8 != (int *)0x0)" ( (binary_expression "local_e8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" ( (comma_expression "local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0" (assignment_expression "local_e8 = (int *)FUN_000318c0()" identifier = (cast_expression "(int *)FUN_000318c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))))) , (binary_expression "local_e8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" { (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" if (parenthesized_expression "((int)*extraout_ECX < 1)" ( (binary_expression "(int)*extraout_ECX < 1" (cast_expression "(int)*extraout_ECX" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*extraout_ECX" * identifier)) < number_literal) )) (compound_statement "{\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" else (compound_statement "{\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = extraout_ECX + 1;" (assignment_expression "local_d8 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (do_statement "do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);" do (compound_statement "{\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            }" { (if_statement "if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;" if (parenthesized_expression "((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0))" ( (binary_expression "(local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "iVar10 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar10 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar25 = local_d8[1];" (assignment_expression "uVar25 = local_d8[1]" identifier = (subscript_expression "local_d8[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "local_fc = (int *)piVar8[1];" (assignment_expression "local_fc = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_000918f0:\n                iVar15 = *local_fc;" statement_identifier : (expression_statement "iVar15 = *local_fc;" (assignment_expression "iVar15 = *local_fc" identifier = (pointer_expression "*local_fc" * identifier)) ;)) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );" do (compound_statement "{\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "uVar24 = (uint)*(byte *)(iVar15 + iVar13);" (assignment_expression "uVar24 = (uint)*(byte *)(iVar15 + iVar13)" identifier = (binary_expression "(uint)*(byte *)(iVar15 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar15 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar13)" ( (binary_expression "iVar15 + iVar13" identifier + identifier) ))))) ;) (expression_statement "uVar22 = (uint)*(byte *)(uVar25 + iVar13);" (assignment_expression "uVar22 = (uint)*(byte *)(uVar25 + iVar13)" identifier = (binary_expression "(uint)*(byte *)(uVar25 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar25 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + iVar13)" ( (binary_expression "uVar25 + iVar13" identifier + identifier) ))))) ;) (if_statement "if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" if (parenthesized_expression "(uVar24 == uVar22)" ( (binary_expression "uVar24 == uVar22" identifier == identifier) )) (compound_statement "{\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }" { (if_statement "if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" { (if_statement "if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" if (parenthesized_expression "((short)piVar8[10] == iVar29)" ( (binary_expression "(short)piVar8[10] == iVar29" (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }" { (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" identifier = (pointer_expression "*local_d8" * identifier)) ;) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" identifier = identifier) ;) (labeled_statement "LAB_00091c26:\n                        puVar11[iVar29] = local_e4;" statement_identifier : (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = identifier) ;)) (if_statement "if (iVar10 <= iVar29) break;" if (parenthesized_expression "(iVar10 <= iVar29)" ( (binary_expression "iVar10 <= iVar29" identifier <= identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" else (compound_statement "{\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" { (expression_statement "uVar2 = *(ushort *)(local_fc + 4);" (assignment_expression "uVar2 = *(ushort *)(local_fc + 4)" identifier = (pointer_expression "*(ushort *)(local_fc + 4)" * (cast_expression "(ushort *)(local_fc + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_fc + 4)" ( (binary_expression "local_fc + 4" identifier + number_literal) ))))) ;) (if_statement "if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" if (parenthesized_expression "((local_e0 == 0) || ((uVar2 & 1) == 0))" ( (binary_expression "(local_e0 == 0) || ((uVar2 & 1) == 0)" (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) || (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" { (if_statement "if ((uVar2 & 0x60) == 0) goto LAB_00091c26;" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00091c26;" goto statement_identifier ;)) (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" identifier (argument_list "(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" ( identifier , (binary_expression "unaff_EDI + 0x1c67d" identifier + number_literal) , identifier , identifier ))) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) })) (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = identifier) ;) (if_statement "if (iVar10 <= iVar29) goto LAB_00092075;" if (parenthesized_expression "(iVar10 <= iVar29)" ( (binary_expression "iVar10 <= iVar29" identifier <= identifier) )) (goto_statement "goto LAB_00092075;" goto statement_identifier ;)) (expression_statement "local_6e = '\x01';" (assignment_expression "local_6e = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) }))) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" * (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" * (cast_expression "(int *)(iVar27 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x10)" ( (binary_expression "iVar27 + 0x10" identifier + number_literal) )))) + (binary_expression "local_d4 * 0x10" identifier * number_literal)) ))))) ;) (goto_statement "goto LAB_0009197f;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" else (if_statement "if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22))" ( (binary_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)" (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24)" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar24)" ( (binary_expression "unaff_EDI + 0x23b65 + uVar24" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + identifier) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar22)" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar22)" ( (binary_expression "unaff_EDI + 0x23b65 + uVar22" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + identifier) ))))) )) (goto_statement "goto LAB_00091b70;" goto statement_identifier ;)))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" statement_identifier : (if_statement "if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" if (parenthesized_expression "((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0))" ( (binary_expression "(local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)" (parenthesized_expression "(local_e0 != 0)" ( (binary_expression "local_e0 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = FUN_00029a00(), iVar10 == 0)" ( (comma_expression "iVar10 = FUN_00029a00(), iVar10 == 0" (assignment_expression "iVar10 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" { (labeled_statement "LAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" statement_identifier : (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25)" identifier (argument_list "(param_1,unaff_EDI + 0x199ec,uVar25)" ( identifier , (binary_expression "unaff_EDI + 0x199ec" identifier + number_literal) , identifier ))) ;)) (expression_statement "*(undefined1 *)((int)param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x11)" * (cast_expression "(undefined1 *)((int)param_1 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x11)" ( (binary_expression "(int)param_1 + 0x11" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) }))) (expression_statement "iVar29 = -1;" (assignment_expression "iVar29 = -1" identifier = number_literal) ;) (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" identifier = (pointer_expression "*local_d8" * identifier)) ;) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" * (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" * (cast_expression "(int *)(iVar27 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x10)" ( (binary_expression "iVar27 + 0x10" identifier + number_literal) )))) + (binary_expression "local_d4 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" identifier = identifier) ;) (expression_statement "iVar15 = unaff_EDI + 0x18a8f;" (assignment_expression "iVar15 = unaff_EDI + 0x18a8f" identifier = (binary_expression "unaff_EDI + 0x18a8f" identifier + number_literal)) ;) (labeled_statement "LAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);" statement_identifier : (expression_statement "iVar10 = FUN_0003c520(iVar15,uVar34);" (assignment_expression "iVar10 = FUN_0003c520(iVar15,uVar34)" identifier = (call_expression "FUN_0003c520(iVar15,uVar34)" identifier (argument_list "(iVar15,uVar34)" ( identifier , identifier )))) ;)) (if_statement "if (iVar10 == 1) goto LAB_00091be9;" if (parenthesized_expression "(iVar10 == 1)" ( (binary_expression "iVar10 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (if_statement "if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }" if (parenthesized_expression "(iVar10 == 2)" ( (binary_expression "iVar10 == 2" identifier == number_literal) )) (compound_statement "{\n                puVar11[iVar29] = 0xffffffff;\n              }" { (expression_statement "puVar11[iVar29] = 0xffffffff;" (assignment_expression "puVar11[iVar29] = 0xffffffff" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = number_literal) ;) })) (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" identifier = (binary_expression "local_e4 + 1" identifier + number_literal)) ;) (expression_statement "local_d8 = local_d8 + 4;" (assignment_expression "local_d8 = local_d8 + 4" identifier = (binary_expression "local_d8 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)local_e4 < (int)*extraout_ECX)" ( (binary_expression "(int)local_e4 < (int)*extraout_ECX" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*extraout_ECX" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*extraout_ECX" * identifier))) )) ;) }))) (expression_statement "bVar26 = local_6e + cVar1;" (assignment_expression "bVar26 = local_6e + cVar1" identifier = (binary_expression "local_6e + cVar1" identifier + identifier)) ;) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" { (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (do_statement "do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);" do (compound_statement "{\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            }" { (if_statement "if (sVar7 < 1) break;" if (parenthesized_expression "(sVar7 < 1)" ( (binary_expression "sVar7 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);" do (compound_statement "{\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              }" { (if_statement "if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0))" ( (binary_expression "((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" (parenthesized_expression "((int)puVar11[iVar10] < 0)" ( (binary_expression "(int)puVar11[iVar10] < 0" (cast_expression "(int)puVar11[iVar10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar10]" identifier [ identifier ])) < number_literal) )) && (parenthesized_expression "((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60)" ( (binary_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60" (pointer_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" * (cast_expression "(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8[1] + iVar10 * 0x14 + 0x10)" ( (binary_expression "piVar8[1] + iVar10 * 0x14 + 0x10" (binary_expression "piVar8[1] + iVar10 * 0x14" (subscript_expression "piVar8[1]" identifier [ number_literal ]) + (binary_expression "iVar10 * 0x14" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "iVar29 = FUN_00028fd0();" (assignment_expression "iVar29 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" { (expression_statement "puVar11[iVar10] = 99999;" (assignment_expression "puVar11[iVar10] = 99999" (subscript_expression "puVar11[iVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "bVar31 = true;" (assignment_expression "bVar31 = true" identifier = true) ;) })) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < sVar7)" ( (binary_expression "iVar10 < sVar7" identifier < identifier) )) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) })) (expression_statement "iVar10 = piVar8[0xe];" (assignment_expression "iVar10 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (expression_statement "extraout_EDX[0xf] = -(uint)(iVar10 != 0);" (assignment_expression "extraout_EDX[0xf] = -(uint)(iVar10 != 0)" (subscript_expression "extraout_EDX[0xf]" identifier [ number_literal ]) = (unary_expression "-(uint)(iVar10 != 0)" - (call_expression "(uint)(iVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))))) ;) (expression_statement "piVar14 = (int *)(uint)bVar26;" (assignment_expression "piVar14 = (int *)(uint)bVar26" identifier = (cast_expression "(int *)(uint)bVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar26" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);" (assignment_expression "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0)" (subscript_expression "extraout_EDX[0x10]" identifier [ number_literal ]) = (unary_expression "-(uint)((iVar10 != 0) != 0)" - (call_expression "(uint)((iVar10 != 0) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((iVar10 != 0) != 0)" ( (binary_expression "(iVar10 != 0) != 0" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) != number_literal) ))))) ;) (expression_statement "iVar10 = FUN_0002a330(piVar14);" (assignment_expression "iVar10 = FUN_0002a330(piVar14)" identifier = (call_expression "FUN_0002a330(piVar14)" identifier (argument_list "(piVar14)" ( identifier )))) ;) (if_statement "if (param_3 == 5) {\n            local_4c = 1;\n          }" if (parenthesized_expression "(param_3 == 5)" ( (binary_expression "param_3 == 5" identifier == number_literal) )) (compound_statement "{\n            local_4c = 1;\n          }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) })) (expression_statement "iVar29 = piVar8[2];" (assignment_expression "iVar29 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "local_98 = piVar23;" (assignment_expression "local_98 = piVar23" identifier = identifier) ;) (if_statement "if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" { (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);" do (compound_statement "{\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            }" { (if_statement "if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" if (parenthesized_expression "(((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))))" ( (binary_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" (parenthesized_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0))" ( (binary_expression "(local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)" (parenthesized_expression "(local_e0 == iVar29)" ( (binary_expression "local_e0 == iVar29" identifier == identifier) )) || (parenthesized_expression "(1 < iVar10 || bVar26 != 0)" ( (binary_expression "1 < iVar10 || bVar26 != 0" (binary_expression "1 < iVar10" number_literal < identifier) || (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" ( (parenthesized_expression "(*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))" ( (binary_expression "*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)" (binary_expression "*(int *)(iVar29 + 0x24) != 0" (pointer_expression "*(int *)(iVar29 + 0x24)" * (cast_expression "(int *)(iVar29 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x24)" ( (binary_expression "iVar29 + 0x24" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(iVar15 = FUN_00028fd0(), iVar15 != 0)" ( (comma_expression "iVar15 = FUN_00028fd0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar29 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) + identifier)) ;) (labeled_statement "LAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;" statement_identifier : (if_statement "if (iVar15 == 0) goto LAB_00091b56;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091b56;" goto statement_identifier ;))) }) (else_clause "else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" else (compound_statement "{\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" if (parenthesized_expression "(*(short *)(iVar29 + 0x32) != 0)" ( (binary_expression "*(short *)(iVar29 + 0x32) != 0" (pointer_expression "*(short *)(iVar29 + 0x32)" * (cast_expression "(short *)(iVar29 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x32)" ( (binary_expression "iVar29 + 0x32" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" { (do_statement "do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));" do (compound_statement "{\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  }" { (expression_statement "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);" (assignment_expression "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" * (cast_expression "(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar29 + 4) + iVar15 * 2)" ( (binary_expression "*(int *)(iVar29 + 4) + iVar15 * 2" (pointer_expression "*(int *)(iVar29 + 4)" * (cast_expression "(int *)(iVar29 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 4)" ( (binary_expression "iVar29 + 4" identifier + number_literal) )))) + (binary_expression "iVar15 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" if (parenthesized_expression "(sVar7 < 0)" ( (binary_expression "sVar7 < 0" identifier < number_literal) )) (compound_statement "{\n                      uVar25 = FUN_00028fd0();\n                    }" { (expression_statement "uVar25 = FUN_00028fd0();" (assignment_expression "uVar25 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" else (compound_statement "{\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" { (expression_statement "uVar25 = (uint)~puVar11[sVar7] >> 0x1f;" (assignment_expression "uVar25 = (uint)~puVar11[sVar7] >> 0x1f" identifier = (binary_expression "(uint)~puVar11[sVar7] >> 0x1f" (cast_expression "(uint)~puVar11[sVar7]" ( (type_descriptor "uint" type_identifier) ) (unary_expression "~puVar11[sVar7]" ~ (subscript_expression "puVar11[sVar7]" identifier [ identifier ]))) >> number_literal)) ;) }))) (if_statement "if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar29 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) + identifier)) ;) (if_statement "if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }" if (parenthesized_expression "((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05'))" ( (binary_expression "(param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')" (parenthesized_expression "(param_3 == 0xb)" ( (binary_expression "param_3 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(iVar29 + 0x36) == '\x05')" ( (binary_expression "*(char *)(iVar29 + 0x36) == '\x05'" (pointer_expression "*(char *)(iVar29 + 0x36)" * (cast_expression "(char *)(iVar29 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x36)" ( (binary_expression "iVar29 + 0x36" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n                        local_4c = 1;\n                      }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) })) (goto_statement "goto LAB_00091b52;" goto statement_identifier ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32))" ( (binary_expression "iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)(iVar29 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar29 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x32)" ( (binary_expression "iVar29 + 0x32" identifier + number_literal) ))))) )) ;) })) (labeled_statement "LAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" statement_identifier : (expression_statement "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1)" * (cast_expression "(undefined1 *)((int)piVar18 + (int)local_fc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + (int)local_fc + 1)" ( (binary_expression "(int)piVar18 + (int)local_fc + 1" (binary_expression "(int)piVar18 + (int)local_fc" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar29 = *(int *)(iVar29 + 0x14);" (assignment_expression "iVar29 = *(int *)(iVar29 + 0x14)" identifier = (pointer_expression "*(int *)(iVar29 + 0x14)" * (cast_expression "(int *)(iVar29 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x14)" ( (binary_expression "iVar29 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar23[(int)local_fc] = iVar15;" (assignment_expression "piVar23[(int)local_fc] = iVar15" (subscript_expression "piVar23[(int)local_fc]" identifier [ (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "local_fc = (int *)((int)local_fc + 1);" (assignment_expression "local_fc = (int *)((int)local_fc + 1)" identifier = (cast_expression "(int *)((int)local_fc + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_fc + 1)" ( (binary_expression "(int)local_fc + 1" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) ;) (expression_statement "local_98 = piVar23 + (int)local_fc;" (assignment_expression "local_98 = piVar23 + (int)local_fc" identifier = (binary_expression "piVar23 + (int)local_fc" identifier + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "iVar29 = param_1[0xb];" (assignment_expression "iVar29 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar29 + 1;" (assignment_expression "param_1[0xb] = iVar29 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "*local_98 = iVar29 + 1;" (assignment_expression "*local_98 = iVar29 + 1" (pointer_expression "*local_98" * identifier) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (if_statement "if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (compound_statement "{\n            memset(piVar18,1,__n);\n          }" { (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" identifier (argument_list "(piVar18,1,__n)" ( identifier , number_literal , identifier ))) ;) })) (if_statement "if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" { (expression_statement "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;" (assignment_expression "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" * (cast_expression "(byte *)((int)local_e8 + 0x8e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" * (cast_expression "(byte *)((int)local_e8 + 0x8e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "bVar31 = iVar10 != 0;" (assignment_expression "bVar31 = iVar10 != 0" identifier = (binary_expression "iVar10 != 0" identifier != number_literal)) ;) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (if_statement "if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }" { (expression_statement "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "local_84 = *local_98;" (assignment_expression "local_84 = *local_98" identifier = (pointer_expression "*local_98" * identifier)) ;) (expression_statement "local_74 = param_1[0xb];" (assignment_expression "local_74 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_fc = (int *)(local_74 + 1);" (assignment_expression "local_fc = (int *)(local_74 + 1)" identifier = (cast_expression "(int *)(local_74 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_74 + 1)" ( (binary_expression "local_74 + 1" identifier + number_literal) )))) ;) (expression_statement "param_1[0xb] = (int)local_fc;" (assignment_expression "param_1[0xb] = (int)local_fc" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" if (parenthesized_expression "((iVar9 != 0 || local_6e != '\0') || (bVar31))" ( (binary_expression "(iVar9 != 0 || local_6e != '\0') || (bVar31)" (parenthesized_expression "(iVar9 != 0 || local_6e != '\0')" ( (binary_expression "iVar9 != 0 || local_6e != '\0'" (binary_expression "iVar9 != 0" identifier != number_literal) || (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }" { (expression_statement "local_74 = local_74 + 2;" (assignment_expression "local_74 = local_74 + 2" identifier = (binary_expression "local_74 + 2" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = (int)local_fc + (int)piVar30;" (assignment_expression "param_1[0xb] = (int)local_fc + (int)piVar30" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(int)local_fc + (int)piVar30" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (!bVar31) goto joined_r0x00091d94;" if (parenthesized_expression "(!bVar31)" ( (unary_expression "!bVar31" ! identifier) )) (goto_statement "goto joined_r0x00091d94;" goto statement_identifier ;)) (labeled_statement "LAB_00091d96:\n              local_d4 = param_1[0xb] + 1;" statement_identifier : (expression_statement "local_d4 = param_1[0xb] + 1;" (assignment_expression "local_d4 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "param_1[0xb] = local_d4;" (assignment_expression "param_1[0xb] = local_d4" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" else (compound_statement "{\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" { (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x00091d94:\n              local_d4 = (int)local_fc;" statement_identifier : (expression_statement "local_d4 = (int)local_fc;" (assignment_expression "local_d4 = (int)local_fc" identifier = (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;" if (parenthesized_expression "(bVar26 != 0 || iVar9 != 0)" ( (binary_expression "bVar26 != 0 || iVar9 != 0" (binary_expression "bVar26 != 0" identifier != number_literal) || (binary_expression "iVar9 != 0" identifier != number_literal)) )) (goto_statement "goto LAB_00091d96;" goto statement_identifier ;)) }))) (expression_statement "local_94 = param_1[0xb] + 1;" (assignment_expression "local_94 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "uVar25 = param_1[0xb] + (int)piVar30;" (assignment_expression "uVar25 = param_1[0xb] + (int)piVar30" identifier = (binary_expression "param_1[0xb] + (int)piVar30" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "param_1[0xb] = uVar25;" (assignment_expression "param_1[0xb] = uVar25" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" else (compound_statement "{\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar25 = extraout_EDX_00;" (assignment_expression "uVar25 = extraout_EDX_00" identifier = identifier) ;) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) }))) (if_statement "if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }" { (if_statement "if (local_100 == 0) goto LAB_00091e0a;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091e0a;" goto statement_identifier ;)) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" else (compound_statement "{\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" { (expression_statement "iVar15 = param_1[0x3d];" (assignment_expression "iVar15 = param_1[0x3d]" identifier = (subscript_expression "param_1[0x3d]" identifier [ number_literal ])) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "param_1[0x3d] = *piVar8;" (assignment_expression "param_1[0x3d] = *piVar8" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "uVar25 = local_100;" (assignment_expression "uVar25 = local_100" identifier = identifier) ;) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) (expression_statement "local_48 = iVar15;" (assignment_expression "local_48 = iVar15" identifier = identifier) ;) (expression_statement "local_44 = param_1;" (assignment_expression "local_44 = param_1" identifier = identifier) ;) (if_statement "if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" { (expression_statement "FUN_00083b40(param_2,local_dc,iVar29,iVar29);" (call_expression "FUN_00083b40(param_2,local_dc,iVar29,iVar29)" identifier (argument_list "(param_2,local_dc,iVar29,iVar29)" ( identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_00091e0a:\n              uVar32 = FUN_0003c9d0();" statement_identifier : (expression_statement "uVar32 = FUN_0003c9d0();" (assignment_expression "uVar32 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)uVar32 != 0) goto LAB_00091be9;" if (parenthesized_expression "((int)uVar32 != 0)" ( (binary_expression "(int)uVar32 != 0" (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (expression_statement "iVar15 = extraout_ECX_00;" (assignment_expression "iVar15 = extraout_ECX_00" identifier = identifier) ;) })) }))) (if_statement "if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "iVar29 = param_1[0xe] + -1;" (assignment_expression "iVar29 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar29;" (assignment_expression "param_1[0xe] = iVar29" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" if (parenthesized_expression "(((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0))" ( (binary_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)" (parenthesized_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar27 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar27 + 0x20) & 1)" ( (binary_expression "*(byte *)(iVar27 + 0x20) & 1" (pointer_expression "*(byte *)(iVar27 + 0x20)" * (cast_expression "(byte *)(iVar27 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x20)" ( (binary_expression "iVar27 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_9c = 0, param_1[0x1e] == 0)" ( (comma_expression "local_9c = 0, param_1[0x1e] == 0" (assignment_expression "local_9c = 0" identifier = number_literal) , (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" { (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }" { (expression_statement "local_9c = param_1[0xb] + 1;" (assignment_expression "local_9c = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = local_9c;" (assignment_expression "param_1[0xb] = local_9c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_9c,0,piVar30,piVar30);" (call_expression "FUN_000315c0(local_9c,0,piVar30,piVar30)" identifier (argument_list "(local_9c,0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_10;" (assignment_expression "iVar15 = extraout_ECX_10" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_06;" (assignment_expression "uVar25 = extraout_EDX_06" identifier = identifier) ;) }) (else_clause "else {\n                local_9c = 0;\n              }" else (compound_statement "{\n                local_9c = 0;\n              }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" if (parenthesized_expression "((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0))" ( (binary_expression "(local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)" (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "FUN_000315c0(local_84,local_fc,iVar15,iVar15);" (call_expression "FUN_000315c0(local_84,local_fc,iVar15,iVar15)" identifier (argument_list "(local_84,local_fc,iVar15,iVar15)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (if_statement "if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);" statement_identifier : (expression_statement "FUN_00075fd0(param_1,param_2,iVar29,0x10);" (call_expression "FUN_00075fd0(param_1,param_2,iVar29,0x10)" identifier (argument_list "(param_1,param_2,iVar29,0x10)" ( identifier , identifier , identifier , number_literal ))) ;)) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (expression_statement "iVar15 = extraout_ECX_01;" (assignment_expression "iVar15 = extraout_ECX_01" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_01;" (assignment_expression "uVar25 = extraout_EDX_01" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (labeled_statement "LAB_00091f2a:\n                iVar27 = iVar13;" statement_identifier : (expression_statement "iVar27 = iVar13;" (assignment_expression "iVar27 = iVar13" identifier = identifier) ;)) (if_statement "if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" if (parenthesized_expression "((uVar22 & 0x80) == 0)" ( (binary_expression "(uVar22 & 0x80) == 0" (parenthesized_expression "(uVar22 & 0x80)" ( (binary_expression "uVar22 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }" { (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" identifier (argument_list "(local_fc,0,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_18;" (assignment_expression "iVar15 = extraout_ECX_18" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_07;" (assignment_expression "uVar25 = extraout_EDX_07" identifier = identifier) ;) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = (int *)iVar13;" (assignment_expression "local_98 = (int *)iVar13" identifier = (cast_expression "(int *)iVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" else (compound_statement "{\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" { (labeled_statement "LAB_00091f32:\n                  local_c4 = (int)local_a4;" statement_identifier : (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" if (parenthesized_expression "(0 < local_c4)" ( (binary_expression "0 < local_c4" number_literal < identifier) )) (compound_statement "{\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" { (labeled_statement "LAB_00091f43:\n                    local_98 = (int *)0x0;" statement_identifier : (expression_statement "local_98 = (int *)0x0;" (assignment_expression "local_98 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_68 = iVar27;" (assignment_expression "local_68 = iVar27" identifier = identifier) ;) (do_statement "do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);" do (compound_statement "{\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    }" { (expression_statement "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;" (call_expression "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" identifier (argument_list "((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" ( (cast_expression "(int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" * (cast_expression "(short *)(*(int *)(local_e0 + 4) + (int)local_98)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_e0 + 4) + (int)local_98)" ( (binary_expression "*(int *)(local_e0 + 4) + (int)local_98" (pointer_expression "*(int *)(local_e0 + 4)" * (cast_expression "(int *)(local_e0 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 4)" ( (binary_expression "local_e0 + 4" identifier + number_literal) )))) + (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) , identifier ))) ;) (expression_statement "local_98 = (int *)((int)local_98 + 2);" (assignment_expression "local_98 = (int *)((int)local_98 + 2)" identifier = (cast_expression "(int *)((int)local_98 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_98 + 2)" ( (binary_expression "(int)local_98 + 2" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = extraout_ECX_02;" (assignment_expression "iVar15 = extraout_ECX_02" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_02;" (assignment_expression "uVar25 = extraout_EDX_02" identifier = identifier) ;) }) while (parenthesized_expression "((int *)(local_c4 * 2) != local_98)" ( (binary_expression "(int *)(local_c4 * 2) != local_98" (cast_expression "(int *)(local_c4 * 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 * 2)" ( (binary_expression "local_c4 * 2" identifier * number_literal) ))) != identifier) )) ;) })) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c8 = local_c4;" (assignment_expression "local_c8 = local_c4" identifier = identifier) ;) (if_statement "if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }" { (labeled_statement "LAB_00092c5d:\n                    uVar34 = FUN_0002e150();" statement_identifier : (expression_statement "uVar34 = FUN_0002e150();" (assignment_expression "uVar34 = FUN_0002e150()" identifier = (call_expression "FUN_0002e150()" identifier (argument_list "()" ( )))) ;)) (expression_statement "FUN_000315c0(local_c8,local_8c,uVar34,uVar34);" (call_expression "FUN_000315c0(local_c8,local_8c,uVar34,uVar34)" identifier (argument_list "(local_c8,local_8c,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00032090(local_c8);" (call_expression "FUN_00032090(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;) (expression_statement "FUN_000316b0(local_8c,local_98,local_c8);" (call_expression "FUN_000316b0(local_8c,local_98,local_c8)" identifier (argument_list "(local_8c,local_98,local_c8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_04;" (assignment_expression "iVar15 = extraout_ECX_04" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_05;" (assignment_expression "uVar25 = extraout_EDX_05" identifier = identifier) ;) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" identifier = identifier) ;) }) (else_clause "else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" else (if_statement "if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" if (parenthesized_expression "(local_f0 != 0)" ( (binary_expression "local_f0 != 0" identifier != number_literal) )) (compound_statement "{\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" { (expression_statement "FUN_0002b350();" (call_expression "FUN_0002b350()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar15 = extraout_ECX_03;" (assignment_expression "iVar15 = extraout_ECX_03" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_03;" (assignment_expression "uVar25 = extraout_EDX_03" identifier = identifier) ;) })))) }))) (goto_statement "goto LAB_0009244d;" goto statement_identifier ;) })) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00093044:\n              uVar34 = 0x1004;" statement_identifier : (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" identifier = number_literal) ;)) (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" ( (parenthesized_expression "(((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))" ( (binary_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)" (parenthesized_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0))" ( (binary_expression "(iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)" (parenthesized_expression "(iVar9 != 0 || (iVar10 != 0))" ( (binary_expression "iVar9 != 0 || (iVar10 != 0)" (binary_expression "iVar9 != 0" identifier != number_literal) || (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(uVar34 = 0x100c, bVar26 != 0)" ( (comma_expression "uVar34 = 0x100c, bVar26 != 0" (assignment_expression "uVar34 = 0x100c" identifier = number_literal) , (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                uVar34 = 0x1004;\n              }" { (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" identifier = number_literal) ;) })) (expression_statement "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);" (assignment_expression "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0)" identifier = (call_expression "FUN_0007d3c0(0,0,uVar34,local_c0)" identifier (argument_list "(0,0,uVar34,local_c0)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar15 = (int)uVar32;" (assignment_expression "iVar15 = (int)uVar32" identifier = (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar15 == 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "local_64 = *(int **)(iVar15 + 0x14);" (assignment_expression "local_64 = *(int **)(iVar15 + 0x14)" identifier = (pointer_expression "*(int **)(iVar15 + 0x14)" * (cast_expression "(int **)(iVar15 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x14)" ( (binary_expression "iVar15 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_78 = *(int **)(iVar15 + 0x18);" (assignment_expression "local_78 = *(int **)(iVar15 + 0x18)" identifier = (pointer_expression "*(int **)(iVar15 + 0x18)" * (cast_expression "(int **)(iVar15 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_e4 = (uint)*(byte *)(iVar15 + 0x2e);" (assignment_expression "local_e4 = (uint)*(byte *)(iVar15 + 0x2e)" identifier = (binary_expression "(uint)*(byte *)(iVar15 + 0x2e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar15 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2e)" ( (binary_expression "iVar15 + 0x2e" identifier + number_literal) ))))) ;) (expression_statement "bVar6 = *(byte *)(iVar15 + 0x30) & 1;" (assignment_expression "bVar6 = *(byte *)(iVar15 + 0x30) & 1" identifier = (binary_expression "*(byte *)(iVar15 + 0x30) & 1" (pointer_expression "*(byte *)(iVar15 + 0x30)" * (cast_expression "(byte *)(iVar15 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x30)" ( (binary_expression "iVar15 + 0x30" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar30 = (int *)(local_e4 - 1);" (assignment_expression "piVar30 = (int *)(local_e4 - 1)" identifier = (cast_expression "(int *)(local_e4 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e4 - 1)" ( (binary_expression "local_e4 - 1" identifier - number_literal) )))) ;) (expression_statement "iVar15 = extraout_ECX_11;" (assignment_expression "iVar15 = extraout_ECX_11" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (if_statement "if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" if (parenthesized_expression "(piVar30 == (int *)0x0)" ( (binary_expression "piVar30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" { (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;) })) (expression_statement "piVar17 = (int *)param_1[0x1d];" (assignment_expression "piVar17 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar17 = param_1;\n              }" { (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar17 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar17 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar17 + 5)" * (cast_expression "(undefined1 *)(piVar17 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 5)" ( (binary_expression "piVar17 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (expression_statement "uVar25 = uVar22 & 0x80;" (assignment_expression "uVar25 = uVar22 & 0x80" identifier = (binary_expression "uVar22 & 0x80" identifier & number_literal)) ;) (if_statement "if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" { (if_statement "if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;" if (parenthesized_expression "((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   )" ( (binary_expression "(((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" (parenthesized_expression "(((int)local_78 < 0) || (local_dc == local_78))" ( (binary_expression "((int)local_78 < 0) || (local_dc == local_78)" (parenthesized_expression "((int)local_78 < 0)" ( (binary_expression "(int)local_78 < 0" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(local_dc == local_78)" ( (binary_expression "local_dc == local_78" identifier == identifier) ))) )) || (parenthesized_expression "(iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" ( (comma_expression "iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0'" (assignment_expression "iVar15 = (int)local_78 - (int)piVar16" identifier = (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier))) , (binary_expression "*(char *)((int)piVar18 + iVar15) == '\0'" (pointer_expression "*(char *)((int)piVar18 + iVar15)" * (cast_expression "(char *)((int)piVar18 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + iVar15)" ( (binary_expression "(int)piVar18 + iVar15" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;)) (if_statement "if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" if (parenthesized_expression "(uVar25 == 0)" ( (binary_expression "uVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" { (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" identifier (argument_list "(local_fc,0,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_14;" (assignment_expression "iVar15 = extraout_ECX_14" identifier = identifier) ;) (goto_statement "goto LAB_000931ef;" goto statement_identifier ;) })) (expression_statement "local_c8 = (uint)local_a4;" (assignment_expression "local_c8 = (uint)local_a4" identifier = (cast_expression "(uint)local_a4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (if_statement "if (0 < (int)local_c8) goto LAB_00091f43;" if (parenthesized_expression "(0 < (int)local_c8)" ( (binary_expression "0 < (int)local_c8" number_literal < (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00091f43;" goto statement_identifier ;)) (goto_statement "goto LAB_00092c5d;" goto statement_identifier ;) })) (if_statement "if (uVar25 != 0) goto LAB_00091f32;" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00091f32;" goto statement_identifier ;)) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30)" identifier = (call_expression "FUN_000315c0(local_fc,0,piVar30,piVar30)" identifier (argument_list "(local_fc,0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "iVar15 = extraout_ECX_12;" (assignment_expression "iVar15 = extraout_ECX_12" identifier = identifier) ;) (if_statement "if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" { (labeled_statement "LAB_000931ef:\n                iVar13 = param_1[0xb];" statement_identifier : (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;)) (expression_statement "param_1[0xb] = iVar13 + 1;" (assignment_expression "param_1[0xb] = iVar13 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "*local_98 = iVar13 + 1;" (assignment_expression "*local_98 = iVar13 + 1" (pointer_expression "*local_98" * identifier) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15)" identifier = (call_expression "FUN_000315c0(local_fc,0,iVar15,iVar15)" identifier (argument_list "(local_fc,0,iVar15,iVar15)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_15;" (assignment_expression "iVar15 = extraout_ECX_15" identifier = identifier) ;) (expression_statement "piVar30 = local_98;" (assignment_expression "piVar30 = local_98" identifier = identifier) ;) })) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = local_8c;" (assignment_expression "iVar13 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" statement_identifier : (if_statement "if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" if (parenthesized_expression "((local_e4 != 2) && (bVar5))" ( (binary_expression "(local_e4 != 2) && (bVar5)" (parenthesized_expression "(local_e4 != 2)" ( (binary_expression "local_e4 != 2" identifier != number_literal) )) && (parenthesized_expression "(bVar5)" ( identifier ))) )) (compound_statement "{\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" { (expression_statement "uVar32 = FUN_00043f00();" (assignment_expression "uVar32 = FUN_00043f00()" identifier = (call_expression "FUN_00043f00()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = extraout_ECX_13;" (assignment_expression "iVar15 = extraout_ECX_13" identifier = identifier) ;) }))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" { (if_statement "if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }" { (expression_statement "piVar17 = piVar8;" (assignment_expression "piVar17 = piVar8" identifier = identifier) ;) (if_statement "if (piVar8[0xe] != 0) goto LAB_000932c3;" if (parenthesized_expression "(piVar8[0xe] != 0)" ( (binary_expression "piVar8[0xe] != 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) (labeled_statement "LAB_00093245:\n                  iVar27 = 0;" statement_identifier : (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" statement_identifier : (expression_statement "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" (assignment_expression "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0)" identifier = (call_expression "FUN_00017bea(0,piVar16,piVar18,0,0)" identifier (argument_list "(0,piVar16,piVar18,0,0)" ( number_literal , identifier , identifier , number_literal , number_literal )))) ;)) (labeled_statement "LAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" statement_identifier : (if_statement "if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" { (expression_statement "iVar15 = local_e8[0x1a] + -1;" (assignment_expression "iVar15 = local_e8[0x1a] + -1" identifier = (binary_expression "local_e8[0x1a] + -1" (subscript_expression "local_e8[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" if (parenthesized_expression "(iVar15 == iVar27)" ( (binary_expression "iVar15 == iVar27" identifier == identifier) )) (compound_statement "{\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }" { (expression_statement "local_e8[0x1a] = iVar27;" (assignment_expression "local_e8[0x1a] = iVar27" (subscript_expression "local_e8[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" identifier = (call_expression "CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" identifier (argument_list "((int)((ulonglong)uVar32 >> 0x20),local_e8)" ( (cast_expression "(int)((ulonglong)uVar32 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) }) (else_clause "else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" else (compound_statement "{\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" { (if_statement "if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }" if (parenthesized_expression "(-1 < iVar27)" ( (binary_expression "-1 < iVar27" number_literal < identifier) )) (compound_statement "{\n                        iVar15 = iVar27;\n                      }" { (expression_statement "iVar15 = iVar27;" (assignment_expression "iVar15 = iVar27" identifier = identifier) ;) })) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" identifier = (pointer_expression "*local_e8" * identifier)) ;) (expression_statement "local_f0 = unaff_EDI + 0x4e0b5;" (assignment_expression "local_f0 = unaff_EDI + 0x4e0b5" identifier = (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal)) ;) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" if (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" { (expression_statement "local_f0 = iVar15 * 0x14 + local_e8[0x19];" (assignment_expression "local_f0 = iVar15 * 0x14 + local_e8[0x19]" identifier = (binary_expression "iVar15 * 0x14 + local_e8[0x19]" (binary_expression "iVar15 * 0x14" identifier * number_literal) + (subscript_expression "local_e8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(local_f0 + 8) = local_e8[0x1a];" (assignment_expression "*(int *)(local_f0 + 8) = local_e8[0x1a]" (pointer_expression "*(int *)(local_f0 + 8)" * (cast_expression "(int *)(local_f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f0 + 8)" ( (binary_expression "local_f0 + 8" identifier + number_literal) )))) = (subscript_expression "local_e8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "uVar32 = CONCAT44(iVar27,local_f0);" (assignment_expression "uVar32 = CONCAT44(iVar27,local_f0)" identifier = (call_expression "CONCAT44(iVar27,local_f0)" identifier (argument_list "(iVar27,local_f0)" ( identifier , identifier )))) ;) }))) }))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" identifier = (cast_expression "(int *)uVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_e4 == 0) goto LAB_000932c3;" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" else (compound_statement "{\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" { (if_statement "if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_64)" ( (binary_expression "-1 < (int)local_64" number_literal < (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" * (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + ((int)local_64 - (int)piVar16))" ( (binary_expression "(int)piVar18 + ((int)local_64 - (int)piVar16)" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_64 - (int)piVar16)" ( (binary_expression "(int)local_64 - (int)piVar16" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_78)" ( (binary_expression "-1 < (int)local_78" number_literal < (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" * (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + ((int)local_78 - (int)piVar16))" ( (binary_expression "(int)piVar18 + ((int)local_78 - (int)piVar16)" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_78 - (int)piVar16)" ( (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" if (parenthesized_expression "((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f)))" ( (binary_expression "(local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) && (parenthesized_expression "(0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" ( (binary_expression "0 < local_90 + ((int)~(uint)local_78 >> 0x1f)" number_literal < (binary_expression "local_90 + ((int)~(uint)local_78 >> 0x1f)" identifier + (parenthesized_expression "((int)~(uint)local_78 >> 0x1f)" ( (binary_expression "(int)~(uint)local_78 >> 0x1f" (cast_expression "(int)~(uint)local_78" ( (type_descriptor "int" primitive_type) ) (unary_expression "~(uint)local_78" ~ (cast_expression "(uint)local_78" ( (type_descriptor "uint" type_identifier) ) identifier))) >> number_literal) )))) ))) )) (compound_statement "{\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" { (expression_statement "uVar33 = FUN_000315c0(0,0,iVar15,iVar15);" (assignment_expression "uVar33 = FUN_000315c0(0,0,iVar15,iVar15)" identifier = (call_expression "FUN_000315c0(0,0,iVar15,iVar15)" identifier (argument_list "(0,0,iVar15,iVar15)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" identifier = (call_expression "CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" identifier (argument_list "((int)((ulonglong)uVar33 >> 0x20),piVar8)" ( (cast_expression "(int)((ulonglong)uVar33 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar33 >> 0x20)" ( (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (expression_statement "iVar27 = (int)uVar33;" (assignment_expression "iVar27 = (int)uVar33" identifier = (cast_expression "(int)uVar33" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093247;" if (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00093247;" goto statement_identifier ;)) (goto_statement "goto LAB_0009326e;" goto statement_identifier ;) })) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093245;" if (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00093245;" goto statement_identifier ;)) }))) (expression_statement "piVar30 = local_64;" (assignment_expression "piVar30 = local_64" identifier = identifier) ;) (if_statement "if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" if (parenthesized_expression "((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78))" ( (binary_expression "(local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)" (parenthesized_expression "(local_dc != local_64)" ( (binary_expression "local_dc != local_64" identifier != identifier) )) && (parenthesized_expression "(piVar30 = local_78, local_dc != local_78)" ( (comma_expression "piVar30 = local_78, local_dc != local_78" (assignment_expression "piVar30 = local_78" identifier = identifier) , (binary_expression "local_dc != local_78" identifier != identifier)) ))) )) (compound_statement "{\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" { (expression_statement "FUN_000316b0(iVar29,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(iVar29,iVar13,local_c4,uVar34)" identifier (argument_list "(iVar29,iVar13,local_c4,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) })) (labeled_statement "LAB_00093182:\n                local_f0 = iVar29;" statement_identifier : (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" identifier = identifier) ;)) (if_statement "if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" if (parenthesized_expression "(local_e4 != 1)" ( (binary_expression "local_e4 != 1" identifier != number_literal) )) (compound_statement "{\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" { (expression_statement "iVar27 = param_1[0xe];" (assignment_expression "iVar27 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = iVar27 + -1;" (assignment_expression "param_1[0xe] = iVar27 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "local_f0 = iVar27 + -1;" (assignment_expression "local_f0 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) })) (expression_statement "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);" (assignment_expression "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier = (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier (argument_list "(iVar29,0,local_f0,local_f0)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" identifier = (cast_expression "(int *)uVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_e4 != 0) goto LAB_00093182;" if (parenthesized_expression "(local_e4 != 0)" ( (binary_expression "local_e4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00093182;" goto statement_identifier ;)) (labeled_statement "LAB_000932c3:\n              piVar30 = local_e8;" statement_identifier : (expression_statement "piVar30 = local_e8;" (assignment_expression "piVar30 = local_e8" identifier = identifier) ;)) (if_statement "if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" if (parenthesized_expression "((local_e0 != 0) || (local_100 != 0))" ( (binary_expression "(local_e0 != 0) || (local_100 != 0)" (parenthesized_expression "(local_e0 != 0)" ( (binary_expression "local_e0 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) ))) )) (compound_statement "{\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" { (expression_statement "local_f0 = param_1[0xe] + -1;" (assignment_expression "local_f0 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = local_f0;" (assignment_expression "param_1[0xe] = local_f0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar29,0,local_f0,local_f0);" (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier (argument_list "(iVar29,0,local_f0,local_f0)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar29 = local_e8[0x1a];" (assignment_expression "iVar29 = local_e8[0x1a]" identifier = (subscript_expression "local_e8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "local_8c = iVar29;" (assignment_expression "local_8c = iVar29" identifier = identifier) ;) (if_statement "if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" { (expression_statement "FUN_000315c0(iVar13,0,local_e8,local_e8);" (call_expression "FUN_000315c0(iVar13,0,local_e8,local_e8)" identifier (argument_list "(iVar13,0,local_e8,local_e8)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_000316b0(local_f0,iVar13,0);" (call_expression "FUN_000316b0(local_f0,iVar13,0)" identifier (argument_list "(local_f0,iVar13,0)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_00093326;" goto statement_identifier ;) })) (if_statement "if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" { (if_statement "if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }" { (expression_statement "FUN_000315c0(local_fc,0,iVar29,iVar29);" (call_expression "FUN_000315c0(local_fc,0,iVar29,iVar29)" identifier (argument_list "(local_fc,0,iVar29,iVar29)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar29 = FUN_000315c0(local_f0,local_fc);" (assignment_expression "iVar29 = FUN_000315c0(local_f0,local_fc)" identifier = (call_expression "FUN_000315c0(local_f0,local_fc)" identifier (argument_list "(local_f0,local_fc)" ( identifier , identifier )))) ;) }) (else_clause "else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" else (compound_statement "{\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" { (expression_statement "iVar29 = (int)local_a4;" (assignment_expression "iVar29 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar27 = iVar29;" (assignment_expression "iVar27 = iVar29" identifier = identifier) ;) (expression_statement "uVar34 = extraout_ECX_16;" (assignment_expression "uVar34 = extraout_ECX_16" identifier = identifier) ;) (for_statement "for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" for ( (assignment_expression "piVar30 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (binary_expression "(int)piVar30 < iVar29" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ; (assignment_expression "piVar30 = (int *)((int)piVar30 + 1)" identifier = (cast_expression "(int *)((int)piVar30 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar30 + 1)" ( (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" { (expression_statement "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);" (assignment_expression "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" identifier = (call_expression "FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" identifier (argument_list "(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" ( identifier , (binary_expression "(int)local_98 + (int)piVar30" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier )))) ;) (expression_statement "uVar34 = extraout_ECX_17;" (assignment_expression "uVar34 = extraout_ECX_17" identifier = identifier) ;) })) (expression_statement "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);" (assignment_expression "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34)" identifier = (call_expression "FUN_000316b0(local_f0,local_98,iVar29,uVar34)" identifier (argument_list "(local_f0,local_98,iVar29,uVar34)" ( identifier , identifier , identifier , identifier )))) ;) }))) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (if_statement "if (cVar1 == '\0') goto LAB_000924ae;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000924ae;" goto statement_identifier ;)) (goto_statement "goto LAB_0009342d;" goto statement_identifier ;) })) (expression_statement "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);" (assignment_expression "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" identifier = (call_expression "FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" identifier (argument_list "(iVar29,local_fc,piVar17,piVar17)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "FUN_000315c0(local_f0,local_fc);" (call_expression "FUN_000315c0(local_f0,local_fc)" identifier (argument_list "(local_f0,local_fc)" ( identifier , identifier ))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (labeled_statement "LAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;" statement_identifier : (if_statement "if (cVar1 != '\0') goto LAB_0009247e;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0009247e;" goto statement_identifier ;))) }) (else_clause "else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" else (compound_statement "{\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" { (if_statement "if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_a4 = 0;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" else (compound_statement "{\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" { (expression_statement "local_a4 = *(short *)(local_e0 + 0x32);" (assignment_expression "local_a4 = *(short *)(local_e0 + 0x32)" identifier = (pointer_expression "*(short *)(local_e0 + 0x32)" * (cast_expression "(short *)(local_e0 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x32)" ( (binary_expression "local_e0 + 0x32" identifier + number_literal) ))))) ;) }))) (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar27 = iVar13 + 1;" (assignment_expression "iVar27 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "local_8c = local_100 + 1 + iVar13 + local_c4;" (assignment_expression "local_8c = local_100 + 1 + iVar13 + local_c4" identifier = (binary_expression "local_100 + 1 + iVar13 + local_c4" (binary_expression "local_100 + 1 + iVar13" (binary_expression "local_100 + 1" identifier + number_literal) + identifier) + identifier)) ;) (expression_statement "param_1[0xb] = local_8c;" (assignment_expression "param_1[0xb] = local_8c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }" { (if_statement "if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar15 = 0;\n                }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" else (compound_statement "{\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "iVar15 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar15 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) (expression_statement "iVar15 = local_c4 + local_100 + iVar15;" (assignment_expression "iVar15 = local_c4 + local_100 + iVar15" identifier = (binary_expression "local_c4 + local_100 + iVar15" (binary_expression "local_c4 + local_100" identifier + identifier) + identifier)) ;) (expression_statement "piVar30 = (int *)param_1[10];" (assignment_expression "piVar30 = (int *)param_1[10]" identifier = (cast_expression "(int *)param_1[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = (int)piVar30 + 1;" (assignment_expression "iVar21 = (int)piVar30 + 1" identifier = (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "param_1[10] = iVar21;" (assignment_expression "param_1[10] = iVar21" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }" { (expression_statement "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);" (assignment_expression "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21)" identifier = (call_expression "FUN_000315c0(iVar15,0,iVar21,iVar21)" identifier (argument_list "(iVar15,0,iVar21,iVar21)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_f0 = iVar13;" (assignment_expression "local_f0 = iVar13" identifier = identifier) ;) }) (else_clause "else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" else (compound_statement "{\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" { (expression_statement "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21)" identifier (argument_list "(iVar27,iVar13 + local_c4,iVar21,iVar21)" ( identifier , (binary_expression "iVar13 + local_c4" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_f0 = FUN_000315c0(iVar15,0);" (assignment_expression "local_f0 = FUN_000315c0(iVar15,0)" identifier = (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar13 = FUN_0004b310();" (assignment_expression "iVar13 = FUN_0004b310()" identifier = (call_expression "FUN_0004b310()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" { (expression_statement "*(short *)(iVar13 + 8) = (short)iVar15;" (assignment_expression "*(short *)(iVar13 + 8) = (short)iVar15" (pointer_expression "*(short *)(iVar13 + 8)" * (cast_expression "(short *)(iVar13 + 8)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = (cast_expression "(short)iVar15" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "iVar13 = FUN_0002b210();" (assignment_expression "iVar13 = FUN_0002b210()" identifier = (call_expression "FUN_0002b210()" identifier (argument_list "()" ( )))) ;) })) }))) (if_statement "if (local_100 == 0) goto LAB_00093044;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00093044;" goto statement_identifier ;)) (expression_statement "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);" (call_expression "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13)" identifier (argument_list "(extraout_ECX,extraout_EDX,param_2,iVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_19;" (assignment_expression "iVar15 = extraout_ECX_19" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_08;" (assignment_expression "uVar25 = extraout_EDX_08" identifier = identifier) ;) (if_statement "if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }" if (parenthesized_expression "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_dc = piVar30;\n                }" { (expression_statement "local_dc = piVar30;" (assignment_expression "local_dc = piVar30" identifier = identifier) ;) })) }) (else_clause "else if (local_100 == 0) goto LAB_00091ee2;" else (if_statement "if (local_100 == 0) goto LAB_00091ee2;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091ee2;" goto statement_identifier ;)))) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" identifier = number_literal) ;) (expression_statement "piVar30 = (int *)param_1[0x1d];" (assignment_expression "piVar30 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar30 = param_1;\n              }" { (expression_statement "piVar30 = param_1;" (assignment_expression "piVar30 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar30 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar30 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar30 + 5)" * (cast_expression "(undefined1 *)(piVar30 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30 + 5)" ( (binary_expression "piVar30 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);" statement_identifier : (expression_statement "uVar32 = CONCAT44(uVar25,iVar29);" (assignment_expression "uVar32 = CONCAT44(uVar25,iVar29)" identifier = (call_expression "CONCAT44(uVar25,iVar29)" identifier (argument_list "(uVar25,iVar29)" ( identifier , identifier )))) ;)) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "piVar30 = param_4;" (assignment_expression "piVar30 = param_4" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" identifier = identifier) ;) (if_statement "if (param_4 == (int *)0x0) goto LAB_0009314f;" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009314f;" goto statement_identifier ;)) (labeled_statement "LAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" statement_identifier : (if_statement "if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" { (if_statement "if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }" { (labeled_statement "LAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" statement_identifier : (if_statement "if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    FUN_00077ad0();\n                  }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" else (compound_statement "{\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" { (labeled_statement "LAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" statement_identifier : (expression_statement "FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" (call_expression "FUN_000315c0(local_ac,local_d4,iVar29,iVar29)" identifier (argument_list "(local_ac,local_d4,iVar29,iVar29)" ( identifier , identifier , identifier , identifier ))) ;)) }))) (expression_statement "FUN_000315c0(0,0,piVar30,piVar30);" (call_expression "FUN_000315c0(0,0,piVar30,piVar30)" identifier (argument_list "(0,0,piVar30,piVar30)" ( number_literal , number_literal , identifier , identifier ))) ;) }))) }))) (labeled_statement "LAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" statement_identifier : (if_statement "if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" if (parenthesized_expression "((local_6e != '\0') || (bVar31))" ( (binary_expression "(local_6e != '\0') || (bVar31)" (parenthesized_expression "(local_6e != '\0')" ( (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }" if (parenthesized_expression "((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0))" ( (binary_expression "(iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" * (cast_expression "(byte *)(*param_1 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x1d)" ( (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                local_c8 = FUN_00017857();\n              }" { (expression_statement "local_c8 = FUN_00017857();" (assignment_expression "local_c8 = FUN_00017857()" identifier = (call_expression "FUN_00017857()" identifier (argument_list "()" ( )))) ;) })) (labeled_statement "LAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);" statement_identifier : (expression_statement "uVar25 = FUN_00096110(0,3,piVar8,param_3);" (assignment_expression "uVar25 = FUN_00096110(0,3,piVar8,param_3)" identifier = (call_expression "FUN_00096110(0,3,piVar8,param_3)" identifier (argument_list "(0,3,piVar8,param_3)" ( number_literal , number_literal , identifier , identifier )))) ;)) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" if (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" ( (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);" do (compound_statement "{\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                }" { (expression_statement "sVar7 = (short)iVar27;" (assignment_expression "sVar7 = (short)iVar27" identifier = (cast_expression "(short)iVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x20) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x20) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x20" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    sVar7 = FUN_0002a110();\n                  }" { (expression_statement "sVar7 = FUN_0002a110();" (assignment_expression "sVar7 = FUN_0002a110()" identifier = (call_expression "FUN_0002a110()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" if (parenthesized_expression "(((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))" ( (binary_expression "((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" (parenthesized_expression "((uVar25 | local_c8) == 0xffffffff)" ( (binary_expression "(uVar25 | local_c8) == 0xffffffff" (parenthesized_expression "(uVar25 | local_c8)" ( (binary_expression "uVar25 | local_c8" identifier | identifier) )) == number_literal) )) || (parenthesized_expression "(((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" ( (parenthesized_expression "((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))" ( (binary_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" (parenthesized_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))" ( (binary_expression "iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" (binary_expression "iVar27 < 0x20" identifier < number_literal) && (parenthesized_expression "(((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" ( (binary_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0" (parenthesized_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f))" ( (binary_expression "(uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)" (parenthesized_expression "(uVar25 | local_c8)" ( (binary_expression "uVar25 | local_c8" identifier | identifier) )) & (binary_expression "1 << ((byte)iVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar27 & 0x1f)" ( (binary_expression "(byte)iVar27 & 0x1f" (cast_expression "(byte)iVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) != number_literal) ))) )) || (parenthesized_expression "(iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" ( (comma_expression "iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0" (assignment_expression "iVar9 = piVar8[1] + iVar27 * 0x14" identifier = (binary_expression "piVar8[1] + iVar27 * 0x14" (subscript_expression "piVar8[1]" identifier [ number_literal ]) + (binary_expression "iVar27 * 0x14" identifier * number_literal))) , (binary_expression "(*(byte *)(iVar9 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 1)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 1" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) ))) )) (compound_statement "{\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }" { (expression_statement "FUN_00077cb0(iVar27,sVar7 + local_74);" (call_expression "FUN_00077cb0(iVar27,sVar7 + local_74)" identifier (argument_list "(iVar27,sVar7 + local_74)" ( identifier , (binary_expression "sVar7 + local_74" identifier + identifier) ))) ;) }) (else_clause "else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" else (compound_statement "{\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" { (expression_statement "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);" (call_expression "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9)" identifier (argument_list "(sVar7 + local_74,0,iVar9,iVar9)" ( (binary_expression "sVar7 + local_74" identifier + identifier) , number_literal , identifier , identifier ))) ;) }))) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < (int)piVar16)" ( (binary_expression "iVar27 < (int)piVar16" identifier < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" if (parenthesized_expression "((cVar1 == '\0') && (local_e0 == 0))" ( (binary_expression "(cVar1 == '\0') && (local_e0 == 0)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" { (expression_statement "FUN_000315c0(local_d4,0,piVar16,piVar16);" (call_expression "FUN_000315c0(local_d4,0,piVar16,piVar16)" identifier (argument_list "(local_d4,0,piVar16,piVar16)" ( identifier , number_literal , identifier , identifier ))) ;) })) }) (else_clause "else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" else (compound_statement "{\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 != 0) goto LAB_000924dd;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000924dd;" goto statement_identifier ;)) })))) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) (expression_statement "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);" (assignment_expression "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3)" identifier = (cast_expression "(int *)FUN_00096110(1,1,piVar8,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00096110(1,1,piVar8,param_3)" identifier (argument_list "(1,1,piVar8,param_3)" ( number_literal , number_literal , identifier , identifier ))))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" if (parenthesized_expression "(0 < (int)piVar18)" ( (binary_expression "0 < (int)piVar18" number_literal < (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" { (expression_statement "piVar16 = (int *)0x0;" (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar27 = local_94;" (assignment_expression "iVar27 = local_94" identifier = identifier) ;) (do_statement "do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);" do (compound_statement "{\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              }" { (if_statement "if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" if (parenthesized_expression "((int *)(int)(short)piVar8[10] == piVar16)" ( (binary_expression "(int *)(int)(short)piVar8[10] == piVar16" (cast_expression "(int *)(int)(short)piVar8[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)piVar8[10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ])))) == identifier) )) (compound_statement "{\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" { (labeled_statement "LAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);" statement_identifier : (expression_statement "FUN_000315c0(iVar27,0,piVar30);" (call_expression "FUN_000315c0(iVar27,0,piVar30)" identifier (argument_list "(iVar27,0,piVar30)" ( identifier , number_literal , identifier ))) ;)) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }) (else_clause "else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" else (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" { (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" identifier = (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" * (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (subscript_expression "piVar8[1]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" { (if_statement "if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" ( (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ])) < number_literal) )) (compound_statement "{\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }" { (expression_statement "piVar19 = piVar18;" (assignment_expression "piVar19 = piVar18" identifier = identifier) ;) (if_statement "if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;" if (parenthesized_expression "((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))" ( (binary_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" (parenthesized_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20))" ( (binary_expression "((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)" (parenthesized_expression "((local_50[0] & 1) != 0)" ( (binary_expression "(local_50[0] & 1) != 0" (parenthesized_expression "(local_50[0] & 1)" ( (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((int)piVar16 < 0x20)" ( (binary_expression "(int)piVar16 < 0x20" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "(piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" ( (comma_expression "piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (assignment_expression "piVar19 = piVar17" identifier = identifier) , (binary_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1)" ( (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1" (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f)" (cast_expression "(uint)piVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((uint)piVar16 & 0x1f)" ( (binary_expression "(uint)piVar16 & 0x1f" (cast_expression "(uint)piVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal)) ))) )) (goto_statement "goto LAB_000926a2;" goto statement_identifier ;)) (expression_statement "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);" (call_expression "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19)" identifier (argument_list "(piVar16,iVar27,piVar19,piVar19)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "piVar30 = piVar19;" (assignment_expression "piVar30 = piVar19" identifier = identifier) ;) }) (else_clause "else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" else (if_statement "if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }" { (if_statement "if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) })) }) (else_clause "else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" else (compound_statement "{\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" { (if_statement "if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        piVar18 = (int *)(int)local_a4;\n                      }" { (expression_statement "piVar18 = (int *)(int)local_a4;" (assignment_expression "piVar18 = (int *)(int)local_a4" identifier = (cast_expression "(int *)(int)local_a4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" identifier = identifier) ;) (expression_statement "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);" (call_expression "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" identifier (argument_list "(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" ( (binary_expression "puVar11[(int)piVar16] + (int)piVar18" (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ]) + (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier , identifier ))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }))))) }) (else_clause "else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" else (compound_statement "{\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" { (expression_statement "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);" (assignment_expression "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" identifier = (binary_expression "iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" (binary_expression "iVar27 + -1" identifier + number_literal) + (call_expression "(uint)((uVar2 & 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar2 & 0x20) == 0)" ( (binary_expression "(uVar2 & 0x20) == 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) == number_literal) ))))) ;) }))) }))) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)piVar16 < (int)piVar18)" ( (binary_expression "(int)piVar16 < (int)piVar18" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              FUN_00018629();\n            }" { (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" if (parenthesized_expression "((local_50[0] & 1) == 0)" ( (binary_expression "(local_50[0] & 1) == 0" (parenthesized_expression "(local_50[0] & 1)" ( (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }" { (if_statement "if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" { (labeled_statement "LAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" statement_identifier : (expression_statement "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" (assignment_expression "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" identifier = (call_expression "FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" identifier (argument_list "(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" ( identifier , identifier , identifier , identifier , identifier , (binary_expression "param_3 & 0xff" identifier & number_literal) , identifier , (pointer_expression "&local_4c" & identifier) , identifier , number_literal , identifier , identifier )))) ;)) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar31 = bVar26 != 0;" (assignment_expression "bVar31 = bVar26 != 0" identifier = (binary_expression "bVar26 != 0" identifier != number_literal)) ;) (expression_statement "piVar16 = (int *)(uint)bVar31;" (assignment_expression "piVar16 = (int *)(uint)bVar31" identifier = (cast_expression "(int *)(uint)bVar31" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar31" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" if (parenthesized_expression "((local_4c != 0) || (piVar20 = piVar16, bVar31))" ( (binary_expression "(local_4c != 0) || (piVar20 = piVar16, bVar31)" (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) || (parenthesized_expression "(piVar20 = piVar16, bVar31)" ( (comma_expression "piVar20 = piVar16, bVar31" (assignment_expression "piVar20 = piVar16" identifier = identifier) , identifier) ))) )) (compound_statement "{\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" { (if_statement "if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }" { (expression_statement "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (assignment_expression "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier = (cast_expression "(int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier (argument_list "(local_f0,local_fc,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" else (compound_statement "{\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" { (expression_statement "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);" (assignment_expression "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" identifier = (cast_expression "(int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" identifier (argument_list "(local_f0,iVar13,local_c4,extraout_ECX_06)" ( identifier , identifier , identifier , identifier ))))) ;) }))) })) (if_statement "if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" { (expression_statement "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);" (assignment_expression "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" identifier = (cast_expression "(int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001b07a(0,puVar11,piVar14,piVar20)" identifier (argument_list "(0,puVar11,piVar14,piVar20)" ( number_literal , identifier , identifier , identifier ))))) ;) })) (expression_statement "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);" (assignment_expression "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" identifier = (call_expression "FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" identifier (argument_list "(local_c0,piVar23,0xffffffff,piVar20)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "piVar20 = extraout_ECX_07;" (assignment_expression "piVar20 = extraout_ECX_07" identifier = identifier) ;) (if_statement "if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" { (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier = (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier (argument_list "(0,0,(int)uVar32,(int)uVar32)" ( number_literal , number_literal , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "piVar20 = extraout_ECX_08;" (assignment_expression "piVar20 = extraout_ECX_08" identifier = identifier) ;) })) (if_statement "if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" if (parenthesized_expression "((1 < iVar10) || (bVar31))" ( (binary_expression "(1 < iVar10) || (bVar31)" (parenthesized_expression "(1 < iVar10)" ( (binary_expression "1 < iVar10" number_literal < identifier) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" { (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier = (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier (argument_list "(0,0,(int)uVar32,(int)uVar32)" ( number_literal , number_literal , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "piVar20 = extraout_ECX_09;" (assignment_expression "piVar20 = extraout_ECX_09" identifier = identifier) ;) })) (expression_statement "piVar30 = (int *)((ulonglong)uVar32 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar32 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar32 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }" { (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                    uVar34 = 6;\n                  }" { (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" else (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" { (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" identifier = number_literal) ;) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" identifier = identifier) ;) }))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" identifier (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" else (compound_statement "{\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" { (expression_statement "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);" (assignment_expression "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" identifier = (cast_expression "(int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" identifier (argument_list "(local_d4,puVar11,piVar14,(int)uVar32)" ( identifier , identifier , identifier , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                    uVar34 = 6;\n                  }" { (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" else (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" { (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" identifier = number_literal) ;) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" identifier = identifier) ;) }))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" identifier (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (if_statement "if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" if (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" * (cast_expression "(byte *)(*param_1 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x1d)" ( (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" { (expression_statement "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);" (call_expression "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1)" identifier (argument_list "(local_fc,puVar11,piVar14,*param_1)" ( identifier , identifier , identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "piVar30 = piVar14;" (assignment_expression "piVar30 = piVar14" identifier = identifier) ;) })) }))) })) }) (else_clause "else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" else (compound_statement "{\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" { (expression_statement "piVar30 = (int *)FUN_00032360();" (assignment_expression "piVar30 = (int *)FUN_00032360()" identifier = (cast_expression "(int *)FUN_00032360()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00032360()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;" (assignment_expression "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" identifier = (call_expression "FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" identifier (argument_list "(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" { (if_statement "if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }" { (expression_statement "FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier (argument_list "(local_f0,local_fc,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" else (compound_statement "{\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" { (expression_statement "FUN_000316b0(local_f0,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,uVar34)" identifier (argument_list "(local_f0,iVar13,local_c4,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "local_ec = local_94;" (assignment_expression "local_ec = local_94" identifier = identifier) ;) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (for_statement "for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" for ( (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (binary_expression "(int)piVar16 < iVar27" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ; (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" { (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" identifier = (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" * (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (subscript_expression "piVar8[1]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" { (if_statement "if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "(((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10]))" ( (binary_expression "((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])" (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" ( (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ])) < number_literal) )) && (parenthesized_expression "(piVar16 != (int *)(int)(short)piVar8[10])" ( (binary_expression "piVar16 != (int *)(int)(short)piVar8[10]" identifier != (cast_expression "(int *)(int)(short)piVar8[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)piVar8[10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ]))))) ))) )) (compound_statement "{\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" { (expression_statement "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);" (call_expression "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27)" identifier (argument_list "(piVar16,local_ec,iVar27,iVar27)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) })) }) (else_clause "else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" else (compound_statement "{\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" { (expression_statement "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);" (assignment_expression "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0)" identifier = (binary_expression "local_ec - (uint)((uVar2 & 0x20) != 0)" identifier - (call_expression "(uint)((uVar2 & 0x20) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar2 & 0x20) != 0)" ( (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) != number_literal) ))))) ;) }))) (expression_statement "local_ec = local_ec + 1;" (assignment_expression "local_ec = local_ec + 1" identifier = (binary_expression "local_ec + 1" identifier + number_literal)) ;) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  FUN_00018629();\n                }" { (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00092d63;" goto statement_identifier ;) })) }))) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" { (expression_statement "FUN_000315c0(1,0,piVar16,piVar16);" (call_expression "FUN_000315c0(1,0,piVar16,piVar16)" identifier (argument_list "(1,0,piVar16,piVar16)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" identifier = identifier) ;) })) (expression_statement "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);" (call_expression "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" identifier (argument_list "(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" ( identifier , number_literal , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" if (parenthesized_expression "(local_e4 != 1)" ( (binary_expression "local_e4 != 1" identifier != number_literal) )) (compound_statement "{\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" { (if_statement "if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                FUN_00031430();\n                FUN_00043f00();\n              }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" else (if_statement "if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" if (parenthesized_expression "((local_e0 == 0) && (local_100 == 0))" ( (binary_expression "(local_e0 == 0) && (local_100 == 0)" (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }" { (expression_statement "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);" (call_expression "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04)" identifier (argument_list "(local_f0,0,extraout_EDX_04,extraout_EDX_04)" ( identifier , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" else (compound_statement "{\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);" (call_expression "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05)" identifier (argument_list "(local_8c,0,extraout_ECX_05,extraout_ECX_05)" ( identifier , number_literal , identifier , identifier ))) ;) }))))) })) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }" if (parenthesized_expression "((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0))" ( (binary_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)" (parenthesized_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0))" ( (binary_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)" (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(param_1[0x1e] == 0)" ( (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(param_1[0x1c] != 0)" ( (binary_expression "param_1[0x1c] != 0" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              FUN_00017af1();\n            }" { (expression_statement "FUN_00017af1();" (call_expression "FUN_00017af1()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" { (expression_statement "FUN_000315c0(1,0,local_9c,local_9c);" (call_expression "FUN_000315c0(1,0,local_9c,local_9c)" identifier (argument_list "(1,0,local_9c,local_9c)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_0002ee80();" (call_expression "FUN_0002ee80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" identifier = (pointer_expression "*local_e8" * identifier)) ;) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" if (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" { (expression_statement "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);" (call_expression "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27)" identifier (argument_list "(unaff_EDI + 0x199ff,0,iVar27,iVar27)" ( (binary_expression "unaff_EDI + 0x199ff" identifier + number_literal) , number_literal , identifier , identifier ))) ;) })) })) }) (else_clause "else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" else (compound_statement "{\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" { (expression_statement "piVar20 = (int *)param_1[2];" (assignment_expression "piVar20 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar16 = (int *)piVar8[0x10];" (assignment_expression "piVar16 = (int *)piVar8[0x10]" identifier = (cast_expression "(int *)piVar8[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x10]" identifier [ number_literal ]))) ;) (if_statement "if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" if (parenthesized_expression "(piVar16 != (int *)0x0)" ( (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" { (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (while_statement "while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }" while (parenthesized_expression "((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)))" ( (parenthesized_expression "(iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))" ( (binary_expression "iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" (binary_expression "iVar27 != *param_1" identifier != (pointer_expression "*param_1" * identifier)) && (parenthesized_expression "(piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" ( (comma_expression "piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0" (assignment_expression "piVar16 = (int *)piVar16[6]" identifier = (cast_expression "(int *)piVar16[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[6]" identifier [ number_literal ]))) , (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )) (compound_statement "{\n                iVar27 = *piVar16;\n              }" { (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) })) })) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar27 = sVar7 + 2;" (assignment_expression "iVar27 = sVar7 + 2" identifier = (binary_expression "sVar7 + 2" identifier + number_literal)) ;) (expression_statement "iVar9 = param_1[10] + 1;" (assignment_expression "iVar9 = param_1[10] + 1" identifier = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[10] = iVar9;" (assignment_expression "param_1[10] = iVar9" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);" (assignment_expression "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9)" identifier = (call_expression "FUN_000315c0(iVar27,0,iVar9,iVar9)" identifier (argument_list "(iVar27,0,iVar9,iVar9)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "iVar10 = param_1[0xb];" (assignment_expression "iVar10 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar10 + 1;" (assignment_expression "iVar9 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar27 + iVar10;" (assignment_expression "iVar29 = iVar27 + iVar10" identifier = (binary_expression "iVar27 + iVar10" identifier + identifier)) ;) (expression_statement "param_1[0xb] = iVar29;" (assignment_expression "param_1[0xb] = iVar29" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" if (parenthesized_expression "(*extraout_EDX < 2)" ( (binary_expression "*extraout_EDX < 2" (pointer_expression "*extraout_EDX" * identifier) < number_literal) )) (compound_statement "{\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }" { (expression_statement "iVar15 = iVar29 + 2;" (assignment_expression "iVar15 = iVar29 + 2" identifier = (binary_expression "iVar29 + 2" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = iVar15;" (assignment_expression "param_1[0xb] = iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = FUN_0007d3c0(0,0,4,0);" (assignment_expression "iVar13 = FUN_0007d3c0(0,0,4,0)" identifier = (call_expression "FUN_0007d3c0(0,0,4,0)" identifier (argument_list "(0,0,4,0)" ( number_literal , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (for_statement "for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" for ( (assignment_expression "iVar28 = 0" identifier = number_literal) ; (binary_expression "iVar28 < iVar21" identifier < identifier) ; (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ) (compound_statement "{\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" { (if_statement "if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "((int)puVar11[iVar28] < 0)" ( (binary_expression "(int)puVar11[iVar28] < 0" (cast_expression "(int)puVar11[iVar28]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar28]" identifier [ identifier ])) < number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" identifier (argument_list "(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" ( identifier , (binary_expression "iVar10 + 3 + iVar28" (binary_expression "iVar10 + 3" identifier + number_literal) + identifier) , identifier , identifier ))) ;) (if_statement "if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" if (parenthesized_expression "(0 < piVar20[0x1a])" ( (binary_expression "0 < piVar20[0x1a]" number_literal < (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" { (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" * (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ])) + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" else (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) })))) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }" { (expression_statement "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);" (assignment_expression "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8)" identifier = (call_expression "FUN_000315c0(iVar9,0,piVar8,piVar8)" identifier (argument_list "(iVar9,0,piVar8,piVar8)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }" { (expression_statement "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34)" identifier (argument_list "(iVar10 + 2,0,uVar34,uVar34)" ( (binary_expression "iVar10 + 2" identifier + number_literal) , number_literal , identifier , identifier ))) ;) }) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" else (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  FUN_00077ad0();\n                }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) })))) }) (else_clause "else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" else (compound_statement "{\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" { (expression_statement "iVar21 = piVar8[2];" (assignment_expression "iVar21 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" { (if_statement "if (iVar21 == 0) {\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" { comment (expression_statement "pcVar4 = (code *)invalidInstructionException();" (assignment_expression "pcVar4 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar4)();" (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;" if (parenthesized_expression "((*(byte *)(iVar21 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar21 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar21 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar21 + 0x37) & 3" (pointer_expression "*(byte *)(iVar21 + 0x37)" * (cast_expression "(byte *)(iVar21 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x37)" ( (binary_expression "iVar21 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar21 = *(int *)(iVar21 + 0x14);" (assignment_expression "iVar21 = *(int *)(iVar21 + 0x14)" identifier = (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "psVar3 = *(short **)(iVar21 + 4);" (assignment_expression "psVar3 = *(short **)(iVar21 + 4)" identifier = (pointer_expression "*(short **)(iVar21 + 4)" * (cast_expression "(short **)(iVar21 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar21 + 4)" ( (binary_expression "iVar21 + 4" identifier + number_literal) ))))) ;) (expression_statement "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);" (call_expression "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3)" identifier (argument_list "((int)*psVar3,iVar9,psVar3,psVar3)" ( (cast_expression "(int)*psVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar3" * identifier)) , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(iVar10 + 2,0);" (call_expression "FUN_000315c0(iVar10 + 2,0)" identifier (argument_list "(iVar10 + 2,0)" ( (binary_expression "iVar10 + 2" identifier + number_literal) , number_literal ))) ;) }))) (expression_statement "cVar1 = *(char *)(iVar13 + 0x2e);" (assignment_expression "cVar1 = *(char *)(iVar13 + 0x2e)" identifier = (pointer_expression "*(char *)(iVar13 + 0x2e)" * (cast_expression "(char *)(iVar13 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2e)" ( (binary_expression "iVar13 + 0x2e" identifier + number_literal) ))))) ;) (if_statement "if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" { (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  piVar8 = param_1;\n                }" { (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar8 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar8 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar8 + 5)" * (cast_expression "(undefined1 *)(piVar8 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 5)" ( (binary_expression "piVar8 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);" (call_expression "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8)" identifier (argument_list "(iVar27,iVar29 + 1,piVar8,piVar8)" ( identifier , (binary_expression "iVar29 + 1" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar29 + 1,iVar15);" (call_expression "FUN_000315c0(iVar29 + 1,iVar15)" identifier (argument_list "(iVar29 + 1,iVar15)" ( (binary_expression "iVar29 + 1" identifier + number_literal) , identifier ))) ;) (goto_statement "goto LAB_000922b8;" goto statement_identifier ;) })) (expression_statement "uVar34 = FUN_0002b350();" (assignment_expression "uVar34 = FUN_0002b350()" identifier = (call_expression "FUN_0002b350()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(0,0,uVar34,uVar34);" (call_expression "FUN_000315c0(0,0,uVar34,uVar34)" identifier (argument_list "(0,0,uVar34,uVar34)" ( number_literal , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" else (compound_statement "{\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" { (if_statement "if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_00047ba0(0);\n              }" { (expression_statement "FUN_00047ba0(0);" (call_expression "FUN_00047ba0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }) (else_clause "else {\n                FUN_00052c60(0);\n              }" else (compound_statement "{\n                FUN_00052c60(0);\n              }" { (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" identifier = (call_expression "FUN_000449c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" if (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" ( (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);" do (compound_statement "{\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" { (if_statement "if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" if (parenthesized_expression "((int)puVar11[iVar29] < 0)" ( (binary_expression "(int)puVar11[iVar29] < 0" (cast_expression "(int)puVar11[iVar29]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar29]" identifier [ identifier ])) < number_literal) )) (compound_statement "{\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }" { (expression_statement "iVar10 = FUN_00047ba0(0);" (assignment_expression "iVar10 = FUN_00047ba0(0)" identifier = (call_expression "FUN_00047ba0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" { (expression_statement "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1;" (assignment_expression "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1" (pointer_expression "*(short *)(iVar10 + 0x20)" * (cast_expression "(short *)(iVar10 + 0x20)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x20)" ( (binary_expression "iVar10 + 0x20" identifier + number_literal) )))) = (binary_expression "(short)iVar29 + 1" (cast_expression "(short)iVar29" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) })) }) (else_clause "else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" else (if_statement "if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" if (parenthesized_expression "(extraout_ECX[puVar11[iVar29] * 4 + 1] != 0)" ( (binary_expression "extraout_ECX[puVar11[iVar29] * 4 + 1] != 0" (subscript_expression "extraout_ECX[puVar11[iVar29] * 4 + 1]" identifier [ (binary_expression "puVar11[iVar29] * 4 + 1" (binary_expression "puVar11[iVar29] * 4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                    FUN_00052c60(0);\n                  }" { (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })))) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" identifier = (call_expression "FUN_000449c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }) while (parenthesized_expression "(iVar29 < (int)piVar16)" ( (binary_expression "iVar29 < (int)piVar16" identifier < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);" (call_expression "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16)" identifier (argument_list "(iVar10,extraout_EDX,param_2,piVar16)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar10 != 0) {\n                FUN_000433a0();\n              }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_000433a0();\n              }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_000922b8:\n              piVar8 = extraout_EDX;" statement_identifier : (expression_statement "piVar8 = extraout_EDX;" (assignment_expression "piVar8 = extraout_EDX" identifier = identifier) ;)) (if_statement "if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }" if (parenthesized_expression "(*extraout_EDX == 1)" ( (binary_expression "*extraout_EDX == 1" (pointer_expression "*extraout_EDX" * identifier) == number_literal) )) (compound_statement "{\n                piVar8 = (int *)FUN_00043f00();\n              }" { (expression_statement "piVar8 = (int *)FUN_00043f00();" (assignment_expression "piVar8 = (int *)FUN_00043f00()" identifier = (cast_expression "(int *)FUN_00043f00()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))))) ;) })) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (expression_statement "local_f8 = FUN_000315c0(0,0,piVar8,piVar8);" (assignment_expression "local_f8 = FUN_000315c0(0,0,piVar8,piVar8)" identifier = (call_expression "FUN_000315c0(0,0,piVar8,piVar8)" identifier (argument_list "(0,0,piVar8,piVar8)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" if (parenthesized_expression "(0 < iVar27)" ( (binary_expression "0 < iVar27" number_literal < identifier) )) (compound_statement "{\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);" do (compound_statement "{\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                }" { (expression_statement "iVar29 = iVar10 + 1;" (assignment_expression "iVar29 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);" (call_expression "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16)" identifier (argument_list "(iVar10,iVar9 + iVar10,piVar8,piVar16)" ( identifier , (binary_expression "iVar9 + iVar10" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "iVar10 = iVar29;" (assignment_expression "iVar10 = iVar29" identifier = identifier) ;) }) while (parenthesized_expression "(iVar29 != sVar7 + 2)" ( (binary_expression "iVar29 != sVar7 + 2" identifier != (binary_expression "sVar7 + 2" identifier + number_literal)) )) ;) })) }))) (expression_statement "uVar34 = FUN_0002e240();" (assignment_expression "uVar34 = FUN_0002e240()" identifier = (call_expression "FUN_0002e240()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar27,iVar9,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar27,iVar9,uVar34,uVar34)" identifier (argument_list "(iVar27,iVar9,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00032090(0xfffffff4);" (call_expression "FUN_00032090(0xfffffff4)" identifier (argument_list "(0xfffffff4)" ( number_literal ))) ;) (if_statement "if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }" if (parenthesized_expression "(param_3 == 0xb)" ( (binary_expression "param_3 == 0xb" identifier == number_literal) )) (compound_statement "{\n              param_3._0_2_ = 2;\n            }" { (expression_statement "param_3._0_2_ = 2;" (assignment_expression "param_3._0_2_ = 2" (field_expression "param_3._0_2_" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n            }" else (compound_statement "{\n            }" { }))) (if_statement "if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" if (parenthesized_expression "(0 < piVar20[0x1a])" ( (binary_expression "0 < piVar20[0x1a]" number_literal < (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" { (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" * (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ])) + number_literal) )))) = (cast_expression "(undefined2)param_3" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) })) (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar8 = param_1;\n            }" { (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar8 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar8 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar8 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar8 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x15)" ( (binary_expression "(int)piVar8 + 0x15" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }" { (expression_statement "FUN_000315c0(local_f8 + 1,0,param_1,param_1);" (call_expression "FUN_000315c0(local_f8 + 1,0,param_1,param_1)" identifier (argument_list "(local_f8 + 1,0,param_1,param_1)" ( (binary_expression "local_f8 + 1" identifier + number_literal) , number_literal , identifier , identifier ))) ;) (if_statement "if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }" if (parenthesized_expression "(local_f8 < 0)" ( (binary_expression "local_f8 < 0" identifier < number_literal) )) (compound_statement "{\n                local_f8 = piVar20[0x1a] + -1;\n              }" { (expression_statement "local_f8 = piVar20[0x1a] + -1;" (assignment_expression "local_f8 = piVar20[0x1a] + -1" identifier = (binary_expression "piVar20[0x1a] + -1" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar27 = unaff_EDI + 0x4e0b5;" (assignment_expression "iVar27 = unaff_EDI + 0x4e0b5" identifier = (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" if (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" { (expression_statement "iVar27 = local_f8 * 0x14 + piVar20[0x19];" (assignment_expression "iVar27 = local_f8 * 0x14 + piVar20[0x19]" identifier = (binary_expression "local_f8 * 0x14 + piVar20[0x19]" (binary_expression "local_f8 * 0x14" identifier * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = piVar20[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = piVar20[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);" (call_expression "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" identifier (argument_list "(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" ( number_literal , number_literal , (binary_expression "unaff_EDI + 0x4cae5" identifier + number_literal) , (binary_expression "unaff_EDI + 0x4cae5" identifier + number_literal) ))) ;) }) (else_clause "else {\n              FUN_00043f00();\n            }" else (compound_statement "{\n              FUN_00043f00();\n            }" { (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))) ;) }))) }))) })) (labeled_statement "LAB_00091be9:\n        piVar8 = local_44;" statement_identifier : (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" identifier = identifier) ;)) (if_statement "if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" if (parenthesized_expression "(local_44 != (int *)0x0)" ( (binary_expression "local_44 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" { (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "FUN_00024720();" (call_expression "FUN_00024720()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00091598;" goto statement_identifier ;) })) })) })) (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" identifier = identifier) ;) (if_statement "if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" if (parenthesized_expression "(local_44 != (int *)0x0)" ( (binary_expression "local_44 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" { (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) })) (labeled_statement "LAB_00091598:\n  FUN_00043120();" statement_identifier : (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }" if (parenthesized_expression "(extraout_ECX != (uint *)0x0)" ( (binary_expression "extraout_ECX != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_000433a0();\n  }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_2 != 0) {\n    FUN_000432e0();\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_000432e0();\n  }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00091b70:\n  iVar29 = iVar29 + 1;" statement_identifier : (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;)) (expression_statement "local_fc = local_fc + 5;" (assignment_expression "local_fc = local_fc + 5" identifier = (binary_expression "local_fc + 5" identifier + number_literal)) ;) (if_statement "if (iVar29 == iVar10) goto LAB_00091b82;" if (parenthesized_expression "(iVar29 == iVar10)" ( (binary_expression "iVar29 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_00091b82;" goto statement_identifier ;)) (goto_statement "goto LAB_000918f0;" goto statement_identifier ;) })))
(translation_unit "void __regparm1\nsqlite3Update(Parse *pParse,SrcList *pTabList,ExprList *pChanges,Expr *pWhere,int onError,\n             ExprList *pOrderBy,Expr *pLimit,Upsert *pUpsert)\n\n{\n  char *__n;\n  int *aRegIdx;\n  int iVar1;\n  u8 uVar2;\n  ushort uVar3;\n  short sVar4;\n  Select *pSVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  char cVar8;\n  byte bVar9;\n  short sVar10;\n  u16 wctrlFlags;\n  Table *pTab;\n  Trigger *pTrigger;\n  int iVar11;\n  int *aChange;\n  int *piVar12;\n  int iVar13;\n  char *pcVar14;\n  uint chngRowid;\n  int iVar15;\n  Expr *pEVar16;\n  ExprList *pList;\n  Op *pOVar17;\n  u32 uVar18;\n  int p2;\n  int iVar19;\n  Index *pIVar20;\n  int *piVar21;\n  Parse *pPVar22;\n  Vdbe *pVVar23;\n  WhereInfo *pOrderBy_00;\n  ExprList *pChanges_00;\n  int p3;\n  i16 iVar24;\n  SrcList *pSrc;\n  uint uVar25;\n  byte bVar26;\n  int iVar27;\n  int p2_00;\n  int iVar28;\n  int iVar29;\n  Table *pTVar30;\n  Table *pTVar31;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar32;\n  bool bVar33;\n  Expr *pEVar34;\n  char *zArg1;\n  u8 **dupFlags;\n  char *pcVar35;\n  u8 **ppuVar36;\n  Expr *in_stack_fffffee4;\n  int *in_stack_fffffee8;\n  sqlite3 *psVar37;\n  sqlite3 *db;\n  int local_100;\n  Table *local_fc;\n  Vdbe *local_f8;\n  Vdbe *local_f0;\n  int local_ec;\n  WhereInfo *local_e8;\n  VTable *local_e4;\n  Index *local_e0;\n  Expr *local_dc;\n  Expr *local_d8;\n  Table *local_d4;\n  uint local_c8;\n  int local_c4;\n  char *local_c0;\n  Expr *local_b8;\n  int local_ac;\n  u16 local_a4;\n  int local_9c;\n  Table *local_98;\n  int local_94;\n  u8 *local_90;\n  Table *local_8c;\n  int local_84;\n  WhereInfo *local_80;\n  Expr *local_78;\n  int local_74;\n  char local_6e;\n  Table *local_68;\n  Expr *local_64;\n  int tmask;\n  int bReplace;\n  AuthContext sContext;\n  NameContext sNC;\n  \n  __x86_get_pc_thunk_di();\n  db = pParse->db;\n  bReplace = 0;\n  sContext.zAuthContext = (char *)0x0;\n  sContext.pParse = (Parse *)0x0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;\n  pTab = sqlite3SrcListLookup(pParse,pSrc);\n  if (pTab != (Table *)0x0) {\n    local_d4 = (Table *)0xffff8000;\n    if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }\n    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);\n    pSVar5 = pTab->pSelect;\n    local_100 = 0;\n    if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }\n    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);\n    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }\n  }\n  pPVar22 = sContext.pParse;\n  if (sContext.pParse != (Parse *)0x0) {\n    sContext.pParse = (Parse *)0x0;\n    pPVar22->zAuthContext = sContext.zAuthContext;\n  }\nLAB_00091598:\n  psVar37 = db;\n  sqlite3SrcListDelete(db,pSrc);\n  if (pChanges_00 != (ExprList *)0x0) {\n    exprListDeleteNN(db,pChanges_00);\n  }\n  if (pTabList != (SrcList *)0x0) {\n    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00091b70:\n  iVar28 = iVar28 + 1;\n  local_fc = (Table *)((int)local_fc + 0x14);\n  if (iVar28 == iVar11) goto LAB_00091b82;\n  goto LAB_000918f0;\n}\n\n" (function_definition "void __regparm1\nsqlite3Update(Parse *pParse,SrcList *pTabList,ExprList *pChanges,Expr *pWhere,int onError,\n             ExprList *pOrderBy,Expr *pLimit,Upsert *pUpsert)\n\n{\n  char *__n;\n  int *aRegIdx;\n  int iVar1;\n  u8 uVar2;\n  ushort uVar3;\n  short sVar4;\n  Select *pSVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  char cVar8;\n  byte bVar9;\n  short sVar10;\n  u16 wctrlFlags;\n  Table *pTab;\n  Trigger *pTrigger;\n  int iVar11;\n  int *aChange;\n  int *piVar12;\n  int iVar13;\n  char *pcVar14;\n  uint chngRowid;\n  int iVar15;\n  Expr *pEVar16;\n  ExprList *pList;\n  Op *pOVar17;\n  u32 uVar18;\n  int p2;\n  int iVar19;\n  Index *pIVar20;\n  int *piVar21;\n  Parse *pPVar22;\n  Vdbe *pVVar23;\n  WhereInfo *pOrderBy_00;\n  ExprList *pChanges_00;\n  int p3;\n  i16 iVar24;\n  SrcList *pSrc;\n  uint uVar25;\n  byte bVar26;\n  int iVar27;\n  int p2_00;\n  int iVar28;\n  int iVar29;\n  Table *pTVar30;\n  Table *pTVar31;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar32;\n  bool bVar33;\n  Expr *pEVar34;\n  char *zArg1;\n  u8 **dupFlags;\n  char *pcVar35;\n  u8 **ppuVar36;\n  Expr *in_stack_fffffee4;\n  int *in_stack_fffffee8;\n  sqlite3 *psVar37;\n  sqlite3 *db;\n  int local_100;\n  Table *local_fc;\n  Vdbe *local_f8;\n  Vdbe *local_f0;\n  int local_ec;\n  WhereInfo *local_e8;\n  VTable *local_e4;\n  Index *local_e0;\n  Expr *local_dc;\n  Expr *local_d8;\n  Table *local_d4;\n  uint local_c8;\n  int local_c4;\n  char *local_c0;\n  Expr *local_b8;\n  int local_ac;\n  u16 local_a4;\n  int local_9c;\n  Table *local_98;\n  int local_94;\n  u8 *local_90;\n  Table *local_8c;\n  int local_84;\n  WhereInfo *local_80;\n  Expr *local_78;\n  int local_74;\n  char local_6e;\n  Table *local_68;\n  Expr *local_64;\n  int tmask;\n  int bReplace;\n  AuthContext sContext;\n  NameContext sNC;\n  \n  __x86_get_pc_thunk_di();\n  db = pParse->db;\n  bReplace = 0;\n  sContext.zAuthContext = (char *)0x0;\n  sContext.pParse = (Parse *)0x0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;\n  pTab = sqlite3SrcListLookup(pParse,pSrc);\n  if (pTab != (Table *)0x0) {\n    local_d4 = (Table *)0xffff8000;\n    if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }\n    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);\n    pSVar5 = pTab->pSelect;\n    local_100 = 0;\n    if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }\n    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);\n    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }\n  }\n  pPVar22 = sContext.pParse;\n  if (sContext.pParse != (Parse *)0x0) {\n    sContext.pParse = (Parse *)0x0;\n    pPVar22->zAuthContext = sContext.zAuthContext;\n  }\nLAB_00091598:\n  psVar37 = db;\n  sqlite3SrcListDelete(db,pSrc);\n  if (pChanges_00 != (ExprList *)0x0) {\n    exprListDeleteNN(db,pChanges_00);\n  }\n  if (pTabList != (SrcList *)0x0) {\n    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00091b70:\n  iVar28 = iVar28 + 1;\n  local_fc = (Table *)((int)local_fc + 0x14);\n  if (iVar28 == iVar11) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" primitive_type (ERROR "__regparm1" identifier) (function_declarator "sqlite3Update(Parse *pParse,SrcList *pTabList,ExprList *pChanges,Expr *pWhere,int onError,\n             ExprList *pOrderBy,Expr *pLimit,Upsert *pUpsert)" identifier (parameter_list "(Parse *pParse,SrcList *pTabList,ExprList *pChanges,Expr *pWhere,int onError,\n             ExprList *pOrderBy,Expr *pLimit,Upsert *pUpsert)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "SrcList *pTabList" type_identifier (pointer_declarator "*pTabList" * identifier)) , (parameter_declaration "ExprList *pChanges" type_identifier (pointer_declarator "*pChanges" * identifier)) , (parameter_declaration "Expr *pWhere" type_identifier (pointer_declarator "*pWhere" * identifier)) , (parameter_declaration "int onError" primitive_type identifier) , (parameter_declaration "ExprList *pOrderBy" type_identifier (pointer_declarator "*pOrderBy" * identifier)) , (parameter_declaration "Expr *pLimit" type_identifier (pointer_declarator "*pLimit" * identifier)) , (parameter_declaration "Upsert *pUpsert" type_identifier (pointer_declarator "*pUpsert" * identifier)) ))) (compound_statement "{\n  char *__n;\n  int *aRegIdx;\n  int iVar1;\n  u8 uVar2;\n  ushort uVar3;\n  short sVar4;\n  Select *pSVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  char cVar8;\n  byte bVar9;\n  short sVar10;\n  u16 wctrlFlags;\n  Table *pTab;\n  Trigger *pTrigger;\n  int iVar11;\n  int *aChange;\n  int *piVar12;\n  int iVar13;\n  char *pcVar14;\n  uint chngRowid;\n  int iVar15;\n  Expr *pEVar16;\n  ExprList *pList;\n  Op *pOVar17;\n  u32 uVar18;\n  int p2;\n  int iVar19;\n  Index *pIVar20;\n  int *piVar21;\n  Parse *pPVar22;\n  Vdbe *pVVar23;\n  WhereInfo *pOrderBy_00;\n  ExprList *pChanges_00;\n  int p3;\n  i16 iVar24;\n  SrcList *pSrc;\n  uint uVar25;\n  byte bVar26;\n  int iVar27;\n  int p2_00;\n  int iVar28;\n  int iVar29;\n  Table *pTVar30;\n  Table *pTVar31;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar32;\n  bool bVar33;\n  Expr *pEVar34;\n  char *zArg1;\n  u8 **dupFlags;\n  char *pcVar35;\n  u8 **ppuVar36;\n  Expr *in_stack_fffffee4;\n  int *in_stack_fffffee8;\n  sqlite3 *psVar37;\n  sqlite3 *db;\n  int local_100;\n  Table *local_fc;\n  Vdbe *local_f8;\n  Vdbe *local_f0;\n  int local_ec;\n  WhereInfo *local_e8;\n  VTable *local_e4;\n  Index *local_e0;\n  Expr *local_dc;\n  Expr *local_d8;\n  Table *local_d4;\n  uint local_c8;\n  int local_c4;\n  char *local_c0;\n  Expr *local_b8;\n  int local_ac;\n  u16 local_a4;\n  int local_9c;\n  Table *local_98;\n  int local_94;\n  u8 *local_90;\n  Table *local_8c;\n  int local_84;\n  WhereInfo *local_80;\n  Expr *local_78;\n  int local_74;\n  char local_6e;\n  Table *local_68;\n  Expr *local_64;\n  int tmask;\n  int bReplace;\n  AuthContext sContext;\n  NameContext sNC;\n  \n  __x86_get_pc_thunk_di();\n  db = pParse->db;\n  bReplace = 0;\n  sContext.zAuthContext = (char *)0x0;\n  sContext.pParse = (Parse *)0x0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;\n  pTab = sqlite3SrcListLookup(pParse,pSrc);\n  if (pTab != (Table *)0x0) {\n    local_d4 = (Table *)0xffff8000;\n    if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }\n    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);\n    pSVar5 = pTab->pSelect;\n    local_100 = 0;\n    if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }\n    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);\n    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }\n  }\n  pPVar22 = sContext.pParse;\n  if (sContext.pParse != (Parse *)0x0) {\n    sContext.pParse = (Parse *)0x0;\n    pPVar22->zAuthContext = sContext.zAuthContext;\n  }\nLAB_00091598:\n  psVar37 = db;\n  sqlite3SrcListDelete(db,pSrc);\n  if (pChanges_00 != (ExprList *)0x0) {\n    exprListDeleteNN(db,pChanges_00);\n  }\n  if (pTabList != (SrcList *)0x0) {\n    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_00091b70:\n  iVar28 = iVar28 + 1;\n  local_fc = (Table *)((int)local_fc + 0x14);\n  if (iVar28 == iVar11) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" { (declaration "char *__n;" primitive_type (pointer_declarator "*__n" * identifier) ;) (declaration "int *aRegIdx;" primitive_type (pointer_declarator "*aRegIdx" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "u8 uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "short sVar4;" (sized_type_specifier "short" short) identifier ;) (declaration "Select *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "sqlite3 *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) identifier ;) (declaration "u16 wctrlFlags;" type_identifier identifier ;) (declaration "Table *pTab;" type_identifier (pointer_declarator "*pTab" * identifier) ;) (declaration "Trigger *pTrigger;" type_identifier (pointer_declarator "*pTrigger" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *aChange;" primitive_type (pointer_declarator "*aChange" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint chngRowid;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "Expr *pEVar16;" type_identifier (pointer_declarator "*pEVar16" * identifier) ;) (declaration "ExprList *pList;" type_identifier (pointer_declarator "*pList" * identifier) ;) (declaration "Op *pOVar17;" type_identifier (pointer_declarator "*pOVar17" * identifier) ;) (declaration "u32 uVar18;" type_identifier identifier ;) (declaration "int p2;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "Index *pIVar20;" type_identifier (pointer_declarator "*pIVar20" * identifier) ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "Parse *pPVar22;" type_identifier (pointer_declarator "*pPVar22" * identifier) ;) (declaration "Vdbe *pVVar23;" type_identifier (pointer_declarator "*pVVar23" * identifier) ;) (declaration "WhereInfo *pOrderBy_00;" type_identifier (pointer_declarator "*pOrderBy_00" * identifier) ;) (declaration "ExprList *pChanges_00;" type_identifier (pointer_declarator "*pChanges_00" * identifier) ;) (declaration "int p3;" primitive_type identifier ;) (declaration "i16 iVar24;" type_identifier identifier ;) (declaration "SrcList *pSrc;" type_identifier (pointer_declarator "*pSrc" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int p2_00;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "Table *pTVar30;" type_identifier (pointer_declarator "*pTVar30" * identifier) ;) (declaration "Table *pTVar31;" type_identifier (pointer_declarator "*pTVar31" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar32;" primitive_type identifier ;) (declaration "bool bVar33;" primitive_type identifier ;) (declaration "Expr *pEVar34;" type_identifier (pointer_declarator "*pEVar34" * identifier) ;) (declaration "char *zArg1;" primitive_type (pointer_declarator "*zArg1" * identifier) ;) (declaration "u8 **dupFlags;" type_identifier (pointer_declarator "**dupFlags" * (pointer_declarator "*dupFlags" * identifier)) ;) (declaration "char *pcVar35;" primitive_type (pointer_declarator "*pcVar35" * identifier) ;) (declaration "u8 **ppuVar36;" type_identifier (pointer_declarator "**ppuVar36" * (pointer_declarator "*ppuVar36" * identifier)) ;) (declaration "Expr *in_stack_fffffee4;" type_identifier (pointer_declarator "*in_stack_fffffee4" * identifier) ;) (declaration "int *in_stack_fffffee8;" primitive_type (pointer_declarator "*in_stack_fffffee8" * identifier) ;) (declaration "sqlite3 *psVar37;" type_identifier (pointer_declarator "*psVar37" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "Table *local_fc;" type_identifier (pointer_declarator "*local_fc" * identifier) ;) (declaration "Vdbe *local_f8;" type_identifier (pointer_declarator "*local_f8" * identifier) ;) (declaration "Vdbe *local_f0;" type_identifier (pointer_declarator "*local_f0" * identifier) ;) (declaration "int local_ec;" primitive_type identifier ;) (declaration "WhereInfo *local_e8;" type_identifier (pointer_declarator "*local_e8" * identifier) ;) (declaration "VTable *local_e4;" type_identifier (pointer_declarator "*local_e4" * identifier) ;) (declaration "Index *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "Expr *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "Expr *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "Table *local_d4;" type_identifier (pointer_declarator "*local_d4" * identifier) ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "char *local_c0;" primitive_type (pointer_declarator "*local_c0" * identifier) ;) (declaration "Expr *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "u16 local_a4;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "Table *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "u8 *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "Table *local_8c;" type_identifier (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "WhereInfo *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "Expr *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "char local_6e;" primitive_type identifier ;) (declaration "Table *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "Expr *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "int tmask;" primitive_type identifier ;) (declaration "int bReplace;" primitive_type identifier ;) (declaration "AuthContext sContext;" type_identifier identifier ;) (declaration "NameContext sNC;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "bReplace = 0;" (assignment_expression "bReplace = 0" identifier = number_literal) ;) (expression_statement "sContext.zAuthContext = (char *)0x0;" (assignment_expression "sContext.zAuthContext = (char *)0x0" (field_expression "sContext.zAuthContext" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sContext.pParse = (Parse *)0x0;" (assignment_expression "sContext.pParse = (Parse *)0x0" (field_expression "sContext.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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) ))))) ;) (if_statement "if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;" if (parenthesized_expression "((pParse->nErr != 0) || (db->mallocFailed != '\0'))" ( (binary_expression "(pParse->nErr != 0) || (db->mallocFailed != '\0')" (parenthesized_expression "(pParse->nErr != 0)" ( (binary_expression "pParse->nErr != 0" (field_expression "pParse->nErr" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(db->mallocFailed != '\0')" ( (binary_expression "db->mallocFailed != '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00091598;" goto statement_identifier ;)) (expression_statement "pTab = sqlite3SrcListLookup(pParse,pSrc);" (assignment_expression "pTab = sqlite3SrcListLookup(pParse,pSrc)" identifier = (call_expression "sqlite3SrcListLookup(pParse,pSrc)" identifier (argument_list "(pParse,pSrc)" ( identifier , identifier )))) ;) (if_statement "if (pTab != (Table *)0x0) {\n    local_d4 = (Table *)0xffff8000;\n    if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }\n    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);\n    pSVar5 = pTab->pSelect;\n    local_100 = 0;\n    if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }\n    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);\n    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }\n  }" if (parenthesized_expression "(pTab != (Table *)0x0)" ( (binary_expression "pTab != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_d4 = (Table *)0xffff8000;\n    if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }\n    pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);\n    pSVar5 = pTab->pSelect;\n    local_100 = 0;\n    if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }\n    iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);\n    if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }\n  }" { (expression_statement "local_d4 = (Table *)0xffff8000;" (assignment_expression "local_d4 = (Table *)0xffff8000" identifier = (cast_expression "(Table *)0xffff8000" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pTab->pSchema != (Schema *)0x0) {\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }" if (parenthesized_expression "(pTab->pSchema != (Schema *)0x0)" ( (binary_expression "pTab->pSchema != (Schema *)0x0" (field_expression "pTab->pSchema" identifier -> field_identifier) != (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);\n    }" { (expression_statement "local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema);" (assignment_expression "local_d4 = (Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema)" identifier = (cast_expression "(Table *)sqlite3SchemaToIndex(pParse->db,pTab->pSchema)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3SchemaToIndex(pParse->db,pTab->pSchema)" identifier (argument_list "(pParse->db,pTab->pSchema)" ( (field_expression "pParse->db" identifier -> field_identifier) , (field_expression "pTab->pSchema" identifier -> field_identifier) ))))) ;) })) (expression_statement "pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask);" (assignment_expression "pTrigger = sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask)" identifier = (call_expression "sqlite3TriggersExist(pParse,pTab,0x7f,pChanges_00,&tmask)" identifier (argument_list "(pParse,pTab,0x7f,pChanges_00,&tmask)" ( identifier , identifier , number_literal , identifier , (pointer_expression "&tmask" & identifier) )))) ;) (expression_statement "pSVar5 = pTab->pSelect;" (assignment_expression "pSVar5 = pTab->pSelect" identifier = (field_expression "pTab->pSelect" identifier -> field_identifier)) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if (1 < pSrc->nSrc) {\n      local_100 = pChanges_00->nExpr;\n    }" if (parenthesized_expression "(1 < pSrc->nSrc)" ( (binary_expression "1 < pSrc->nSrc" number_literal < (field_expression "pSrc->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n      local_100 = pChanges_00->nExpr;\n    }" { (expression_statement "local_100 = pChanges_00->nExpr;" (assignment_expression "local_100 = pChanges_00->nExpr" identifier = (field_expression "pChanges_00->nExpr" identifier -> field_identifier)) ;) })) (expression_statement "iVar11 = sqlite3ViewGetColumnNames(pParse,pTab);" (assignment_expression "iVar11 = sqlite3ViewGetColumnNames(pParse,pTab)" identifier = (call_expression "sqlite3ViewGetColumnNames(pParse,pTab)" identifier (argument_list "(pParse,pTab)" ( identifier , identifier )))) ;) (if_statement "if ((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)) {\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }" if (parenthesized_expression "((iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0))" ( (binary_expression "(iVar11 == 0) && (iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)" (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0)" ( (comma_expression "iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask), iVar11 == 0" (assignment_expression "iVar11 = sqlite3IsReadOnly(pParse,pTab,tmask)" identifier = (call_expression "sqlite3IsReadOnly(pParse,pTab,tmask)" identifier (argument_list "(pParse,pTab,tmask)" ( identifier , identifier , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      pEVar34 = (Expr *)pParse->nTab;\n      local_c0 = &pEVar34->affExpr;\n      uVar18 = pTab->tabFlags;\n      pParse->nTab = (int)local_c0;\n      pIVar20 = pTab->pIndex;\n      local_dc = pEVar34;\n      if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }\n      if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }\n      pSrc->a[0].iCursor = (int)local_dc;\n      pcVar35 = (char *)0x91792;\n      aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));\n      if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }\n    }" { (expression_statement "pEVar34 = (Expr *)pParse->nTab;" (assignment_expression "pEVar34 = (Expr *)pParse->nTab" identifier = (cast_expression "(Expr *)pParse->nTab" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nTab" identifier -> field_identifier))) ;) (expression_statement "local_c0 = &pEVar34->affExpr;" (assignment_expression "local_c0 = &pEVar34->affExpr" identifier = (pointer_expression "&pEVar34->affExpr" & (field_expression "pEVar34->affExpr" identifier -> field_identifier))) ;) (expression_statement "uVar18 = pTab->tabFlags;" (assignment_expression "uVar18 = pTab->tabFlags" identifier = (field_expression "pTab->tabFlags" identifier -> field_identifier)) ;) (expression_statement "pParse->nTab = (int)local_c0;" (assignment_expression "pParse->nTab = (int)local_c0" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pIVar20 = pTab->pIndex;" (assignment_expression "pIVar20 = pTab->pIndex" identifier = (field_expression "pTab->pIndex" identifier -> field_identifier)) ;) (expression_statement "local_dc = pEVar34;" (assignment_expression "local_dc = pEVar34" identifier = identifier) ;) (if_statement "if ((uVar18 & 0x80) == 0) {\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }\n      else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }" if (parenthesized_expression "((uVar18 & 0x80) == 0)" ( (binary_expression "(uVar18 & 0x80) == 0" (parenthesized_expression "(uVar18 & 0x80)" ( (binary_expression "uVar18 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        local_e0 = (Index *)0x0;\n        if (pIVar20 == (Index *)0x0) goto LAB_00091c69;\nLAB_00091707:\n        pEVar16 = (Expr *)local_c0;\n        do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);\n        pParse->nTab = (int)pEVar16;\n      }" { (expression_statement "local_e0 = (Index *)0x0;" (assignment_expression "local_e0 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pIVar20 == (Index *)0x0) goto LAB_00091c69;" if (parenthesized_expression "(pIVar20 == (Index *)0x0)" ( (binary_expression "pIVar20 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00091c69;" goto statement_identifier ;)) (labeled_statement "LAB_00091707:\n        pEVar16 = (Expr *)local_c0;" statement_identifier : (expression_statement "pEVar16 = (Expr *)local_c0;" (assignment_expression "pEVar16 = (Expr *)local_c0" identifier = (cast_expression "(Expr *)local_c0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (do_statement "do {\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        } while (pIVar20 != (Index *)0x0);" do (compound_statement "{\n          bVar32 = local_e0 == pIVar20;\n          pIVar20 = pIVar20->pNext;\n          if (bVar32) {\n            local_dc = pEVar16;\n          }\n          pEVar16 = (Expr *)&pEVar16->affExpr;\n          local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);\n        }" { (expression_statement "bVar32 = local_e0 == pIVar20;" (assignment_expression "bVar32 = local_e0 == pIVar20" identifier = (binary_expression "local_e0 == pIVar20" identifier == identifier)) ;) (expression_statement "pIVar20 = pIVar20->pNext;" (assignment_expression "pIVar20 = pIVar20->pNext" identifier = (field_expression "pIVar20->pNext" identifier -> field_identifier)) ;) (if_statement "if (bVar32) {\n            local_dc = pEVar16;\n          }" if (parenthesized_expression "(bVar32)" ( identifier )) (compound_statement "{\n            local_dc = pEVar16;\n          }" { (expression_statement "local_dc = pEVar16;" (assignment_expression "local_dc = pEVar16" identifier = identifier) ;) })) (expression_statement "pEVar16 = (Expr *)&pEVar16->affExpr;" (assignment_expression "pEVar16 = (Expr *)&pEVar16->affExpr" identifier = (cast_expression "(Expr *)&pEVar16->affExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar16->affExpr" & (field_expression "pEVar16->affExpr" identifier -> field_identifier)))) ;) (expression_statement "local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34);" (assignment_expression "local_90 = (u8 *)((int)pEVar16 + ~(uint)pEVar34)" identifier = (cast_expression "(u8 *)((int)pEVar16 + ~(uint)pEVar34)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pEVar16 + ~(uint)pEVar34)" ( (binary_expression "(int)pEVar16 + ~(uint)pEVar34" (cast_expression "(int)pEVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (unary_expression "~(uint)pEVar34" ~ (cast_expression "(uint)pEVar34" ( (type_descriptor "uint" type_identifier) ) identifier))) )))) ;) }) while (parenthesized_expression "(pIVar20 != (Index *)0x0)" ( (binary_expression "pIVar20 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pParse->nTab = (int)pEVar16;" (assignment_expression "pParse->nTab = (int)pEVar16" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)pEVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }" else (compound_statement "{\n        if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = (Index *)0x0;\n        local_90 = (u8 *)0x0;\n      }" { (if_statement "if (pIVar20 != (Index *)0x0) {\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }" if (parenthesized_expression "(pIVar20 != (Index *)0x0)" ( (binary_expression "pIVar20 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          bVar26 = pIVar20->field_0x37;\n          local_e0 = pIVar20;\n          while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }\n          goto LAB_00091707;\n        }" { (expression_statement "bVar26 = pIVar20->field_0x37;" (assignment_expression "bVar26 = pIVar20->field_0x37" identifier = (field_expression "pIVar20->field_0x37" identifier -> field_identifier)) ;) (expression_statement "local_e0 = pIVar20;" (assignment_expression "local_e0 = pIVar20" identifier = identifier) ;) (while_statement "while (((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))) {\n            bVar26 = local_e0->field_0x37;\n          }" while (parenthesized_expression "(((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0)))" ( (parenthesized_expression "((bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0))" ( (binary_expression "(bVar26 & 3) != 2 && (local_e0 = local_e0->pNext, local_e0 != (Index *)0x0)" (binary_expression "(bVar26 & 3) != 2" (parenthesized_expression "(bVar26 & 3)" ( (binary_expression "bVar26 & 3" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(local_e0 = local_e0->pNext, local_e0 != (Index *)0x0)" ( (comma_expression "local_e0 = local_e0->pNext, local_e0 != (Index *)0x0" (assignment_expression "local_e0 = local_e0->pNext" identifier = (field_expression "local_e0->pNext" identifier -> field_identifier)) , (binary_expression "local_e0 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )) (compound_statement "{\n            bVar26 = local_e0->field_0x37;\n          }" { (expression_statement "bVar26 = local_e0->field_0x37;" (assignment_expression "bVar26 = local_e0->field_0x37" identifier = (field_expression "local_e0->field_0x37" identifier -> field_identifier)) ;) })) (goto_statement "goto LAB_00091707;" goto statement_identifier ;) })) (labeled_statement "LAB_00091c69:\n        local_e0 = (Index *)0x0;" statement_identifier : (expression_statement "local_e0 = (Index *)0x0;" (assignment_expression "local_e0 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_90 = (u8 *)0x0;" (assignment_expression "local_90 = (u8 *)0x0" identifier = (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (pWhere != (Expr *)0x0) {\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }" if (parenthesized_expression "(pWhere != (Expr *)0x0)" ( (binary_expression "pWhere != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_dc = (Expr *)pWhere->iTable;\n        local_c0 = *(char **)&pWhere->iColumn;\n        pParse->nTab = (int)pEVar34;\n      }" { (expression_statement "local_dc = (Expr *)pWhere->iTable;" (assignment_expression "local_dc = (Expr *)pWhere->iTable" identifier = (cast_expression "(Expr *)pWhere->iTable" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWhere->iTable" identifier -> field_identifier))) ;) (expression_statement "local_c0 = *(char **)&pWhere->iColumn;" (assignment_expression "local_c0 = *(char **)&pWhere->iColumn" identifier = (pointer_expression "*(char **)&pWhere->iColumn" * (cast_expression "(char **)&pWhere->iColumn" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pWhere->iColumn" & (field_expression "pWhere->iColumn" identifier -> field_identifier))))) ;) (expression_statement "pParse->nTab = (int)pEVar34;" (assignment_expression "pParse->nTab = (int)pEVar34" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)pEVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "pSrc->a[0].iCursor = (int)local_dc;" (assignment_expression "pSrc->a[0].iCursor = (int)local_dc" (field_expression "pSrc->a[0].iCursor" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar35 = (char *)0x91792;" (assignment_expression "pcVar35 = (char *)0x91792" identifier = (cast_expression "(char *)0x91792" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4));" (assignment_expression "aChange = (int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4))" identifier = (cast_expression "(int *)sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocRawNN(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4))" identifier (argument_list "(db,CONCAT44(in_stack_fffffee8,in_stack_fffffee4))" ( identifier , (call_expression "CONCAT44(in_stack_fffffee8,in_stack_fffffee4)" identifier (argument_list "(in_stack_fffffee8,in_stack_fffffee4)" ( identifier , identifier ))) ))))) ;) (if_statement "if (aChange != (int *)0x0) {\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }" if (parenthesized_expression "(aChange != (int *)0x0)" ( (binary_expression "aChange != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        aRegIdx = aChange + pTab->nCol;\n        __n = (char *)(local_90 + 1);\n        piVar21 = aRegIdx + (int)__n;\n        zArg1 = __n;\n        memset(piVar21,1,(size_t)__n);\n        local_90[(int)piVar21 + 1] = '\0';\n        sVar10 = pTab->nCol;\n        if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }\n        sNC.pNext = (NameContext *)0x0;\n        sNC.nRef = 0;\n        sNC.nErr = 0;\n        sNC.pWinSelect = (Select *)0x0;\n        sNC.ncFlags = 0x200;\n        sNC.uNC.pEList = (ExprList *)pWhere;\n        local_e8 = (WhereInfo *)pParse->pVdbe;\n        sNC.pParse = pParse;\n        sNC.pSrcList = pSrc;\n        if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }\nLAB_00091be9:\n        pPVar22 = sContext.pParse;\n        if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }\n        sqlite3DbFreeNN(db,aChange);\n        goto LAB_00091598;\n      }" { (expression_statement "aRegIdx = aChange + pTab->nCol;" (assignment_expression "aRegIdx = aChange + pTab->nCol" identifier = (binary_expression "aChange + pTab->nCol" identifier + (field_expression "pTab->nCol" identifier -> field_identifier))) ;) (expression_statement "__n = (char *)(local_90 + 1);" (assignment_expression "__n = (char *)(local_90 + 1)" identifier = (cast_expression "(char *)(local_90 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_90 + 1)" ( (binary_expression "local_90 + 1" identifier + number_literal) )))) ;) (expression_statement "piVar21 = aRegIdx + (int)__n;" (assignment_expression "piVar21 = aRegIdx + (int)__n" identifier = (binary_expression "aRegIdx + (int)__n" identifier + (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "zArg1 = __n;" (assignment_expression "zArg1 = __n" identifier = identifier) ;) (expression_statement "memset(piVar21,1,(size_t)__n);" (call_expression "memset(piVar21,1,(size_t)__n)" identifier (argument_list "(piVar21,1,(size_t)__n)" ( identifier , number_literal , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "local_90[(int)piVar21 + 1] = '\0';" (assignment_expression "local_90[(int)piVar21 + 1] = '\0'" (subscript_expression "local_90[(int)piVar21 + 1]" identifier [ (binary_expression "(int)piVar21 + 1" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sVar10 = pTab->nCol;" (assignment_expression "sVar10 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (if_statement "if (0 < sVar10) {\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }" if (parenthesized_expression "(0 < sVar10)" ( (binary_expression "0 < sVar10" number_literal < identifier) )) (compound_statement "{\n          piVar12 = aChange;\n          do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);\n        }" { (expression_statement "piVar12 = aChange;" (assignment_expression "piVar12 = aChange" identifier = identifier) ;) (do_statement "do {\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          } while (aChange + sVar10 != piVar12);" do (compound_statement "{\n            *piVar12 = -1;\n            piVar12 = piVar12 + 1;\n          }" { (expression_statement "*piVar12 = -1;" (assignment_expression "*piVar12 = -1" (pointer_expression "*piVar12" * identifier) = number_literal) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(aChange + sVar10 != piVar12)" ( (binary_expression "aChange + sVar10 != piVar12" (binary_expression "aChange + sVar10" identifier + identifier) != identifier) )) ;) })) (expression_statement "sNC.pNext = (NameContext *)0x0;" (assignment_expression "sNC.pNext = (NameContext *)0x0" (field_expression "sNC.pNext" identifier . field_identifier) = (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.nRef = 0;" (assignment_expression "sNC.nRef = 0" (field_expression "sNC.nRef" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.nErr = 0;" (assignment_expression "sNC.nErr = 0" (field_expression "sNC.nErr" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.pWinSelect = (Select *)0x0;" (assignment_expression "sNC.pWinSelect = (Select *)0x0" (field_expression "sNC.pWinSelect" identifier . field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.ncFlags = 0x200;" (assignment_expression "sNC.ncFlags = 0x200" (field_expression "sNC.ncFlags" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.uNC.pEList = (ExprList *)pWhere;" (assignment_expression "sNC.uNC.pEList = (ExprList *)pWhere" (field_expression "sNC.uNC.pEList" (field_expression "sNC.uNC" identifier . field_identifier) . field_identifier) = (cast_expression "(ExprList *)pWhere" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_e8 = (WhereInfo *)pParse->pVdbe;" (assignment_expression "local_e8 = (WhereInfo *)pParse->pVdbe" identifier = (cast_expression "(WhereInfo *)pParse->pVdbe" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->pVdbe" identifier -> field_identifier))) ;) (expression_statement "sNC.pParse = pParse;" (assignment_expression "sNC.pParse = pParse" (field_expression "sNC.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "sNC.pSrcList = pSrc;" (assignment_expression "sNC.pSrcList = pSrc" (field_expression "sNC.pSrcList" identifier . field_identifier) = identifier) ;) (if_statement "if (local_e8 == (WhereInfo *)0x0) {\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }\n        else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }" if (parenthesized_expression "(local_e8 == (WhereInfo *)0x0)" ( (binary_expression "local_e8 == (WhereInfo *)0x0" identifier == (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar35 = (char *)0x92007;\n          local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);\n          if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;\n        }" { (expression_statement "pcVar35 = (char *)0x92007;" (assignment_expression "pcVar35 = (char *)0x92007" identifier = (cast_expression "(char *)0x92007" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse);" (assignment_expression "local_e8 = (WhereInfo *)sqlite3GetVdbe(pParse)" identifier = (cast_expression "(WhereInfo *)sqlite3GetVdbe(pParse)" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier ))))) ;) (if_statement "if (local_e8 != (WhereInfo *)0x0) goto LAB_00091862;" if (parenthesized_expression "(local_e8 != (WhereInfo *)0x0)" ( (binary_expression "local_e8 != (WhereInfo *)0x0" identifier != (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00091862;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }" else (compound_statement "{\nLAB_00091862:\n          cVar8 = '\0';\n          if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }\n          bVar26 = local_6e + cVar8;\n          if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }\n          uVar25 = (uint)(pTab->nModuleArg != 0);\n          *(uint *)&pSrc->a[0].colUsed = -uVar25;\n          chngRowid = (uint)bVar26;\n          *(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);\n          iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);\n          if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }\n          pIVar20 = pTab->pIndex;\n          local_98 = (Table *)aRegIdx;\n          if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }\n          iVar28 = pParse->nMem + 1;\n          pParse->nMem = iVar28;\n          *(int *)local_98 = iVar28;\n          if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }\n          if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar32 = pTrigger != (Trigger *)0x0;\n          bVar33 = iVar11 != 0;\n          sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);\n          iVar28 = pTab->nModuleArg;\n          if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }\n          if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }\n          if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }\n        }" { (labeled_statement "LAB_00091862:\n          cVar8 = '\0';" statement_identifier : (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (if_statement "if (pChanges_00->nExpr < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }" if (parenthesized_expression "(pChanges_00->nExpr < 1)" ( (binary_expression "pChanges_00->nExpr < 1" (field_expression "pChanges_00->nExpr" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = (Expr *)0x0;" (assignment_expression "local_b8 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }" else (compound_statement "{\n            local_6e = '\0';\n            local_e4 = (VTable *)0x0;\n            local_ac = -1;\n            local_b8 = (Expr *)0x0;\n            local_d8 = (Expr *)pChanges_00->a;\n            do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_e4 = (VTable *)0x0;" (assignment_expression "local_e4 = (VTable *)0x0" identifier = (cast_expression "(VTable *)0x0" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = (Expr *)0x0;" (assignment_expression "local_b8 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d8 = (Expr *)pChanges_00->a;" (assignment_expression "local_d8 = (Expr *)pChanges_00->a" identifier = (cast_expression "(Expr *)pChanges_00->a" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pChanges_00->a" identifier -> field_identifier))) ;) (do_statement "do {\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            } while ((int)local_e4 < pChanges_00->nExpr);" do (compound_statement "{\n              if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }\n              iVar11 = (int)pTab->nCol;\n              pcVar14 = (char *)local_d8->flags;\n              if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }\n              pcVar35 = (char *)0x91b95;\n              iVar11 = sqlite3IsRowid(pcVar14);\n              if (iVar11 == 0) goto LAB_00092075;\n              iVar28 = -1;\n              cVar8 = '\x01';\n              local_b8 = *(Expr **)&local_d8->op;\n              pcVar14 = db->aDb[(int)local_d4].zDbSName;\n              local_ac = (int)local_e4;\n              pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);\nLAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );\n              if (iVar11 == 1) goto LAB_00091be9;\n              if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }\n              local_e4 = (VTable *)((int)local_e4 + 1);\n              local_d8 = (Expr *)((int)local_d8 + 0x10);\n            }" { (if_statement "if (local_100 == 0) {\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                pcVar35 = (char *)0x91be1;\n                iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);\n                if (iVar11 != 0) goto LAB_00091be9;\n              }" { (expression_statement "pcVar35 = (char *)0x91be1;" (assignment_expression "pcVar35 = (char *)0x91be1" identifier = (cast_expression "(char *)0x91be1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op);" (assignment_expression "iVar11 = sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,*(Expr **)&local_d8->op)" identifier (argument_list "(&sNC,*(Expr **)&local_d8->op)" ( (pointer_expression "&sNC" & identifier) , (pointer_expression "*(Expr **)&local_d8->op" * (cast_expression "(Expr **)&local_d8->op" ( (type_descriptor "Expr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_d8->op" & (field_expression "local_d8->op" identifier -> field_identifier)))) )))) ;) (if_statement "if (iVar11 != 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) })) (expression_statement "iVar11 = (int)pTab->nCol;" (assignment_expression "iVar11 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) (expression_statement "pcVar14 = (char *)local_d8->flags;" (assignment_expression "pcVar14 = (char *)local_d8->flags" identifier = (cast_expression "(char *)local_d8->flags" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "local_d8->flags" identifier -> field_identifier))) ;) (if_statement "if (0 < iVar11) {\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                iVar28 = 0;\n                local_fc = (Table *)pTab->aCol;\nLAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;\n                iVar13 = 0;\n                do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "local_fc = (Table *)pTab->aCol;" (assignment_expression "local_fc = (Table *)pTab->aCol" identifier = (cast_expression "(Table *)pTab->aCol" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTab->aCol" identifier -> field_identifier))) ;) (labeled_statement "LAB_000918f0:\n                pPVar22 = (Parse *)local_fc->zName;" statement_identifier : (expression_statement "pPVar22 = (Parse *)local_fc->zName;" (assignment_expression "pPVar22 = (Parse *)local_fc->zName" identifier = (cast_expression "(Parse *)local_fc->zName" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_fc->zName" identifier -> field_identifier))) ;)) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );" do (compound_statement "{\n                  uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);\n                  if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13);" (assignment_expression "uVar25 = (uint)*(byte *)((int)&pPVar22->db + iVar13)" identifier = (binary_expression "(uint)*(byte *)((int)&pPVar22->db + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)&pPVar22->db + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar22->db + iVar13)" ( (binary_expression "(int)&pPVar22->db + iVar13" (cast_expression "(int)&pPVar22->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar22->db" & (field_expression "pPVar22->db" identifier -> field_identifier))) + identifier) ))))) ;) (if_statement "if (uVar25 == (byte)pcVar14[iVar13]) {\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;" if (parenthesized_expression "(uVar25 == (byte)pcVar14[iVar13])" ( (binary_expression "uVar25 == (byte)pcVar14[iVar13]" identifier == (cast_expression "(byte)pcVar14[iVar13]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar14[iVar13]" identifier [ identifier ]))) )) (compound_statement "{\n                    if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }\n                  }" { (if_statement "if (uVar25 == 0) {\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }" if (parenthesized_expression "(uVar25 == 0)" ( (binary_expression "uVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      pcVar14 = db->aDb[(int)local_d4].zDbSName;\n                      goto LAB_0009197f;\n                    }" { (if_statement "if (pTab->iPKey == iVar28) {\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }\n                      else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" if (parenthesized_expression "(pTab->iPKey == iVar28)" ( (binary_expression "pTab->iPKey == iVar28" (field_expression "pTab->iPKey" identifier -> field_identifier) == identifier) )) (compound_statement "{\n                        cVar8 = '\x01';\n                        local_b8 = *(Expr **)&local_d8->op;\n                        local_ac = (int)local_e4;\nLAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) break;\n                      }" { (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *(Expr **)&local_d8->op;" (assignment_expression "local_b8 = *(Expr **)&local_d8->op" identifier = (pointer_expression "*(Expr **)&local_d8->op" * (cast_expression "(Expr **)&local_d8->op" ( (type_descriptor "Expr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_d8->op" & (field_expression "local_d8->op" identifier -> field_identifier))))) ;) (expression_statement "local_ac = (int)local_e4;" (assignment_expression "local_ac = (int)local_e4" identifier = (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00091c26:\n                        aChange[iVar28] = (int)local_e4;" statement_identifier : (expression_statement "aChange[iVar28] = (int)local_e4;" (assignment_expression "aChange[iVar28] = (int)local_e4" (subscript_expression "aChange[iVar28]" identifier [ identifier ]) = (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (iVar11 <= iVar28) break;" if (parenthesized_expression "(iVar11 <= iVar28)" ( (binary_expression "iVar11 <= iVar28" identifier <= identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" else (compound_statement "{\n                        uVar3 = *(ushort *)&local_fc->pFKey;\n                        if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }\n                        aChange[iVar28] = (int)local_e4;\n                        if (iVar11 <= iVar28) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" { (expression_statement "uVar3 = *(ushort *)&local_fc->pFKey;" (assignment_expression "uVar3 = *(ushort *)&local_fc->pFKey" identifier = (pointer_expression "*(ushort *)&local_fc->pFKey" * (cast_expression "(ushort *)&local_fc->pFKey" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_fc->pFKey" & (field_expression "local_fc->pFKey" identifier -> field_identifier))))) ;) (if_statement "if ((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)) {\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }" if (parenthesized_expression "((local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0))" ( (binary_expression "(local_e0 == (Index *)0x0) || ((uVar3 & 1) == 0)" (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          if ((uVar3 & 0x60) == 0) goto LAB_00091c26;\n                          sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);\n                          goto LAB_00091be9;\n                        }" { (if_statement "if ((uVar3 & 0x60) == 0) goto LAB_00091c26;" if (parenthesized_expression "((uVar3 & 0x60) == 0)" ( (binary_expression "(uVar3 & 0x60) == 0" (parenthesized_expression "(uVar3 & 0x60)" ( (binary_expression "uVar3 & 0x60" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00091c26;" goto statement_identifier ;)) (expression_statement "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3);" (call_expression "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3)" identifier (argument_list "(pParse,(char *)(unaff_EDI + 0x1c67d),pPVar22,(uint)uVar3)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x1c67d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1c67d)" ( (binary_expression "unaff_EDI + 0x1c67d" identifier + number_literal) ))) , identifier , (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) })) (expression_statement "aChange[iVar28] = (int)local_e4;" (assignment_expression "aChange[iVar28] = (int)local_e4" (subscript_expression "aChange[iVar28]" identifier [ identifier ]) = (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 <= iVar28) goto LAB_00092075;" if (parenthesized_expression "(iVar11 <= iVar28)" ( (binary_expression "iVar11 <= iVar28" identifier <= identifier) )) (goto_statement "goto LAB_00092075;" goto statement_identifier ;)) (expression_statement "local_6e = '\x01';" (assignment_expression "local_6e = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) }))) (expression_statement "pcVar14 = db->aDb[(int)local_d4].zDbSName;" (assignment_expression "pcVar14 = db->aDb[(int)local_d4].zDbSName" identifier = (field_expression "db->aDb[(int)local_d4].zDbSName" (subscript_expression "db->aDb[(int)local_d4]" (field_expression "db->aDb" identifier -> field_identifier) [ (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) ;) (goto_statement "goto LAB_0009197f;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;" else (if_statement "if (*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))\n                  goto LAB_00091b70;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]))" ( (binary_expression "*(char *)(unaff_EDI + 0x23b65 + uVar25) !=\n                           *(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13])" (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar25)" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar25)" ( (binary_expression "unaff_EDI + 0x23b65 + uVar25" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + identifier) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13])" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13])" ( (binary_expression "unaff_EDI + 0x23b65 + (uint)(byte)pcVar14[iVar13]" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + (cast_expression "(uint)(byte)pcVar14[iVar13]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar14[iVar13]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar14[iVar13]" identifier [ identifier ])))) ))))) )) (goto_statement "goto LAB_00091b70;" goto statement_identifier ;)))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00091b82:\n              if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }" statement_identifier : (if_statement "if (local_e0 != (Index *)0x0) {\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }" if (parenthesized_expression "(local_e0 != (Index *)0x0)" ( (binary_expression "local_e0 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);\n                pParse->checkSchema = '\x01';\n                goto LAB_00091be9;\n              }" { (labeled_statement "LAB_00092075:\n                sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14);" (call_expression "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14)" identifier (argument_list "(pParse,(char *)(unaff_EDI + 0x199ec),pcVar14)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x199ec)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199ec)" ( (binary_expression "unaff_EDI + 0x199ec" identifier + number_literal) ))) , identifier ))) ;)) (expression_statement "pParse->checkSchema = '\x01';" (assignment_expression "pParse->checkSchema = '\x01'" (field_expression "pParse->checkSchema" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) }))) (expression_statement "pcVar35 = (char *)0x91b95;" (assignment_expression "pcVar35 = (char *)0x91b95" identifier = (cast_expression "(char *)0x91b95" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar11 = sqlite3IsRowid(pcVar14);" (assignment_expression "iVar11 = sqlite3IsRowid(pcVar14)" identifier = (call_expression "sqlite3IsRowid(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier )))) ;) (if_statement "if (iVar11 == 0) goto LAB_00092075;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00092075;" goto statement_identifier ;)) (expression_statement "iVar28 = -1;" (assignment_expression "iVar28 = -1" identifier = number_literal) ;) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *(Expr **)&local_d8->op;" (assignment_expression "local_b8 = *(Expr **)&local_d8->op" identifier = (pointer_expression "*(Expr **)&local_d8->op" * (cast_expression "(Expr **)&local_d8->op" ( (type_descriptor "Expr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_d8->op" & (field_expression "local_d8->op" identifier -> field_identifier))))) ;) (expression_statement "pcVar14 = db->aDb[(int)local_d4].zDbSName;" (assignment_expression "pcVar14 = db->aDb[(int)local_d4].zDbSName" identifier = (field_expression "db->aDb[(int)local_d4].zDbSName" (subscript_expression "db->aDb[(int)local_d4]" (field_expression "db->aDb" identifier -> field_identifier) [ (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) ;) (expression_statement "local_ac = (int)local_e4;" (assignment_expression "local_ac = (int)local_e4" identifier = (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pPVar22 = (Parse *)(unaff_EDI + 0x18a8f);" (assignment_expression "pPVar22 = (Parse *)(unaff_EDI + 0x18a8f)" identifier = (cast_expression "(Parse *)(unaff_EDI + 0x18a8f)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x18a8f)" ( (binary_expression "unaff_EDI + 0x18a8f" identifier + number_literal) )))) ;) (labeled_statement "LAB_0009197f:\n              iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );" statement_identifier : (expression_statement "iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       );" (assignment_expression "iVar11 = sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       )" identifier = (call_expression "sqlite3AuthCheck(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       )" identifier (argument_list "(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4\n                                       )" ( identifier , (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , (cast_expression "(char *)in_stack_fffffee4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (if_statement "if (iVar11 == 1) goto LAB_00091be9;" if (parenthesized_expression "(iVar11 == 1)" ( (binary_expression "iVar11 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (if_statement "if (iVar11 == 2) {\n                aChange[iVar28] = -1;\n              }" if (parenthesized_expression "(iVar11 == 2)" ( (binary_expression "iVar11 == 2" identifier == number_literal) )) (compound_statement "{\n                aChange[iVar28] = -1;\n              }" { (expression_statement "aChange[iVar28] = -1;" (assignment_expression "aChange[iVar28] = -1" (subscript_expression "aChange[iVar28]" identifier [ identifier ]) = number_literal) ;) })) (expression_statement "local_e4 = (VTable *)((int)local_e4 + 1);" (assignment_expression "local_e4 = (VTable *)((int)local_e4 + 1)" identifier = (cast_expression "(VTable *)((int)local_e4 + 1)" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e4 + 1)" ( (binary_expression "(int)local_e4 + 1" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_d8 = (Expr *)((int)local_d8 + 0x10);" (assignment_expression "local_d8 = (Expr *)((int)local_d8 + 0x10)" identifier = (cast_expression "(Expr *)((int)local_d8 + 0x10)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d8 + 0x10)" ( (binary_expression "(int)local_d8 + 0x10" (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((int)local_e4 < pChanges_00->nExpr)" ( (binary_expression "(int)local_e4 < pChanges_00->nExpr" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "pChanges_00->nExpr" identifier -> field_identifier)) )) ;) }))) (expression_statement "bVar26 = local_6e + cVar8;" (assignment_expression "bVar26 = local_6e + cVar8" identifier = (binary_expression "local_6e + cVar8" identifier + identifier)) ;) (if_statement "if ((pTab->tabFlags & 0x60) != 0) {\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }" if (parenthesized_expression "((pTab->tabFlags & 0x60) != 0)" ( (binary_expression "(pTab->tabFlags & 0x60) != 0" (parenthesized_expression "(pTab->tabFlags & 0x60)" ( (binary_expression "pTab->tabFlags & 0x60" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar24 = pTab->nCol;\n            do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);\n          }" { (expression_statement "iVar24 = pTab->nCol;" (assignment_expression "iVar24 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (do_statement "do {\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            } while (bVar32);" do (compound_statement "{\n              if (iVar24 < 1) break;\n              bVar32 = false;\n              iVar11 = 0;\n              do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);\n            }" { (if_statement "if (iVar24 < 1) break;" if (parenthesized_expression "(iVar24 < 1)" ( (binary_expression "iVar24 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar32 = false;" (assignment_expression "bVar32 = false" identifier = false) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              } while (iVar11 < iVar24);" do (compound_statement "{\n                if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }\n                iVar11 = iVar11 + 1;\n              }" { (if_statement "if ((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)) {\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }" if (parenthesized_expression "((aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0))" ( (binary_expression "(aChange[iVar11] < 0) && ((pTab->aCol[iVar11].colFlags & 0x60) != 0)" (parenthesized_expression "(aChange[iVar11] < 0)" ( (binary_expression "aChange[iVar11] < 0" (subscript_expression "aChange[iVar11]" identifier [ identifier ]) < number_literal) )) && (parenthesized_expression "((pTab->aCol[iVar11].colFlags & 0x60) != 0)" ( (binary_expression "(pTab->aCol[iVar11].colFlags & 0x60) != 0" (parenthesized_expression "(pTab->aCol[iVar11].colFlags & 0x60)" ( (binary_expression "pTab->aCol[iVar11].colFlags & 0x60" (field_expression "pTab->aCol[iVar11].colFlags" (subscript_expression "pTab->aCol[iVar11]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                  iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                  if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }\n                  iVar24 = pTab->nCol;\n                }" { (expression_statement "iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);" (assignment_expression "iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier = (call_expression "sqlite3ExprReferencesUpdatedColumn\n                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier (argument_list "(in_stack_fffffee4,in_stack_fffffee8,(int)db)" ( identifier , identifier , (cast_expression "(int)db" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (iVar28 != 0) {\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n                    aChange[iVar11] = 99999;\n                    bVar32 = true;\n                  }" { (expression_statement "aChange[iVar11] = 99999;" (assignment_expression "aChange[iVar11] = 99999" (subscript_expression "aChange[iVar11]" identifier [ identifier ]) = number_literal) ;) (expression_statement "bVar32 = true;" (assignment_expression "bVar32 = true" identifier = true) ;) })) (expression_statement "iVar24 = pTab->nCol;" (assignment_expression "iVar24 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) })) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 < iVar24)" ( (binary_expression "iVar11 < iVar24" identifier < identifier) )) ;) }) while (parenthesized_expression "(bVar32)" ( identifier )) ;) })) (expression_statement "uVar25 = (uint)(pTab->nModuleArg != 0);" (assignment_expression "uVar25 = (uint)(pTab->nModuleArg != 0)" identifier = (call_expression "(uint)(pTab->nModuleArg != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pTab->nModuleArg != 0)" ( (binary_expression "pTab->nModuleArg != 0" (field_expression "pTab->nModuleArg" identifier -> field_identifier) != number_literal) )))) ;) (expression_statement "*(uint *)&pSrc->a[0].colUsed = -uVar25;" (assignment_expression "*(uint *)&pSrc->a[0].colUsed = -uVar25" (pointer_expression "*(uint *)&pSrc->a[0].colUsed" * (cast_expression "(uint *)&pSrc->a[0].colUsed" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSrc->a[0].colUsed" & (field_expression "pSrc->a[0].colUsed" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = (unary_expression "-uVar25" - identifier)) ;) (expression_statement "chngRowid = (uint)bVar26;" (assignment_expression "chngRowid = (uint)bVar26" identifier = (cast_expression "(uint)bVar26" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0);" (assignment_expression "*(uint *)((int)&pSrc->a[0].colUsed + 4) = -(uint)(uVar25 != 0)" (pointer_expression "*(uint *)((int)&pSrc->a[0].colUsed + 4)" * (cast_expression "(uint *)((int)&pSrc->a[0].colUsed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSrc->a[0].colUsed + 4)" ( (binary_expression "(int)&pSrc->a[0].colUsed + 4" (cast_expression "(int)&pSrc->a[0].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSrc->a[0].colUsed" & (field_expression "pSrc->a[0].colUsed" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = (unary_expression "-(uint)(uVar25 != 0)" - (call_expression "(uint)(uVar25 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) ))))) ;) (expression_statement "iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid);" (assignment_expression "iVar11 = sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid)" identifier = (call_expression "sqlite3FkRequired((Parse *)pParse->db,pTab,aChange,chngRowid)" identifier (argument_list "((Parse *)pParse->db,pTab,aChange,chngRowid)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , identifier , identifier , identifier )))) ;) (if_statement "if (pChanges == (ExprList *)0x5) {\n            bReplace = 1;\n          }" if (parenthesized_expression "(pChanges == (ExprList *)0x5)" ( (binary_expression "pChanges == (ExprList *)0x5" identifier == (cast_expression "(ExprList *)0x5" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            bReplace = 1;\n          }" { (expression_statement "bReplace = 1;" (assignment_expression "bReplace = 1" identifier = number_literal) ;) })) (expression_statement "pIVar20 = pTab->pIndex;" (assignment_expression "pIVar20 = pTab->pIndex" identifier = (field_expression "pTab->pIndex" identifier -> field_identifier)) ;) (expression_statement "local_98 = (Table *)aRegIdx;" (assignment_expression "local_98 = (Table *)aRegIdx" identifier = (cast_expression "(Table *)aRegIdx" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pIVar20 != (Index *)0x0) {\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }" if (parenthesized_expression "(pIVar20 != (Index *)0x0)" ( (binary_expression "pIVar20 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_fc = (Table *)0x0;\n            do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);\n            local_98 = (Table *)(aRegIdx + (int)local_fc);\n          }" { (expression_statement "local_fc = (Table *)0x0;" (assignment_expression "local_fc = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            } while (pIVar20 != (Index *)0x0);" do (compound_statement "{\n              if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }\n              pIVar20 = pIVar20->pNext;\n              aRegIdx[(int)local_fc] = iVar28;\n              local_fc = (Table *)((int)local_fc + 1);\n            }" { (if_statement "if (((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))\n              {\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }" if (parenthesized_expression "(((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))))" ( (binary_expression "((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)) ||\n                 ((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0)))" (parenthesized_expression "((local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0))" ( (binary_expression "(local_e0 == pIVar20) || (1 < iVar11 || bVar26 != 0)" (parenthesized_expression "(local_e0 == pIVar20)" ( (binary_expression "local_e0 == pIVar20" identifier == identifier) )) || (parenthesized_expression "(1 < iVar11 || bVar26 != 0)" ( (binary_expression "1 < iVar11 || bVar26 != 0" (binary_expression "1 < iVar11" number_literal < identifier) || (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0)))" ( (parenthesized_expression "(pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0))" ( (binary_expression "pIVar20->pPartIdxWhere != (Expr *)0x0 &&\n                  (iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0)" (binary_expression "pIVar20->pPartIdxWhere != (Expr *)0x0" (field_expression "pIVar20->pPartIdxWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0)" ( (comma_expression "iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), iVar28 != 0" (assignment_expression "iVar28 = sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier = (call_expression "sqlite3ExprReferencesUpdatedColumn\n                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier (argument_list "(in_stack_fffffee4,in_stack_fffffee8,(int)db)" ( identifier , identifier , (cast_expression "(int)db" ( (type_descriptor "int" primitive_type) ) identifier) )))) , (binary_expression "iVar28 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                iVar28 = pParse->nMem + 1;\n                pParse->nMem = (uint)pIVar20->nColumn + iVar28;\nLAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;\n              }" { (expression_statement "iVar28 = pParse->nMem + 1;" (assignment_expression "iVar28 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = (uint)pIVar20->nColumn + iVar28;" (assignment_expression "pParse->nMem = (uint)pIVar20->nColumn + iVar28" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "(uint)pIVar20->nColumn + iVar28" (cast_expression "(uint)pIVar20->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar20->nColumn" identifier -> field_identifier)) + identifier)) ;) (labeled_statement "LAB_00091b52:\n                if (iVar28 == 0) goto LAB_00091b56;" statement_identifier : (if_statement "if (iVar28 == 0) goto LAB_00091b56;" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091b56;" goto statement_identifier ;))) }) (else_clause "else {\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }" else (compound_statement "{\n                iVar28 = 0;\n                if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;\n                iVar28 = 0;\n              }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (if_statement "if (pIVar20->nKeyCol != 0) {\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }" if (parenthesized_expression "(pIVar20->nKeyCol != 0)" ( (binary_expression "pIVar20->nKeyCol != 0" (field_expression "pIVar20->nKeyCol" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                  do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);\n                }" { (do_statement "do {\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  } while (iVar28 < (int)(uint)pIVar20->nKeyCol);" do (compound_statement "{\n                    if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar28 = iVar28 + 1;\n                  }" { (if_statement "if (pIVar20->aiColumn[iVar28] < 0) {\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }\n                    else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }" if (parenthesized_expression "(pIVar20->aiColumn[iVar28] < 0)" ( (binary_expression "pIVar20->aiColumn[iVar28] < 0" (subscript_expression "pIVar20->aiColumn[iVar28]" (field_expression "pIVar20->aiColumn" identifier -> field_identifier) [ identifier ]) < number_literal) )) (compound_statement "{\n                      uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);\n                    }" { (expression_statement "uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);" (assignment_expression "uVar25 = sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier = (call_expression "sqlite3ExprReferencesUpdatedColumn\n                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db)" identifier (argument_list "(in_stack_fffffee4,in_stack_fffffee8,(int)db)" ( identifier , identifier , (cast_expression "(int)db" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) (else_clause "else {\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }" else (compound_statement "{\n                      uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;\n                    }" { (expression_statement "uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f;" (assignment_expression "uVar25 = (uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f" identifier = (binary_expression "(uint)~aChange[pIVar20->aiColumn[iVar28]] >> 0x1f" (cast_expression "(uint)~aChange[pIVar20->aiColumn[iVar28]]" ( (type_descriptor "uint" type_identifier) ) (unary_expression "~aChange[pIVar20->aiColumn[iVar28]]" ~ (subscript_expression "aChange[pIVar20->aiColumn[iVar28]]" identifier [ (subscript_expression "pIVar20->aiColumn[iVar28]" (field_expression "pIVar20->aiColumn" identifier -> field_identifier) [ identifier ]) ]))) >> number_literal)) ;) }))) (if_statement "if (uVar25 != 0) {\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                      iVar28 = pParse->nMem + 1;\n                      pParse->nMem = (uint)pIVar20->nColumn + iVar28;\n                      if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" { (expression_statement "iVar28 = pParse->nMem + 1;" (assignment_expression "iVar28 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = (uint)pIVar20->nColumn + iVar28;" (assignment_expression "pParse->nMem = (uint)pIVar20->nColumn + iVar28" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "(uint)pIVar20->nColumn + iVar28" (cast_expression "(uint)pIVar20->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar20->nColumn" identifier -> field_identifier)) + identifier)) ;) (if_statement "if ((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')) {\n                        bReplace = 1;\n                      }" if (parenthesized_expression "((pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05'))" ( (binary_expression "(pChanges == (ExprList *)0xb) && (pIVar20->onError == '\x05')" (parenthesized_expression "(pChanges == (ExprList *)0xb)" ( (binary_expression "pChanges == (ExprList *)0xb" identifier == (cast_expression "(ExprList *)0xb" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pIVar20->onError == '\x05')" ( (binary_expression "pIVar20->onError == '\x05'" (field_expression "pIVar20->onError" identifier -> field_identifier) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n                        bReplace = 1;\n                      }" { (expression_statement "bReplace = 1;" (assignment_expression "bReplace = 1" identifier = number_literal) ;) })) (goto_statement "goto LAB_00091b52;" goto statement_identifier ;) })) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar28 < (int)(uint)pIVar20->nKeyCol)" ( (binary_expression "iVar28 < (int)(uint)pIVar20->nKeyCol" identifier < (cast_expression "(int)(uint)pIVar20->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pIVar20->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar20->nKeyCol" identifier -> field_identifier)))) )) ;) })) (labeled_statement "LAB_00091b56:\n                *(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;" statement_identifier : (expression_statement "*(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar21 + (int)local_fc + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar21 + (int)local_fc + 1)" * (cast_expression "(undefined1 *)((int)piVar21 + (int)local_fc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + (int)local_fc + 1)" ( (binary_expression "(int)piVar21 + (int)local_fc + 1" (binary_expression "(int)piVar21 + (int)local_fc" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) }))) (expression_statement "pIVar20 = pIVar20->pNext;" (assignment_expression "pIVar20 = pIVar20->pNext" identifier = (field_expression "pIVar20->pNext" identifier -> field_identifier)) ;) (expression_statement "aRegIdx[(int)local_fc] = iVar28;" (assignment_expression "aRegIdx[(int)local_fc] = iVar28" (subscript_expression "aRegIdx[(int)local_fc]" identifier [ (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "local_fc = (Table *)((int)local_fc + 1);" (assignment_expression "local_fc = (Table *)((int)local_fc + 1)" identifier = (cast_expression "(Table *)((int)local_fc + 1)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_fc + 1)" ( (binary_expression "(int)local_fc + 1" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pIVar20 != (Index *)0x0)" ( (binary_expression "pIVar20 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "local_98 = (Table *)(aRegIdx + (int)local_fc);" (assignment_expression "local_98 = (Table *)(aRegIdx + (int)local_fc)" identifier = (cast_expression "(Table *)(aRegIdx + (int)local_fc)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(aRegIdx + (int)local_fc)" ( (binary_expression "aRegIdx + (int)local_fc" identifier + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "iVar28 = pParse->nMem + 1;" (assignment_expression "iVar28 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar28;" (assignment_expression "pParse->nMem = iVar28" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "*(int *)local_98 = iVar28;" (assignment_expression "*(int *)local_98 = iVar28" (pointer_expression "*(int *)local_98" * (cast_expression "(int *)local_98" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (bReplace != 0) {\n            memset(piVar21,1,(size_t)__n);\n          }" if (parenthesized_expression "(bReplace != 0)" ( (binary_expression "bReplace != 0" identifier != number_literal) )) (compound_statement "{\n            memset(piVar21,1,(size_t)__n);\n          }" { (expression_statement "memset(piVar21,1,(size_t)__n);" (call_expression "memset(piVar21,1,(size_t)__n)" identifier (argument_list "(piVar21,1,(size_t)__n)" ( identifier , number_literal , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) })) (if_statement "if (pParse->nested == '\0') {\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }" if (parenthesized_expression "(pParse->nested == '\0')" ( (binary_expression "pParse->nested == '\0'" (field_expression "pParse->nested" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;\n          }" { (expression_statement "*(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10;" (assignment_expression "*(undefined1 *)((int)local_e8 + 0x8e) = *(undefined1 *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(undefined1 *)((int)local_e8 + 0x8e)" * (cast_expression "(undefined1 *)((int)local_e8 + 0x8e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(undefined1 *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(undefined1 *)((int)local_e8 + 0x8e)" * (cast_expression "(undefined1 *)((int)local_e8 + 0x8e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "bVar32 = pTrigger != (Trigger *)0x0;" (assignment_expression "bVar32 = pTrigger != (Trigger *)0x0" identifier = (binary_expression "pTrigger != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar33 = iVar11 != 0;" (assignment_expression "bVar33 = iVar11 != 0" identifier = (binary_expression "iVar11 != 0" identifier != number_literal)) ;) (expression_statement "sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4);" (call_expression "sqlite3BeginWriteOperation(pParse,(uint)(bVar32 || bVar33),(int)local_d4)" identifier (argument_list "(pParse,(uint)(bVar32 || bVar33),(int)local_d4)" ( identifier , (call_expression "(uint)(bVar32 || bVar33)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar32 || bVar33)" ( (binary_expression "bVar32 || bVar33" identifier || identifier) ))) , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar28 = pTab->nModuleArg;" (assignment_expression "iVar28 = pTab->nModuleArg" identifier = (field_expression "pTab->nModuleArg" identifier -> field_identifier)) ;) (if_statement "if (iVar28 == 0) {\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n            sVar10 = pTab->nCol;\n            local_84 = *(int *)local_98;\n            local_74 = pParse->nMem;\n            local_fc = (Table *)(local_74 + 1);\n            pParse->nMem = (int)local_fc;\n            if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }\n            local_94 = pParse->nMem + 1;\n            pParse->nMem = pParse->nMem + (int)sVar10;\n          }" { (expression_statement "sVar10 = pTab->nCol;" (assignment_expression "sVar10 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (expression_statement "local_84 = *(int *)local_98;" (assignment_expression "local_84 = *(int *)local_98" identifier = (pointer_expression "*(int *)local_98" * (cast_expression "(int *)local_98" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_74 = pParse->nMem;" (assignment_expression "local_74 = pParse->nMem" identifier = (field_expression "pParse->nMem" identifier -> field_identifier)) ;) (expression_statement "local_fc = (Table *)(local_74 + 1);" (assignment_expression "local_fc = (Table *)(local_74 + 1)" identifier = (cast_expression "(Table *)(local_74 + 1)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_74 + 1)" ( (binary_expression "local_74 + 1" identifier + number_literal) )))) ;) (expression_statement "pParse->nMem = (int)local_fc;" (assignment_expression "pParse->nMem = (int)local_fc" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((bVar32 || local_6e != '\0') || (bVar33)) {\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }" if (parenthesized_expression "((bVar32 || local_6e != '\0') || (bVar33))" ( (binary_expression "(bVar32 || local_6e != '\0') || (bVar33)" (parenthesized_expression "(bVar32 || local_6e != '\0')" ( (binary_expression "bVar32 || local_6e != '\0'" identifier || (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) || (parenthesized_expression "(bVar33)" ( identifier ))) )) (compound_statement "{\n              local_74 = local_74 + 2;\n              pParse->nMem = (int)&local_fc->zName + (int)sVar10;\n              if (!bVar33) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);\n              pParse->nMem = (int)local_d4;\n            }" { (expression_statement "local_74 = local_74 + 2;" (assignment_expression "local_74 = local_74 + 2" identifier = (binary_expression "local_74 + 2" identifier + number_literal)) ;) (expression_statement "pParse->nMem = (int)&local_fc->zName + (int)sVar10;" (assignment_expression "pParse->nMem = (int)&local_fc->zName + (int)sVar10" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "(int)&local_fc->zName + (int)sVar10" (cast_expression "(int)&local_fc->zName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_fc->zName" & (field_expression "local_fc->zName" identifier -> field_identifier))) + (cast_expression "(int)sVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (!bVar33) goto joined_r0x00091d94;" if (parenthesized_expression "(!bVar33)" ( (unary_expression "!bVar33" ! identifier) )) (goto_statement "goto joined_r0x00091d94;" goto statement_identifier ;)) (labeled_statement "LAB_00091d96:\n              local_d4 = (Table *)(pParse->nMem + 1);" statement_identifier : (expression_statement "local_d4 = (Table *)(pParse->nMem + 1);" (assignment_expression "local_d4 = (Table *)(pParse->nMem + 1)" identifier = (cast_expression "(Table *)(pParse->nMem + 1)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;)) (expression_statement "pParse->nMem = (int)local_d4;" (assignment_expression "pParse->nMem = (int)local_d4" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }" else (compound_statement "{\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = local_fc;\n              if (bVar26 != 0 || bVar32) goto LAB_00091d96;\n            }" { (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x00091d94:\n              local_d4 = local_fc;" statement_identifier : (expression_statement "local_d4 = local_fc;" (assignment_expression "local_d4 = local_fc" identifier = identifier) ;)) (if_statement "if (bVar26 != 0 || bVar32) goto LAB_00091d96;" if (parenthesized_expression "(bVar26 != 0 || bVar32)" ( (binary_expression "bVar26 != 0 || bVar32" (binary_expression "bVar26 != 0" identifier != number_literal) || identifier) )) (goto_statement "goto LAB_00091d96;" goto statement_identifier ;)) }))) (expression_statement "local_94 = pParse->nMem + 1;" (assignment_expression "local_94 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = pParse->nMem + (int)sVar10;" (assignment_expression "pParse->nMem = pParse->nMem + (int)sVar10" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "pParse->nMem + (int)sVar10" (field_expression "pParse->nMem" identifier -> field_identifier) + (cast_expression "(int)sVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }" else (compound_statement "{\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = (Table *)0x0;\n            local_fc = (Table *)0x0;\n          }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_d4 = (Table *)0x0;" (assignment_expression "local_d4 = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_fc = (Table *)0x0;" (assignment_expression "local_fc = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (pSVar5 == (Select *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }\n          else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar32 = false;\n          }" { (if_statement "if (local_100 == 0) goto LAB_00091e0a;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091e0a;" goto statement_identifier ;)) (expression_statement "bVar32 = false;" (assignment_expression "bVar32 = false" identifier = false) ;) }) (else_clause "else {\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }" else (compound_statement "{\n            sContext.zAuthContext = pParse->zAuthContext;\n            bVar32 = false;\n            pParse->zAuthContext = pTab->zName;\n            sContext.pParse = pParse;\n            if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }\n          }" { (expression_statement "sContext.zAuthContext = pParse->zAuthContext;" (assignment_expression "sContext.zAuthContext = pParse->zAuthContext" (field_expression "sContext.zAuthContext" identifier . field_identifier) = (field_expression "pParse->zAuthContext" identifier -> field_identifier)) ;) (expression_statement "bVar32 = false;" (assignment_expression "bVar32 = false" identifier = false) ;) (expression_statement "pParse->zAuthContext = pTab->zName;" (assignment_expression "pParse->zAuthContext = pTab->zName" (field_expression "pParse->zAuthContext" identifier -> field_identifier) = (field_expression "pTab->zName" identifier -> field_identifier)) ;) (expression_statement "sContext.pParse = pParse;" (assignment_expression "sContext.pParse = pParse" (field_expression "sContext.pParse" identifier . field_identifier) = identifier) ;) (if_statement "if (local_100 == 0) {\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n              sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);\nLAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);\n              if (iVar28 != 0) goto LAB_00091be9;\n              bVar32 = true;\n              iVar28 = pTab->nModuleArg;\n            }" { (expression_statement "sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28);" (call_expression "sqlite3MaterializeView\n                        (pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28)" identifier (argument_list "(pParse,pTab,(Expr *)pTab->pSchema,(ExprList *)pTabList,local_dc,iVar28,\n                         (Table *)iVar28)" ( identifier , identifier , (cast_expression "(Expr *)pTab->pSchema" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTab->pSchema" identifier -> field_identifier)) , (cast_expression "(ExprList *)pTabList" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(Table *)iVar28" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (labeled_statement "LAB_00091e0a:\n              iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);" statement_identifier : (expression_statement "iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList);" (assignment_expression "iVar28 = sqlite3ResolveExprNames(&sNC,(Expr *)pTabList)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,(Expr *)pTabList)" identifier (argument_list "(&sNC,(Expr *)pTabList)" ( (pointer_expression "&sNC" & identifier) , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (if_statement "if (iVar28 != 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "bVar32 = true;" (assignment_expression "bVar32 = true" identifier = true) ;) (expression_statement "iVar28 = pTab->nModuleArg;" (assignment_expression "iVar28 = pTab->nModuleArg" identifier = (field_expression "pTab->nModuleArg" identifier -> field_identifier)) ;) })) }))) (if_statement "if (iVar28 == 0) {\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }\n          else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n            local_9c = 0;\n            iVar28 = pParse->nLabel + -1;\n            pParse->nLabel = iVar28;\n            if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }\n            uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);\n            iVar13 = (int)pTab->nCol;\n            if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }\n            if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }\n            if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }\n            sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);\n            if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }\n            sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);\n            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }\n            if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }\n          }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "iVar28 = pParse->nLabel + -1;" (assignment_expression "iVar28 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar28;" (assignment_expression "pParse->nLabel = iVar28" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (if_statement "if (((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)) {\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }" if (parenthesized_expression "(((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0))" ( (binary_expression "((db->flags & 0x100000000) != 0) &&\n               (local_9c = 0, pParse->pTriggerTab == (Table *)0x0)" (parenthesized_expression "((db->flags & 0x100000000) != 0)" ( (binary_expression "(db->flags & 0x100000000) != 0" (parenthesized_expression "(db->flags & 0x100000000)" ( (binary_expression "db->flags & 0x100000000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_9c = 0, pParse->pTriggerTab == (Table *)0x0)" ( (comma_expression "local_9c = 0, pParse->pTriggerTab == (Table *)0x0" (assignment_expression "local_9c = 0" identifier = number_literal) , (binary_expression "pParse->pTriggerTab == (Table *)0x0" (field_expression "pParse->pTriggerTab" identifier -> field_identifier) == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }\n            }" { (if_statement "if ((pParse->nested == '\0') && (pWhere == (Expr *)0x0)) {\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }\n              else {\n                local_9c = 0;\n              }" if (parenthesized_expression "((pParse->nested == '\0') && (pWhere == (Expr *)0x0))" ( (binary_expression "(pParse->nested == '\0') && (pWhere == (Expr *)0x0)" (parenthesized_expression "(pParse->nested == '\0')" ( (binary_expression "pParse->nested == '\0'" (field_expression "pParse->nested" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pWhere == (Expr *)0x0)" ( (binary_expression "pWhere == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                local_9c = pParse->nMem + 1;\n                pParse->nMem = local_9c;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);\n              }" { (expression_statement "local_9c = pParse->nMem + 1;" (assignment_expression "local_9c = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = local_9c;" (assignment_expression "pParse->nMem = local_9c" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x45,0,local_9c,0)" identifier (argument_list "((Vdbe *)local_e8,0x45,0,local_9c,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , identifier , number_literal ))) ;) }) (else_clause "else {\n                local_9c = 0;\n              }" else (compound_statement "{\n                local_9c = 0;\n              }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)) {\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }" if (parenthesized_expression "((local_100 == 0) && ((pTab->tabFlags & 0x80) == 0))" ( (binary_expression "(local_100 == 0) && ((pTab->tabFlags & 0x80) == 0)" (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) && (parenthesized_expression "((pTab->tabFlags & 0x80) == 0)" ( (binary_expression "(pTab->tabFlags & 0x80) == 0" (parenthesized_expression "(pTab->tabFlags & 0x80)" ( (binary_expression "pTab->tabFlags & 0x80" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n              pTVar30 = (Table *)0x0;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);\n              local_8c = (Table *)0x0;\n              if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = (Vdbe *)0x0;\n              local_d8 = (Expr *)0x0;\n              local_a4 = 0;\nLAB_00093044:\n              wctrlFlags = 0x1004;\n              if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }\n              local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);\n              if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;\n              local_64 = (Expr *)local_80->aiCurOnePass[0];\n              local_78 = (Expr *)local_80->aiCurOnePass[1];\n              uVar2 = local_80->eOnePass;\n              bVar9 = local_80->field_0x30 & 1;\n              pTVar31 = pTVar30;\n              if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              uVar18 = pTab->tabFlags;\n              if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if ((uVar18 & 0x80) != 0) goto LAB_00091f32;\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n              if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }\n              local_c4 = 0;\n              pTVar31 = local_8c;\n              local_98 = pTVar30;\nLAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }\n              if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }\n              if (uVar2 != '\0') goto LAB_00093182;\nLAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);\n              local_8c = (Table *)0x0;\nLAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;\n            }" { (expression_statement "pTVar30 = (Table *)0x0;" (assignment_expression "pTVar30 = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x48,0,local_84,(int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_8c = (Table *)0x0;" (assignment_expression "local_8c = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pWhere != (Expr *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }" if (parenthesized_expression "(pWhere != (Expr *)0x0)" ( (binary_expression "pWhere != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_a4 = 0;\nLAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);\n                local_d8 = (Expr *)0x0;\n                local_f0 = (Vdbe *)0x0;\n                bVar9 = 0;\n                uVar2 = '\x01';\n                local_80 = (WhereInfo *)0x0;\n                uVar18 = pTab->tabFlags;\n                pTVar31 = pTVar30;\nLAB_00091f2a:\n                pTVar30 = pTVar31;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }\n                goto LAB_0009244d;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00091ee2:\n                sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);" statement_identifier : (expression_statement "sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,(Expr *)pTabList,iVar28,0x10)" identifier (argument_list "(pParse,(Expr *)pTabList,iVar28,0x10)" ( identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;)) (expression_statement "local_d8 = (Expr *)0x0;" (assignment_expression "local_d8 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_f0 = (Vdbe *)0x0;" (assignment_expression "local_f0 = (Vdbe *)0x0" identifier = (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = '\x01';" (assignment_expression "uVar2 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_80 = (WhereInfo *)0x0;" (assignment_expression "local_80 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar18 = pTab->tabFlags;" (assignment_expression "uVar18 = pTab->tabFlags" identifier = (field_expression "pTab->tabFlags" identifier -> field_identifier)) ;) (expression_statement "pTVar31 = pTVar30;" (assignment_expression "pTVar31 = pTVar30" identifier = identifier) ;) (labeled_statement "LAB_00091f2a:\n                pTVar30 = pTVar31;" statement_identifier : (expression_statement "pTVar30 = pTVar31;" (assignment_expression "pTVar30 = pTVar31" identifier = identifier) ;)) (if_statement "if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }" if (parenthesized_expression "((uVar18 & 0x80) == 0)" ( (binary_expression "(uVar18 & 0x80) == 0" (parenthesized_expression "(uVar18 & 0x80)" ( (binary_expression "uVar18 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  local_c4 = 0;\n                  pTVar30 = local_8c;\n                  local_98 = pTVar31;\n                }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" identifier (argument_list "((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "pTVar30 = local_8c;" (assignment_expression "pTVar30 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = pTVar31;" (assignment_expression "local_98 = pTVar31" identifier = identifier) ;) }) (else_clause "else {\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }" else (compound_statement "{\nLAB_00091f32:\n                  local_c4 = (int)(short)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = pTVar30;\n                  local_c8 = local_c4;\n                  if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }\n                }" { (labeled_statement "LAB_00091f32:\n                  local_c4 = (int)(short)local_a4;" statement_identifier : (expression_statement "local_c4 = (int)(short)local_a4;" (assignment_expression "local_c4 = (int)(short)local_a4" identifier = (cast_expression "(int)(short)local_a4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;)) (if_statement "if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }" if (parenthesized_expression "(0 < local_c4)" ( (binary_expression "0 < local_c4" number_literal < identifier) )) (compound_statement "{\nLAB_00091f43:\n                    local_98 = (Table *)0x0;\n                    local_68 = pTVar30;\n                    do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);\n                  }" { (labeled_statement "LAB_00091f43:\n                    local_98 = (Table *)0x0;" statement_identifier : (expression_statement "local_98 = (Table *)0x0;" (assignment_expression "local_98 = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_68 = pTVar30;" (assignment_expression "local_68 = pTVar30" identifier = identifier) ;) (do_statement "do {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    } while ((Table *)(local_c4 * 2) != local_98);" do (compound_statement "{\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);\n                      local_98 = (Table *)((int)local_98 + 2);\n                      local_68 = (Table *)((int)&local_68->zName + 1);\n                    }" { (expression_statement "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68);" (call_expression "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68)" identifier (argument_list "((Vdbe *)local_e8,pTab,(int)local_dc,\n                                 (int)*(short *)((int)local_e0->aiColumn + (int)local_98),\n                                 (int)local_68)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)*(short *)((int)local_e0->aiColumn + (int)local_98)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)local_e0->aiColumn + (int)local_98)" * (cast_expression "(short *)((int)local_e0->aiColumn + (int)local_98)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e0->aiColumn + (int)local_98)" ( (binary_expression "(int)local_e0->aiColumn + (int)local_98" (cast_expression "(int)local_e0->aiColumn" ( (type_descriptor "int" primitive_type) ) (field_expression "local_e0->aiColumn" identifier -> field_identifier)) + (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) , (cast_expression "(int)local_68" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_98 = (Table *)((int)local_98 + 2);" (assignment_expression "local_98 = (Table *)((int)local_98 + 2)" identifier = (cast_expression "(Table *)((int)local_98 + 2)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_98 + 2)" ( (binary_expression "(int)local_98 + 2" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_68 = (Table *)((int)&local_68->zName + 1);" (assignment_expression "local_68 = (Table *)((int)&local_68->zName + 1)" identifier = (cast_expression "(Table *)((int)&local_68->zName + 1)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_68->zName + 1)" ( (binary_expression "(int)&local_68->zName + 1" (cast_expression "(int)&local_68->zName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_68->zName" & (field_expression "local_68->zName" identifier -> field_identifier))) + number_literal) )))) ;) }) while (parenthesized_expression "((Table *)(local_c4 * 2) != local_98)" ( (binary_expression "(Table *)(local_c4 * 2) != local_98" (cast_expression "(Table *)(local_c4 * 2)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 * 2)" ( (binary_expression "local_c4 * 2" identifier * number_literal) ))) != identifier) )) ;) })) (expression_statement "local_98 = pTVar30;" (assignment_expression "local_98 = pTVar30" identifier = identifier) ;) (expression_statement "local_c8 = local_c4;" (assignment_expression "local_c8 = local_c4" identifier = identifier) ;) (if_statement "if (uVar2 == '\0') {\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }\n                  else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);\n                    sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);\n                    local_c4 = 0;\n                    uVar2 = '\0';\n                    pTVar30 = local_8c;\n                  }" { (labeled_statement "LAB_00092c5d:\n                    pcVar35 = sqlite3IndexAffinityStr(db,local_e0);" statement_identifier : (expression_statement "pcVar35 = sqlite3IndexAffinityStr(db,local_e0);" (assignment_expression "pcVar35 = sqlite3IndexAffinityStr(db,local_e0)" identifier = (call_expression "sqlite3IndexAffinityStr(db,local_e0)" identifier (argument_list "(db,local_e0)" ( identifier , identifier )))) ;)) (expression_statement "iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c);" (assignment_expression "iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c)" identifier = (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c)" identifier (argument_list "((Vdbe *)local_e8,0x5b,(int)local_98,local_c8,\n                                               (int)local_8c)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8);" (call_expression "sqlite3VdbeChangeP4((Vdbe *)local_e8,iVar13,pcVar35,local_c8)" identifier (argument_list "((Vdbe *)local_e8,iVar13,pcVar35,local_c8)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8);" (call_expression "sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8)" identifier (argument_list "((Vdbe *)local_e8,0x82,(int)local_d8,(int)local_8c,(int)local_98,\n                               local_c8)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = '\0';" (assignment_expression "uVar2 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pTVar30 = local_8c;" (assignment_expression "pTVar30 = local_8c" identifier = identifier) ;) }) (else_clause "else if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }" else (if_statement "if (local_f0 != (Vdbe *)0x0) {\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }" if (parenthesized_expression "(local_f0 != (Vdbe *)0x0)" ( (binary_expression "local_f0 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);\n                  }" { (expression_statement "sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0);" (call_expression "sqlite3VdbeChangeToNoop\n                              ((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0)" identifier (argument_list "((Vdbe *)local_e8->pParse,(int)((int)local_e8 + 100),local_f0)" ( (cast_expression "(Vdbe *)local_e8->pParse" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e8->pParse" identifier -> field_identifier)) , (cast_expression "(int)((int)local_e8 + 100)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)local_e8 + 100)" ( (binary_expression "(int)local_e8 + 100" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier ))) ;) })))) }))) (goto_statement "goto LAB_0009244d;" goto statement_identifier ;) })) (expression_statement "local_f0 = (Vdbe *)0x0;" (assignment_expression "local_f0 = (Vdbe *)0x0" identifier = (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d8 = (Expr *)0x0;" (assignment_expression "local_d8 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00093044:\n              wctrlFlags = 0x1004;" statement_identifier : (expression_statement "wctrlFlags = 0x1004;" (assignment_expression "wctrlFlags = 0x1004" identifier = number_literal) ;)) (if_statement "if ((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))) {\n                wctrlFlags = 0x1004;\n              }" if (parenthesized_expression "((pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0))))" ( (binary_expression "(pParse->nested == '\0') &&\n                 ((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))" (parenthesized_expression "(pParse->nested == '\0')" ( (binary_expression "pParse->nested == '\0'" (field_expression "pParse->nested" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)))" ( (parenthesized_expression "(((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0))" ( (binary_expression "((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)) ||\n                  (wctrlFlags = 0x100c, bVar26 != 0)" (parenthesized_expression "((pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0))" ( (binary_expression "(pTrigger != (Trigger *)0x0 || (iVar11 != 0)) || (bReplace != 0)" (parenthesized_expression "(pTrigger != (Trigger *)0x0 || (iVar11 != 0))" ( (binary_expression "pTrigger != (Trigger *)0x0 || (iVar11 != 0)" (binary_expression "pTrigger != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(bReplace != 0)" ( (binary_expression "bReplace != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(wctrlFlags = 0x100c, bVar26 != 0)" ( (comma_expression "wctrlFlags = 0x100c, bVar26 != 0" (assignment_expression "wctrlFlags = 0x100c" identifier = number_literal) , (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                wctrlFlags = 0x1004;\n              }" { (expression_statement "wctrlFlags = 0x1004;" (assignment_expression "wctrlFlags = 0x1004" identifier = number_literal) ;) })) (expression_statement "local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0);" (assignment_expression "local_80 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0)" identifier = (call_expression "sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0)" identifier (argument_list "(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,wctrlFlags,(int)local_c0)" ( identifier , identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (local_80 == (WhereInfo *)0x0) goto LAB_00091be9;" if (parenthesized_expression "(local_80 == (WhereInfo *)0x0)" ( (binary_expression "local_80 == (WhereInfo *)0x0" identifier == (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "local_64 = (Expr *)local_80->aiCurOnePass[0];" (assignment_expression "local_64 = (Expr *)local_80->aiCurOnePass[0]" identifier = (cast_expression "(Expr *)local_80->aiCurOnePass[0]" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80->aiCurOnePass[0]" (field_expression "local_80->aiCurOnePass" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "local_78 = (Expr *)local_80->aiCurOnePass[1];" (assignment_expression "local_78 = (Expr *)local_80->aiCurOnePass[1]" identifier = (cast_expression "(Expr *)local_80->aiCurOnePass[1]" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80->aiCurOnePass[1]" (field_expression "local_80->aiCurOnePass" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "uVar2 = local_80->eOnePass;" (assignment_expression "uVar2 = local_80->eOnePass" identifier = (field_expression "local_80->eOnePass" identifier -> field_identifier)) ;) (expression_statement "bVar9 = local_80->field_0x30 & 1;" (assignment_expression "bVar9 = local_80->field_0x30 & 1" identifier = (binary_expression "local_80->field_0x30 & 1" (field_expression "local_80->field_0x30" identifier -> field_identifier) & number_literal)) ;) (expression_statement "pTVar31 = pTVar30;" (assignment_expression "pTVar31 = pTVar30" identifier = identifier) ;) (if_statement "if (uVar2 == '\x01') {\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }" if (parenthesized_expression "(uVar2 == '\x01')" ( (binary_expression "uVar2 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                uVar18 = pTab->tabFlags;\n                goto LAB_00091f2a;\n              }" { (expression_statement "uVar18 = pTab->tabFlags;" (assignment_expression "uVar18 = pTab->tabFlags" identifier = (field_expression "pTab->tabFlags" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;) })) (expression_statement "pPVar22 = pParse->pToplevel;" (assignment_expression "pPVar22 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pPVar22 = pParse;\n              }" { (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;) })) (expression_statement "pPVar22->isMultiWrite = '\x01';" (assignment_expression "pPVar22->isMultiWrite = '\x01'" (field_expression "pPVar22->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar18 = pTab->tabFlags;" (assignment_expression "uVar18 = pTab->tabFlags" identifier = (field_expression "pTab->tabFlags" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == '\x02') {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" if (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;\n                if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)(short)local_a4;\n                uVar2 = '\0';\n                local_98 = pTVar30;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" { (if_statement "if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))\n                goto LAB_00091f2a;" if (parenthesized_expression "((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'))" ( (binary_expression "(((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0')" (parenthesized_expression "(((int)local_78 < 0) || (local_dc == local_78))" ( (binary_expression "((int)local_78 < 0) || (local_dc == local_78)" (parenthesized_expression "((int)local_78 < 0)" ( (binary_expression "(int)local_78 < 0" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(local_dc == local_78)" ( (binary_expression "local_dc == local_78" identifier == identifier) ))) )) || (parenthesized_expression "(*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0')" ( (binary_expression "*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) == '\0'" (pointer_expression "*(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34))" * (cast_expression "(char *)((int)piVar21 + ((int)local_78 - (int)pEVar34))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + ((int)local_78 - (int)pEVar34))" ( (binary_expression "(int)piVar21 + ((int)local_78 - (int)pEVar34)" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_78 - (int)pEVar34)" ( (binary_expression "(int)local_78 - (int)pEVar34" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pEVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;)) (if_statement "if ((uVar18 & 0x80) == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }" if (parenthesized_expression "((uVar18 & 0x80) == 0)" ( (binary_expression "(uVar18 & 0x80) == 0" (parenthesized_expression "(uVar18 & 0x80)" ( (binary_expression "uVar18 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);\n                  goto LAB_000931ef;\n                }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" identifier (argument_list "((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (goto_statement "goto LAB_000931ef;" goto statement_identifier ;) })) (expression_statement "local_c8 = (uint)(short)local_a4;" (assignment_expression "local_c8 = (uint)(short)local_a4" identifier = (cast_expression "(uint)(short)local_a4" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "uVar2 = '\0';" (assignment_expression "uVar2 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_98 = pTVar30;" (assignment_expression "local_98 = pTVar30" identifier = identifier) ;) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (if_statement "if (0 < (int)local_c8) goto LAB_00091f43;" if (parenthesized_expression "(0 < (int)local_c8)" ( (binary_expression "0 < (int)local_c8" number_literal < (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00091f43;" goto statement_identifier ;)) (goto_statement "goto LAB_00092c5d;" goto statement_identifier ;) })) (if_statement "if ((uVar18 & 0x80) != 0) goto LAB_00091f32;" if (parenthesized_expression "((uVar18 & 0x80) != 0)" ( (binary_expression "(uVar18 & 0x80) != 0" (parenthesized_expression "(uVar18 & 0x80)" ( (binary_expression "uVar18 & 0x80" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00091f32;" goto statement_identifier ;)) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" identifier (argument_list "((Vdbe *)local_e8,0x7f,(int)local_dc,(int)local_fc,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (if_statement "if (uVar2 == '\0') {\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000931ef:\n                iVar13 = pParse->nMem + 1;\n                pParse->nMem = iVar13;\n                *(int *)local_98 = iVar13;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);\n                uVar2 = '\0';\n              }" { (labeled_statement "LAB_000931ef:\n                iVar13 = pParse->nMem + 1;" statement_identifier : (expression_statement "iVar13 = pParse->nMem + 1;" (assignment_expression "iVar13 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "pParse->nMem = iVar13;" (assignment_expression "pParse->nMem = iVar13" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "*(int *)local_98 = iVar13;" (assignment_expression "*(int *)local_98 = iVar13" (pointer_expression "*(int *)local_98" * (cast_expression "(int *)local_98" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0)" identifier (argument_list "((Vdbe *)local_e8,0x93,local_84,(int)local_fc,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "uVar2 = '\0';" (assignment_expression "uVar2 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "pTVar31 = local_8c;" (assignment_expression "pTVar31 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = pTVar30;" (assignment_expression "local_98 = pTVar30" identifier = identifier) ;) (labeled_statement "LAB_0009314f:\n              if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }" statement_identifier : (if_statement "if ((uVar2 != '\x02') && (bVar32)) {\n                sqlite3WhereEnd(local_80);\n              }" if (parenthesized_expression "((uVar2 != '\x02') && (bVar32))" ( (binary_expression "(uVar2 != '\x02') && (bVar32)" (parenthesized_expression "(uVar2 != '\x02')" ( (binary_expression "uVar2 != '\x02'" identifier != (char_literal "'\x02'" ' escape_sequence ')) )) && (parenthesized_expression "(bVar32)" ( identifier ))) )) (compound_statement "{\n                sqlite3WhereEnd(local_80);\n              }" { (expression_statement "sqlite3WhereEnd(local_80);" (call_expression "sqlite3WhereEnd(local_80)" identifier (argument_list "(local_80)" ( identifier ))) ;) }))) (if_statement "if (pSVar5 == (Select *)0x0) {\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }\n                if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }\nLAB_00093182:\n                local_f0 = (Vdbe *)iVar28;\n                if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }\n                pTVar30 = pTVar31;\n                if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);\n                local_8c = (Table *)0x0;\n                goto LAB_0009246c;\n              }" { (if_statement "if (uVar2 == '\0') {\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  if (pTab->nModuleArg != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar13 = 0;\nLAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;\nLAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }\n                  if (uVar2 == '\0') goto LAB_000932c3;\n                }" { (if_statement "if (pTab->nModuleArg != 0) goto LAB_000932c3;" if (parenthesized_expression "(pTab->nModuleArg != 0)" ( (binary_expression "pTab->nModuleArg != 0" (field_expression "pTab->nModuleArg" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) (labeled_statement "LAB_00093245:\n                  iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00093247:\n                  sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;" statement_identifier : (expression_statement "sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)\n                  ;" (call_expression "sqlite3OpenTableAndIndices\n                            (pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)" identifier (argument_list "(pParse,pTab,0x61,'\0',(int)pEVar34,(u8 *)piVar21,(int *)0x0,(int *)0x0)" ( identifier , identifier , number_literal , (char_literal "'\0'" ' escape_sequence ') , (cast_expression "(int)pEVar34" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(u8 *)piVar21" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (labeled_statement "LAB_0009326e:\n                  if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }" statement_identifier : (if_statement "if (iVar13 != 0) {\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar29 = *(int *)((int)local_e8 + 0x68) + -1;\n                    if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }\n                  }" { (expression_statement "iVar29 = *(int *)((int)local_e8 + 0x68) + -1;" (assignment_expression "iVar29 = *(int *)((int)local_e8 + 0x68) + -1" identifier = (binary_expression "*(int *)((int)local_e8 + 0x68) + -1" (pointer_expression "*(int *)((int)local_e8 + 0x68)" * (cast_expression "(int *)((int)local_e8 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x68)" ( (binary_expression "(int)local_e8 + 0x68" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (if_statement "if (iVar29 == iVar13) {\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }\n                    else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }" if (parenthesized_expression "(iVar29 == iVar13)" ( (binary_expression "iVar29 == iVar13" identifier == identifier) )) (compound_statement "{\n                      *(int *)((int)local_e8 + 0x68) = iVar13;\n                    }" { (expression_statement "*(int *)((int)local_e8 + 0x68) = iVar13;" (assignment_expression "*(int *)((int)local_e8 + 0x68) = iVar13" (pointer_expression "*(int *)((int)local_e8 + 0x68)" * (cast_expression "(int *)((int)local_e8 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x68)" ( (binary_expression "(int)local_e8 + 0x68" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }" else (compound_statement "{\n                      if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }\n                      local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);\n                      if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }\n                      local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);\n                    }" { (if_statement "if (-1 < iVar13) {\n                        iVar29 = iVar13;\n                      }" if (parenthesized_expression "(-1 < iVar13)" ( (binary_expression "-1 < iVar13" number_literal < identifier) )) (compound_statement "{\n                        iVar29 = iVar13;\n                      }" { (expression_statement "iVar29 = iVar13;" (assignment_expression "iVar29 = iVar13" identifier = identifier) ;) })) (expression_statement "local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5);" (assignment_expression "local_f0 = (Vdbe *)(unaff_EDI + 0x4e0b5)" identifier = (cast_expression "(Vdbe *)(unaff_EDI + 0x4e0b5)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x4e0b5)" ( (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal) )))) ;) (if_statement "if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }" if (parenthesized_expression "(((sqlite3 *)local_e8->pParse)->mallocFailed == '\0')" ( (binary_expression "((sqlite3 *)local_e8->pParse)->mallocFailed == '\0'" (field_expression "((sqlite3 *)local_e8->pParse)->mallocFailed" (parenthesized_expression "((sqlite3 *)local_e8->pParse)" ( (cast_expression "(sqlite3 *)local_e8->pParse" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e8->pParse" identifier -> field_identifier)) )) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);\n                      }" { (expression_statement "local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29);" (assignment_expression "local_f0 = (Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29)" identifier = (cast_expression "(Vdbe *)(*(Op **)((int)local_e8 + 100) + iVar29)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(Op **)((int)local_e8 + 100) + iVar29)" ( (binary_expression "*(Op **)((int)local_e8 + 100) + iVar29" (pointer_expression "*(Op **)((int)local_e8 + 100)" * (cast_expression "(Op **)((int)local_e8 + 100)" ( (type_descriptor "Op **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_e8 + 100)" ( (binary_expression "(int)local_e8 + 100" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + identifier) )))) ;) })) (expression_statement "local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68);" (assignment_expression "local_f0->pNext = (Vdbe *)*(int *)((int)local_e8 + 0x68)" (field_expression "local_f0->pNext" identifier -> field_identifier) = (cast_expression "(Vdbe *)*(int *)((int)local_e8 + 0x68)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(int *)((int)local_e8 + 0x68)" * (cast_expression "(int *)((int)local_e8 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x68)" ( (binary_expression "(int)local_e8 + 0x68" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) }))) (if_statement "if (uVar2 == '\0') goto LAB_000932c3;" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }" else (compound_statement "{\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }\n                  if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (pTab->nModuleArg == 0) goto LAB_00093245;\n                }" { (if_statement "if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_64)" ( (binary_expression "-1 < (int)local_64" number_literal < (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34)) = 0" (pointer_expression "*(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34))" * (cast_expression "(undefined1 *)((int)piVar21 + ((int)local_64 - (int)pEVar34))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + ((int)local_64 - (int)pEVar34))" ( (binary_expression "(int)piVar21 + ((int)local_64 - (int)pEVar34)" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_64 - (int)pEVar34)" ( (binary_expression "(int)local_64 - (int)pEVar34" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pEVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_78)" ( (binary_expression "-1 < (int)local_78" number_literal < (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34)) = 0" (pointer_expression "*(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34))" * (cast_expression "(undefined1 *)((int)piVar21 + ((int)local_78 - (int)pEVar34))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + ((int)local_78 - (int)pEVar34))" ( (binary_expression "(int)piVar21 + ((int)local_78 - (int)pEVar34)" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_78 - (int)pEVar34)" ( (binary_expression "(int)local_78 - (int)pEVar34" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pEVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if ((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))) {\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" if (parenthesized_expression "((uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f))))" ( (binary_expression "(uVar2 == '\x02') && (0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))" (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) && (parenthesized_expression "(0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f)))" ( (binary_expression "0 < (int)(local_90 + ((int)~(uint)local_78 >> 0x1f))" number_literal < (cast_expression "(int)(local_90 + ((int)~(uint)local_78 >> 0x1f))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_90 + ((int)~(uint)local_78 >> 0x1f))" ( (binary_expression "local_90 + ((int)~(uint)local_78 >> 0x1f)" identifier + (parenthesized_expression "((int)~(uint)local_78 >> 0x1f)" ( (binary_expression "(int)~(uint)local_78 >> 0x1f" (cast_expression "(int)~(uint)local_78" ( (type_descriptor "int" primitive_type) ) (unary_expression "~(uint)local_78" ~ (cast_expression "(uint)local_78" ( (type_descriptor "uint" type_identifier) ) identifier))) >> number_literal) ))) )))) ))) )) (compound_statement "{\n                    iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);\n                    if (pTab->nModuleArg == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" { (expression_statement "iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0);" (assignment_expression "iVar13 = sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x11,0,0,0)" identifier (argument_list "((Vdbe *)local_e8,0x11,0,0,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , number_literal , number_literal )))) ;) (if_statement "if (pTab->nModuleArg == 0) goto LAB_00093247;" if (parenthesized_expression "(pTab->nModuleArg == 0)" ( (binary_expression "pTab->nModuleArg == 0" (field_expression "pTab->nModuleArg" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00093247;" goto statement_identifier ;)) (goto_statement "goto LAB_0009326e;" goto statement_identifier ;) })) (if_statement "if (pTab->nModuleArg == 0) goto LAB_00093245;" if (parenthesized_expression "(pTab->nModuleArg == 0)" ( (binary_expression "pTab->nModuleArg == 0" (field_expression "pTab->nModuleArg" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00093245;" goto statement_identifier ;)) }))) (if_statement "if ((local_dc != local_64) && (local_dc != local_78)) {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }" if (parenthesized_expression "((local_dc != local_64) && (local_dc != local_78))" ( (binary_expression "(local_dc != local_64) && (local_dc != local_78)" (parenthesized_expression "(local_dc != local_64)" ( (binary_expression "local_dc != local_64" identifier != identifier) )) && (parenthesized_expression "(local_dc != local_78)" ( (binary_expression "local_dc != local_78" identifier != identifier) ))) )) (compound_statement "{\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);\n                }" { (expression_statement "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4);" (call_expression "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4)" identifier (argument_list "((Vdbe *)local_e8,0x1d,(int)local_dc,iVar28,(int)pTVar31,local_c4)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)pTVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) })) (labeled_statement "LAB_00093182:\n                local_f0 = (Vdbe *)iVar28;" statement_identifier : (expression_statement "local_f0 = (Vdbe *)iVar28;" (assignment_expression "local_f0 = (Vdbe *)iVar28" identifier = (cast_expression "(Vdbe *)iVar28" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (uVar2 != '\x01') {\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }" if (parenthesized_expression "(uVar2 != '\x01')" ( (binary_expression "uVar2 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                  local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                  pParse->nLabel = (int)local_f0;\n                }" { (expression_statement "local_f0 = (Vdbe *)(pParse->nLabel + -1);" (assignment_expression "local_f0 = (Vdbe *)(pParse->nLabel + -1)" identifier = (cast_expression "(Vdbe *)(pParse->nLabel + -1)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)local_f0;" (assignment_expression "pParse->nLabel = (int)local_f0" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "pTVar30 = pTVar31;" (assignment_expression "pTVar30 = pTVar31" identifier = identifier) ;) (if_statement "if (local_e0 == (Index *)0x0) {\n                  pTVar30 = local_fc;\n                }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pTVar30 = local_fc;\n                }" { (expression_statement "pTVar30 = local_fc;" (assignment_expression "pTVar30 = local_fc" identifier = identifier) ;) })) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0)" identifier (argument_list "((Vdbe *)local_e8,0x32,(int)pTVar30,iVar28,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)pTVar30" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))) ;) (expression_statement "local_8c = (Table *)0x0;" (assignment_expression "local_8c = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (if_statement "if (uVar2 != '\0') goto LAB_00093182;" if (parenthesized_expression "(uVar2 != '\0')" ( (binary_expression "uVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00093182;" goto statement_identifier ;)) (labeled_statement "LAB_000932c3:\n              if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" statement_identifier : (if_statement "if ((local_e0 != (Index *)0x0) || (local_100 != 0)) {\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" if (parenthesized_expression "((local_e0 != (Index *)0x0) || (local_100 != 0))" ( (binary_expression "(local_e0 != (Index *)0x0) || (local_100 != 0)" (parenthesized_expression "(local_e0 != (Index *)0x0)" ( (binary_expression "local_e0 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) ))) )) (compound_statement "{\n                local_f0 = (Vdbe *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)local_f0;\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);\n                local_8c = *(Table **)((int)local_e8 + 0x68);\n                if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }\n                if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar8 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" { (expression_statement "local_f0 = (Vdbe *)(pParse->nLabel + -1);" (assignment_expression "local_f0 = (Vdbe *)(pParse->nLabel + -1)" identifier = (cast_expression "(Vdbe *)(pParse->nLabel + -1)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)local_f0;" (assignment_expression "pParse->nLabel = (int)local_f0" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0)" identifier (argument_list "((Vdbe *)local_e8,0x25,(int)local_d8,iVar28,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))) ;) (expression_statement "local_8c = *(Table **)((int)local_e8 + 0x68);" (assignment_expression "local_8c = *(Table **)((int)local_e8 + 0x68)" identifier = (pointer_expression "*(Table **)((int)local_e8 + 0x68)" * (cast_expression "(Table **)((int)local_e8 + 0x68)" ( (type_descriptor "Table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_e8 + 0x68)" ( (binary_expression "(int)local_e8 + 0x68" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (local_100 == 0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);\n                  goto LAB_00093326;\n                }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0)" identifier (argument_list "((Vdbe *)local_e8,0x7e,(int)local_d8,(int)pTVar31,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pTVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0);" (call_expression "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0)" identifier (argument_list "((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pTVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (goto_statement "goto LAB_00093326;" goto statement_identifier ;) })) (if_statement "if (pSVar5 == (Select *)0x0) {\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }\n                  goto LAB_0009246c;\n                }" { (if_statement "if (local_e0 == (Index *)0x0) {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }\n                  else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);\n                  }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0)" identifier (argument_list "((Vdbe *)local_e8,0x7f,(int)local_d8,(int)local_fc,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,\n                                      (int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }" else (compound_statement "{\n                    for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }\n                    sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);\n                  }" { (for_statement "for (iVar13 = 0; iVar13 < (short)local_a4; iVar13 = iVar13 + 1) {\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }" for ( (assignment_expression "iVar13 = 0" identifier = number_literal) ; (binary_expression "iVar13 < (short)local_a4" identifier < (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ; (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ) (compound_statement "{\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);\n                    }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13)" identifier (argument_list "((Vdbe *)local_e8,0x59,(int)local_d8,iVar13,\n                                        (int)&local_98->zName + iVar13)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (binary_expression "(int)&local_98->zName + iVar13" (cast_expression "(int)&local_98->zName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_98->zName" & (field_expression "local_98->zName" identifier -> field_identifier))) + identifier) ))) ;) })) (expression_statement "sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4);" (call_expression "sqlite3VdbeAddOp4Int\n                              ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4)" identifier (argument_list "((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)local_98,\n                               (int)(short)local_a4)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)(short)local_a4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ))) ;) }))) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (if_statement "if (cVar8 == '\0') goto LAB_000924ae;" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000924ae;" goto statement_identifier ;)) (goto_statement "goto LAB_0009342d;" goto statement_identifier ;) }))) (expression_statement "local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc);" (assignment_expression "local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc)" identifier = (cast_expression "(Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x2a,local_84,iVar28,\n                                                   (int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_8c = (Table *)0x0;" (assignment_expression "local_8c = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00093326:\n              if (cVar8 != '\0') goto LAB_0009247e;" statement_identifier : (if_statement "if (cVar8 != '\0') goto LAB_0009247e;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0009247e;" goto statement_identifier ;))) }) (else_clause "else {\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }" else (compound_statement "{\n              if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }\n              local_c4 = (int)(short)local_a4;\n              iVar13 = pParse->nMem;\n              pTVar30 = (Table *)(iVar13 + 1);\n              local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);\n              pParse->nMem = (int)local_8c;\n              if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }\n              uVar2 = '\0';\n              bVar9 = 1;\n              local_80 = (WhereInfo *)0x0;\n              pPVar22 = pParse->pToplevel;\n              if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }\n              pPVar22->isMultiWrite = '\x01';\n              local_98 = pTVar30;\nLAB_0009244d:\n              local_8c = (Table *)0x0;\n              pTVar31 = pTVar30;\n              local_f0 = (Vdbe *)iVar28;\n              if (pWhere == (Expr *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }\n            }" { (if_statement "if (local_e0 == (Index *)0x0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = local_e0->nKeyCol;\n              }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_a4 = 0;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_a4 = local_e0->nKeyCol;\n              }" else (compound_statement "{\n                local_a4 = local_e0->nKeyCol;\n              }" { (expression_statement "local_a4 = local_e0->nKeyCol;" (assignment_expression "local_a4 = local_e0->nKeyCol" identifier = (field_expression "local_e0->nKeyCol" identifier -> field_identifier)) ;) }))) (expression_statement "local_c4 = (int)(short)local_a4;" (assignment_expression "local_c4 = (int)(short)local_a4" identifier = (cast_expression "(int)(short)local_a4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "iVar13 = pParse->nMem;" (assignment_expression "iVar13 = pParse->nMem" identifier = (field_expression "pParse->nMem" identifier -> field_identifier)) ;) (expression_statement "pTVar30 = (Table *)(iVar13 + 1);" (assignment_expression "pTVar30 = (Table *)(iVar13 + 1)" identifier = (cast_expression "(Table *)(iVar13 + 1)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4);" (assignment_expression "local_8c = (Table *)(local_100 + 1 + iVar13 + local_c4)" identifier = (cast_expression "(Table *)(local_100 + 1 + iVar13 + local_c4)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_100 + 1 + iVar13 + local_c4)" ( (binary_expression "local_100 + 1 + iVar13 + local_c4" (binary_expression "local_100 + 1 + iVar13" (binary_expression "local_100 + 1" identifier + number_literal) + identifier) + identifier) )))) ;) (expression_statement "pParse->nMem = (int)local_8c;" (assignment_expression "pParse->nMem = (int)local_8c" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pWhere == (Expr *)0x0) {\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }\n              else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }" if (parenthesized_expression "(pWhere == (Expr *)0x0)" ( (binary_expression "pWhere == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }\n                iVar29 = local_c4 + local_100 + iVar29;\n                local_d8 = (Expr *)pParse->nTab;\n                pParse->nTab = (int)&local_d8->affExpr;\n                if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);\n                if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }\n              }" { (if_statement "if (pSVar5 == (Select *)0x0) {\n                  iVar29 = 0;\n                }\n                else {\n                  iVar29 = (int)pTab->nCol;\n                }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar29 = 0;\n                }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar29 = (int)pTab->nCol;\n                }" else (compound_statement "{\n                  iVar29 = (int)pTab->nCol;\n                }" { (expression_statement "iVar29 = (int)pTab->nCol;" (assignment_expression "iVar29 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) }))) (expression_statement "iVar29 = local_c4 + local_100 + iVar29;" (assignment_expression "iVar29 = local_c4 + local_100 + iVar29" identifier = (binary_expression "local_c4 + local_100 + iVar29" (binary_expression "local_c4 + local_100" identifier + identifier) + identifier)) ;) (expression_statement "local_d8 = (Expr *)pParse->nTab;" (assignment_expression "local_d8 = (Expr *)pParse->nTab" identifier = (cast_expression "(Expr *)pParse->nTab" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nTab" identifier -> field_identifier))) ;) (expression_statement "pParse->nTab = (int)&local_d8->affExpr;" (assignment_expression "pParse->nTab = (int)&local_d8->affExpr" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)&local_d8->affExpr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_d8->affExpr" & (field_expression "local_d8->affExpr" identifier -> field_identifier)))) ;) (if_statement "if (local_e0 == (Index *)0x0) {\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }\n                else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  local_f0 = (Vdbe *)pOrderBy_00;\n                }" { (expression_statement "pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);" (assignment_expression "pOrderBy_00 = (WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" identifier = (cast_expression "(WhereInfo *)\n                                sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" identifier (argument_list "((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))))) ;) (expression_statement "local_f0 = (Vdbe *)pOrderBy_00;" (assignment_expression "local_f0 = (Vdbe *)pOrderBy_00" identifier = (cast_expression "(Vdbe *)pOrderBy_00" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }" else (compound_statement "{\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);\n                  local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);\n                  pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);\n                  pOrderBy_00 = (WhereInfo *)pVVar23;\n                  if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }\n                }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4)" identifier (argument_list "((Vdbe *)local_e8,0x48,0,(int)pTVar30,iVar13 + local_c4)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(int)pTVar30" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "iVar13 + local_c4" identifier + identifier) ))) ;) (expression_statement "local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0);" (assignment_expression "local_f0 = (Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" identifier = (cast_expression "(Vdbe *)sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" identifier (argument_list "((Vdbe *)local_e8,100,(int)local_d8,iVar29,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))))) ;) (expression_statement "pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0);" (assignment_expression "pVVar23 = (Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0)" identifier = (cast_expression "(Vdbe *)sqlite3KeyInfoOfIndex(pParse,local_e0)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3KeyInfoOfIndex(pParse,local_e0)" identifier (argument_list "(pParse,local_e0)" ( identifier , identifier ))))) ;) (expression_statement "pOrderBy_00 = (WhereInfo *)pVVar23;" (assignment_expression "pOrderBy_00 = (WhereInfo *)pVVar23" identifier = (cast_expression "(WhereInfo *)pVVar23" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pVVar23 != (Vdbe *)0x0) {\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }" if (parenthesized_expression "(pVVar23 != (Vdbe *)0x0)" ( (binary_expression "pVVar23 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    *(u16 *)&pVVar23->pNext = (u16)iVar29;\n                    pOrderBy_00 = local_e8;\n                    sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);\n                  }" { (expression_statement "*(u16 *)&pVVar23->pNext = (u16)iVar29;" (assignment_expression "*(u16 *)&pVVar23->pNext = (u16)iVar29" (pointer_expression "*(u16 *)&pVVar23->pNext" * (cast_expression "(u16 *)&pVVar23->pNext" ( (type_descriptor "u16 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVVar23->pNext" & (field_expression "pVVar23->pNext" identifier -> field_identifier)))) = (cast_expression "(u16)iVar29" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "pOrderBy_00 = local_e8;" (assignment_expression "pOrderBy_00 = local_e8" identifier = identifier) ;) (expression_statement "sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9);" (call_expression "sqlite3VdbeAppendP4((Vdbe *)local_e8,pVVar23,-9)" identifier (argument_list "((Vdbe *)local_e8,pVVar23,-9)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) })) }))) (if_statement "if (local_100 == 0) goto LAB_00093044;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00093044;" goto statement_identifier ;)) (expression_statement "updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4);" (call_expression "updateFromSelect(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4)" identifier (argument_list "(pParse,(int)local_d8,local_e0,pChanges_00,pSrc,(Expr *)pTabList,\n                                 (ExprList *)pOrderBy_00,in_stack_fffffee4)" ( identifier , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ExprList *)pOrderBy_00" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if (pSVar5 != (Select *)0x0) {\n                  local_dc = local_d8;\n                }" if (parenthesized_expression "(pSVar5 != (Select *)0x0)" ( (binary_expression "pSVar5 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_dc = local_d8;\n                }" { (expression_statement "local_dc = local_d8;" (assignment_expression "local_dc = local_d8" identifier = identifier) ;) })) }) (else_clause "else {\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }" else (compound_statement "{\n                if (local_100 == 0) goto LAB_00091ee2;\n                local_d8 = (Expr *)0x0;\n              }" { (if_statement "if (local_100 == 0) goto LAB_00091ee2;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091ee2;" goto statement_identifier ;)) (expression_statement "local_d8 = (Expr *)0x0;" (assignment_expression "local_d8 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "uVar2 = '\0';" (assignment_expression "uVar2 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar9 = 1;" (assignment_expression "bVar9 = 1" identifier = number_literal) ;) (expression_statement "local_80 = (WhereInfo *)0x0;" (assignment_expression "local_80 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar22 = pParse->pToplevel;" (assignment_expression "pPVar22 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n                pPVar22 = pParse;\n              }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pPVar22 = pParse;\n              }" { (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;) })) (expression_statement "pPVar22->isMultiWrite = '\x01';" (assignment_expression "pPVar22->isMultiWrite = '\x01'" (field_expression "pPVar22->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_98 = pTVar30;" (assignment_expression "local_98 = pTVar30" identifier = identifier) ;) (labeled_statement "LAB_0009244d:\n              local_8c = (Table *)0x0;" statement_identifier : (expression_statement "local_8c = (Table *)0x0;" (assignment_expression "local_8c = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pTVar31 = pTVar30;" (assignment_expression "pTVar31 = pTVar30" identifier = identifier) ;) (expression_statement "local_f0 = (Vdbe *)iVar28;" (assignment_expression "local_f0 = (Vdbe *)iVar28" identifier = (cast_expression "(Vdbe *)iVar28" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pWhere == (Expr *)0x0) goto LAB_0009314f;" if (parenthesized_expression "(pWhere == (Expr *)0x0)" ( (binary_expression "pWhere == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009314f;" goto statement_identifier ;)) (labeled_statement "LAB_0009246c:\n              if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }" statement_identifier : (if_statement "if (cVar8 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);\n              }" { (if_statement "if (local_100 == 0) {\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }\n                else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }\n                }" { (labeled_statement "LAB_0009247e:\n                  if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }" statement_identifier : (if_statement "if (pParse->pVdbe != (Vdbe *)0x0) {\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }" if (parenthesized_expression "(pParse->pVdbe != (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe != (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    sqlite3ExprCode(pParse,local_b8,(int)local_d4);\n                  }" { (expression_statement "sqlite3ExprCode(pParse,local_b8,(int)local_d4);" (call_expression "sqlite3ExprCode(pParse,local_b8,(int)local_d4)" identifier (argument_list "(pParse,local_b8,(int)local_d4)" ( identifier , identifier , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) }) (else_clause "else {\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }" else (compound_statement "{\nLAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);\n                }" { (labeled_statement "LAB_0009342d:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4)" identifier (argument_list "((Vdbe *)local_e8,0x59,(int)local_d8,local_ac,(int)local_d4)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) }))) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0xf,(int)local_d4,0,0)" identifier (argument_list "((Vdbe *)local_e8,0xf,(int)local_d4,0,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal ))) ;) }))) }))) (labeled_statement "LAB_000924ae:\n            if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }" statement_identifier : (if_statement "if ((local_6e != '\0') || (bVar33)) {\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }" if (parenthesized_expression "((local_6e != '\0') || (bVar33))" ( (binary_expression "(local_6e != '\0') || (bVar33)" (parenthesized_expression "(local_6e != '\0')" ( (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar33)" ( identifier ))) )) (compound_statement "{\n              local_c8 = 0;\n              if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }\nLAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);\n              if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }\n              if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if ((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)) {\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }" if (parenthesized_expression "((iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0))" ( (binary_expression "(iVar11 != 0) && ((pParse->db->flags & 0x4000) != 0)" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "((pParse->db->flags & 0x4000) != 0)" ( (binary_expression "(pParse->db->flags & 0x4000) != 0" (parenthesized_expression "(pParse->db->flags & 0x4000)" ( (binary_expression "pParse->db->flags & 0x4000" (field_expression "pParse->db->flags" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                local_c8 = sqlite3FkOldmask(pParse,pTab);\n              }" { (expression_statement "local_c8 = sqlite3FkOldmask(pParse,pTab);" (assignment_expression "local_c8 = sqlite3FkOldmask(pParse,pTab)" identifier = (call_expression "sqlite3FkOldmask(pParse,pTab)" identifier (argument_list "(pParse,pTab)" ( identifier , identifier )))) ;) })) (labeled_statement "LAB_000924dd:\n              uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);" statement_identifier : (expression_statement "uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges);" (assignment_expression "uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges)" identifier = (call_expression "sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges)" identifier (argument_list "(pParse,pTrigger,pChanges_00,0,3,pTab,(int)pChanges)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , (cast_expression "(int)pChanges" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (if_statement "if (0 < pTab->nCol) {\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }" if (parenthesized_expression "(0 < pTab->nCol)" ( (binary_expression "0 < pTab->nCol" number_literal < (field_expression "pTab->nCol" identifier -> field_identifier)) )) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 < pTab->nCol);" do (compound_statement "{\n                  sVar10 = (short)iVar13;\n                  if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }\n                  if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "sVar10 = (short)iVar13;" (assignment_expression "sVar10 = (short)iVar13" identifier = (cast_expression "(short)iVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((pTab->tabFlags & 0x20) != 0) {\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }" if (parenthesized_expression "((pTab->tabFlags & 0x20) != 0)" ( (binary_expression "(pTab->tabFlags & 0x20) != 0" (parenthesized_expression "(pTab->tabFlags & 0x20)" ( (binary_expression "pTab->tabFlags & 0x20" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);\n                  }" { (expression_statement "sVar10 = sqlite3TableColumnToStorage(pTab,sVar10);" (assignment_expression "sVar10 = sqlite3TableColumnToStorage(pTab,sVar10)" identifier = (call_expression "sqlite3TableColumnToStorage(pTab,sVar10)" identifier (argument_list "(pTab,sVar10)" ( identifier , identifier )))) ;) })) (if_statement "if (((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))) {\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }\n                  else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }" if (parenthesized_expression "(((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0))))" ( (binary_expression "((uVar18 | local_c8) == 0xffffffff) ||\n                     (((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))" (parenthesized_expression "((uVar18 | local_c8) == 0xffffffff)" ( (binary_expression "(uVar18 | local_c8) == 0xffffffff" (parenthesized_expression "(uVar18 | local_c8)" ( (binary_expression "uVar18 | local_c8" identifier | identifier) )) == number_literal) )) || (parenthesized_expression "(((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)))" ( (parenthesized_expression "((iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0))" ( (binary_expression "(iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))\n                      || ((pTab->aCol[iVar13].colFlags & 1) != 0)" (parenthesized_expression "(iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0))" ( (binary_expression "iVar13 < 0x20 && (((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0)" (binary_expression "iVar13 < 0x20" identifier < number_literal) && (parenthesized_expression "(((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0)" ( (binary_expression "((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)) != 0" (parenthesized_expression "((uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f))" ( (binary_expression "(uVar18 | local_c8) & 1 << ((byte)iVar13 & 0x1f)" (parenthesized_expression "(uVar18 | local_c8)" ( (binary_expression "uVar18 | local_c8" identifier | identifier) )) & (binary_expression "1 << ((byte)iVar13 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar13 & 0x1f)" ( (binary_expression "(byte)iVar13 & 0x1f" (cast_expression "(byte)iVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) != number_literal) ))) )) || (parenthesized_expression "((pTab->aCol[iVar13].colFlags & 1) != 0)" ( (binary_expression "(pTab->aCol[iVar13].colFlags & 1) != 0" (parenthesized_expression "(pTab->aCol[iVar13].colFlags & 1)" ( (binary_expression "pTab->aCol[iVar13].colFlags & 1" (field_expression "pTab->aCol[iVar13].colFlags" (subscript_expression "pTab->aCol[iVar13]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n                    sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);\n                  }" { (expression_statement "sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74);" (call_expression "sqlite3ExprCodeGetColumnOfTable\n                              ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74)" identifier (argument_list "((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,sVar10 + local_74)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (binary_expression "sVar10 + local_74" identifier + identifier) ))) ;) }) (else_clause "else {\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }" else (compound_statement "{\n                    sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);\n                  }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0)" identifier (argument_list "((Vdbe *)local_e8,0x48,0,sVar10 + local_74,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (binary_expression "sVar10 + local_74" identifier + identifier) , number_literal ))) ;) }))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < pTab->nCol)" ( (binary_expression "iVar13 < pTab->nCol" identifier < (field_expression "pTab->nCol" identifier -> field_identifier)) )) ;) })) (if_statement "if ((cVar8 == '\0') && (local_e0 == (Index *)0x0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }" if (parenthesized_expression "((cVar8 == '\0') && (local_e0 == (Index *)0x0))" ( (binary_expression "(cVar8 == '\0') && (local_e0 == (Index *)0x0)" (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);\n              }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0)" identifier (argument_list "((Vdbe *)local_e8,0x4d,(int)local_fc,(int)local_d4,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) })) }) (else_clause "else {\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }" else (compound_statement "{\n              local_c8 = 0;\n              if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if (pTrigger != (Trigger *)0x0) goto LAB_000924dd;" if (parenthesized_expression "(pTrigger != (Trigger *)0x0)" ( (binary_expression "pTrigger != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000924dd;" goto statement_identifier ;)) })))) (expression_statement "uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges);" (assignment_expression "uVar18 = sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges)" identifier = (call_expression "sqlite3TriggerColmask(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges)" identifier (argument_list "(pParse,pTrigger,pChanges_00,1,1,pTab,(int)pChanges)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , (cast_expression "(int)pChanges" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar13 = (int)pTab->nCol;" (assignment_expression "iVar13 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) (if_statement "if (0 < iVar13) {\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n              uVar25 = 0;\n              iVar29 = local_94;\n              do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);\n            }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "iVar29 = local_94;" (assignment_expression "iVar29 = local_94" identifier = identifier) ;) (do_statement "do {\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              } while ((int)uVar25 < iVar13);" do (compound_statement "{\n                if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }\n                uVar25 = uVar25 + 1;\n                iVar29 = iVar29 + 1;\n              }" { (if_statement "if ((int)pTab->iPKey == uVar25) {\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }\n                else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }" if (parenthesized_expression "((int)pTab->iPKey == uVar25)" ( (binary_expression "(int)pTab->iPKey == uVar25" (cast_expression "(int)pTab->iPKey" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->iPKey" identifier -> field_identifier)) == identifier) )) (compound_statement "{\nLAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);\n                  iVar13 = (int)pTab->nCol;\n                }" { (labeled_statement "LAB_000926a2:\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x48,0,iVar29,0)" identifier (argument_list "((Vdbe *)local_e8,0x48,0,iVar29,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , identifier , number_literal ))) ;)) (expression_statement "iVar13 = (int)pTab->nCol;" (assignment_expression "iVar13 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) }) (else_clause "else {\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }" else (compound_statement "{\n                  uVar3 = pTab->aCol[uVar25].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }\n                }" { (expression_statement "uVar3 = pTab->aCol[uVar25].colFlags;" (assignment_expression "uVar3 = pTab->aCol[uVar25].colFlags" identifier = (field_expression "pTab->aCol[uVar25].colFlags" (subscript_expression "pTab->aCol[uVar25]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if ((uVar3 & 0x60) == 0) {\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }" if (parenthesized_expression "((uVar3 & 0x60) == 0)" ( (binary_expression "(uVar3 & 0x60) == 0" (parenthesized_expression "(uVar3 & 0x60)" ( (binary_expression "uVar3 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar27 = aChange[uVar25];\n                    if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }\n                  }" { (expression_statement "iVar27 = aChange[uVar25];" (assignment_expression "iVar27 = aChange[uVar25]" identifier = (subscript_expression "aChange[uVar25]" identifier [ identifier ])) ;) (if_statement "if (iVar27 < 0) {\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }\n                    else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (compound_statement "{\n                      if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);\n                      bVar9 = 0;\n                      iVar13 = (int)pTab->nCol;\n                    }" { (if_statement "if ((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)) goto LAB_000926a2;" if (parenthesized_expression "((((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0))" ( (binary_expression "(((tmask & 1U) != 0) && ((int)uVar25 < 0x20)) &&\n                         ((uVar18 >> (uVar25 & 0x1f) & 1) == 0)" (parenthesized_expression "(((tmask & 1U) != 0) && ((int)uVar25 < 0x20))" ( (binary_expression "((tmask & 1U) != 0) && ((int)uVar25 < 0x20)" (parenthesized_expression "((tmask & 1U) != 0)" ( (binary_expression "(tmask & 1U) != 0" (parenthesized_expression "(tmask & 1U)" ( (binary_expression "tmask & 1U" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((int)uVar25 < 0x20)" ( (binary_expression "(int)uVar25 < 0x20" (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "((uVar18 >> (uVar25 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar18 >> (uVar25 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar18 >> (uVar25 & 0x1f) & 1)" ( (binary_expression "uVar18 >> (uVar25 & 0x1f) & 1" (binary_expression "uVar18 >> (uVar25 & 0x1f)" identifier >> (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_000926a2;" goto statement_identifier ;)) (expression_statement "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29);" (call_expression "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29)" identifier (argument_list "((Vdbe *)local_e8,pTab,(int)local_dc,uVar25,iVar29)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = (int)pTab->nCol;" (assignment_expression "iVar13 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) }) (else_clause "else if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }" else (if_statement "if (local_100 == 0) {\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }\n                    else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }\n                    }" { (if_statement "if (pParse->pVdbe != (Vdbe *)0x0) {\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }" if (parenthesized_expression "(pParse->pVdbe != (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe != (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);\n                        iVar13 = (int)pTab->nCol;\n                      }" { (expression_statement "sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29);" (call_expression "sqlite3ExprCode(pParse,pChanges_00->a[iVar27].pExpr,iVar29)" identifier (argument_list "(pParse,pChanges_00->a[iVar27].pExpr,iVar29)" ( identifier , (field_expression "pChanges_00->a[iVar27].pExpr" (subscript_expression "pChanges_00->a[iVar27]" (field_expression "pChanges_00->a" identifier -> field_identifier) [ identifier ]) . field_identifier) , identifier ))) ;) (expression_statement "iVar13 = (int)pTab->nCol;" (assignment_expression "iVar13 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) })) }) (else_clause "else {\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }" else (compound_statement "{\n                      if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }\n                      sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);\n                      iVar13 = (int)pTab->nCol;\n                    }" { (if_statement "if (pSVar5 == (Select *)0x0) {\n                        iVar13 = (int)(short)local_a4;\n                      }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        iVar13 = (int)(short)local_a4;\n                      }" { (expression_statement "iVar13 = (int)(short)local_a4;" (assignment_expression "iVar13 = (int)(short)local_a4" identifier = (cast_expression "(int)(short)local_a4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29)" identifier (argument_list "((Vdbe *)local_e8,0x59,(int)local_d8,iVar27 + iVar13,iVar29)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "iVar27 + iVar13" identifier + identifier) , identifier ))) ;) (expression_statement "iVar13 = (int)pTab->nCol;" (assignment_expression "iVar13 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) }))))) }) (else_clause "else {\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }" else (compound_statement "{\n                    iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);\n                  }" { (expression_statement "iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0);" (assignment_expression "iVar29 = iVar29 + -1 + (uint)((uVar3 & 0x20) == 0)" identifier = (binary_expression "iVar29 + -1 + (uint)((uVar3 & 0x20) == 0)" (binary_expression "iVar29 + -1" identifier + number_literal) + (call_expression "(uint)((uVar3 & 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar3 & 0x20) == 0)" ( (binary_expression "(uVar3 & 0x20) == 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) == number_literal) ))))) ;) }))) }))) (expression_statement "uVar25 = uVar25 + 1;" (assignment_expression "uVar25 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar25 < iVar13)" ( (binary_expression "(int)uVar25 < iVar13" (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (if_statement "if ((pTab->tabFlags & 0x60) != 0) {\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }" if (parenthesized_expression "((pTab->tabFlags & 0x60) != 0)" ( (binary_expression "(pTab->tabFlags & 0x60) != 0" (parenthesized_expression "(pTab->tabFlags & 0x60)" ( (binary_expression "pTab->tabFlags & 0x60" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n            }" { (expression_statement "sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);" (call_expression "sqlite3ComputeGeneratedColumns(pParse,local_94,pTab)" identifier (argument_list "(pParse,local_94,pTab)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((tmask & 1U) == 0) {\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }\n            else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }" if (parenthesized_expression "((tmask & 1U) == 0)" ( (binary_expression "(tmask & 1U) == 0" (parenthesized_expression "(tmask & 1U)" ( (binary_expression "tmask & 1U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }\n            }" { (if_statement "if (pSVar5 == (Select *)0x0) {\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00092d63:\n                pPVar22 = pParse;\n                sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);\n                bVar32 = bVar26 != 0;\n                piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);\n                if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }\n                if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }\n                pPVar22 = pParse;\n                sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);\n                if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }\n                if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }\n                if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }\n              }" { (labeled_statement "LAB_00092d63:\n                pPVar22 = pParse;" statement_identifier : (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;)) (expression_statement "sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0);" (call_expression "sqlite3GenerateConstraintChecks\n                          (pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0)" identifier (argument_list "(pParse,pTab,aRegIdx,(int)local_dc,(int)local_c0,(int)local_d4,\n                           (int)local_fc,bVar26,(u8)pChanges,(int)local_f0,&bReplace,aChange,\n                           (Upsert *)0x0)" ( identifier , identifier , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(u8)pChanges" ( (type_descriptor "u8" type_identifier) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (pointer_expression "&bReplace" & identifier) , identifier , (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "bVar32 = bVar26 != 0;" (assignment_expression "bVar32 = bVar26 != 0" identifier = (binary_expression "bVar26 != 0" identifier != number_literal)) ;) (expression_statement "piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32);" (assignment_expression "piVar21 = (int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32)" identifier = (cast_expression "(int *)CONCAT31((int3)((uint)pPVar22 >> 8),bVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31((int3)((uint)pPVar22 >> 8),bVar32)" identifier (argument_list "((int3)((uint)pPVar22 >> 8),bVar32)" ( (call_expression "(int3)((uint)pPVar22 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)pPVar22 >> 8)" ( (binary_expression "(uint)pPVar22 >> 8" (cast_expression "(uint)pPVar22" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , identifier ))))) ;) (if_statement "if ((bReplace != 0) || (bVar32)) {\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }" if (parenthesized_expression "((bReplace != 0) || (bVar32))" ( (binary_expression "(bReplace != 0) || (bVar32)" (parenthesized_expression "(bReplace != 0)" ( (binary_expression "bReplace != 0" identifier != number_literal) )) || (parenthesized_expression "(bVar32)" ( identifier ))) )) (compound_statement "{\n                  if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }\n                }" { (if_statement "if (local_e0 == (Index *)0x0) {\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }\n                  else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);\n                  }" { (expression_statement "piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc);" (assignment_expression "piVar21 = (int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc)" identifier = (cast_expression "(int *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x20,(int)local_dc,\n                                                       (int)local_f0,(int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) }) (else_clause "else {\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }" else (compound_statement "{\n                    piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);\n                  }" { (expression_statement "piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4);" (assignment_expression "piVar21 = (int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4)" identifier = (cast_expression "(int *)sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp4Int\n                                               ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4)" identifier (argument_list "((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,\n                                                (int)pTVar31,local_c4)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pTVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))))) ;) }))) })) (if_statement "if (iVar11 != 0) {\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);\n                }" { (expression_statement "sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4);" (call_expression "sqlite3FkCheck(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4)" identifier (argument_list "(pParse,(Table *)0x0,(int)aChange,chngRowid,piVar21,\n                                 (int)in_stack_fffffee4)" ( identifier , (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)aChange" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , (cast_expression "(int)in_stack_fffffee4" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;) (expression_statement "sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1);" (call_expression "sqlite3GenerateRowIndexDelete(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1)" identifier (argument_list "(pParse,pTab,(int)local_dc,(int)local_c0,aRegIdx,-1)" ( identifier , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (bVar9 != 0) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);\n                }" { (expression_statement "pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0);" (assignment_expression "pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0)" identifier = (cast_expression "(Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x87,(int)local_dc,0,0)" identifier (argument_list "((Vdbe *)local_e8,0x87,(int)local_dc,0,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal ))))) ;) })) (if_statement "if ((1 < iVar11) || (bVar32)) {\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }" if (parenthesized_expression "((1 < iVar11) || (bVar32))" ( (binary_expression "(1 < iVar11) || (bVar32)" (parenthesized_expression "(1 < iVar11)" ( (binary_expression "1 < iVar11" number_literal < identifier) )) || (parenthesized_expression "(bVar32)" ( identifier ))) )) (compound_statement "{\n                  pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);\n                }" { (expression_statement "pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0);" (assignment_expression "pPVar22 = (Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0)" identifier = (cast_expression "(Parse *)sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x7a,(int)local_dc,0,0)" identifier (argument_list "((Vdbe *)local_e8,0x7a,(int)local_dc,0,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal ))))) ;) })) (if_statement "if (iVar11 == 0) {\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }\n                else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                }" { (if_statement "if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }" if (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    iVar11 = 6;\n                  }" { (expression_statement "iVar11 = 6;" (assignment_expression "iVar11 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar11 = 4;\n                  }" else (compound_statement "{\n                    iVar11 = 4;\n                  }" { (expression_statement "iVar11 = 4;" (assignment_expression "iVar11 = 4" identifier = number_literal) ;) }))) (expression_statement "sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);" (call_expression "sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0)" identifier (argument_list "(pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0)" ( identifier , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , number_literal , number_literal ))) ;) }) (else_clause "else {\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }" else (compound_statement "{\n                  sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);\n                  if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }\n                  sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);\n                  if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }\n                }" { (expression_statement "sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4);" (call_expression "sqlite3FkCheck(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4)" identifier (argument_list "(pParse,local_d4,(int)aChange,chngRowid,(int *)pPVar22,\n                                 (int)in_stack_fffffee4)" ( identifier , identifier , (cast_expression "(int)aChange" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int *)pPVar22" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)in_stack_fffffee4" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (uVar2 == '\x02') {\n                    iVar11 = 6;\n                  }\n                  else {\n                    iVar11 = 4;\n                  }" if (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    iVar11 = 6;\n                  }" { (expression_statement "iVar11 = 6;" (assignment_expression "iVar11 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar11 = 4;\n                  }" else (compound_statement "{\n                    iVar11 = 4;\n                  }" { (expression_statement "iVar11 = 4;" (assignment_expression "iVar11 = 4" identifier = number_literal) ;) }))) (expression_statement "sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0);" (call_expression "sqlite3CompleteInsertion\n                            (pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0)" identifier (argument_list "(pParse,pTab,(int)local_dc,(int)local_c0,(int)local_d4,aRegIdx,iVar11,0,\n                             0)" ( identifier , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , number_literal , number_literal ))) ;) (if_statement "if ((pParse->db->flags & 0x4000) != 0) {\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }" if (parenthesized_expression "((pParse->db->flags & 0x4000) != 0)" ( (binary_expression "(pParse->db->flags & 0x4000) != 0" (parenthesized_expression "(pParse->db->flags & 0x4000)" ( (binary_expression "pParse->db->flags & 0x4000" (field_expression "pParse->db->flags" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);\n                  }" { (expression_statement "sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid);" (call_expression "sqlite3FkActions(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid)" identifier (argument_list "(pParse,pTab,pChanges_00,(int)local_fc,aChange,chngRowid)" ( identifier , identifier , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) })) }))) })) }) (else_clause "else {\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }" else (compound_statement "{\n              sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);\n              sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);\n              if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }\n            }" { (expression_statement "sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94);" (call_expression "sqlite3TableAffinity((Vdbe *)local_e8,pTab,local_94)" identifier (argument_list "((Vdbe *)local_e8,pTab,local_94)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) (expression_statement "sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0);" (call_expression "sqlite3CodeRowTrigger\n                        (pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0)" identifier (argument_list "(pParse,pTrigger,0x7f,pChanges_00,1,pTab,(int)local_fc,(int)pChanges,\n                         (int)local_f0)" ( identifier , identifier , number_literal , identifier , number_literal , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pChanges" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (pSVar5 == (Select *)0x0) {\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }" if (parenthesized_expression "(pSVar5 == (Select *)0x0)" ( (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }\n                local_ec = local_94;\n                iVar29 = (int)pTab->nCol;\n                for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }\n                goto LAB_00092d63;\n              }" { (if_statement "if (local_e0 == (Index *)0x0) {\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }\n                else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }" if (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;\n                }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)\n                  ;" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)" identifier (argument_list "((Vdbe *)local_e8,0x20,(int)local_dc,(int)local_f0,(int)local_fc)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }" else (compound_statement "{\n                  sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );\n                }" { (expression_statement "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            );" (call_expression "sqlite3VdbeAddOp4Int\n                            ((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            )" identifier (argument_list "((Vdbe *)local_e8,0x1d,(int)local_dc,(int)local_f0,(int)pTVar31,local_c4\n                            )" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pTVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }))) (expression_statement "local_ec = local_94;" (assignment_expression "local_ec = local_94" identifier = identifier) ;) (expression_statement "iVar29 = (int)pTab->nCol;" (assignment_expression "iVar29 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) (for_statement "for (iVar13 = 0; iVar13 < iVar29; iVar13 = iVar13 + 1) {\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" for ( (assignment_expression "iVar13 = 0" identifier = number_literal) ; (binary_expression "iVar13 < iVar29" identifier < identifier) ; (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ) (compound_statement "{\n                  uVar3 = pTab->aCol[iVar13].colFlags;\n                  if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" { (expression_statement "uVar3 = pTab->aCol[iVar13].colFlags;" (assignment_expression "uVar3 = pTab->aCol[iVar13].colFlags" identifier = (field_expression "pTab->aCol[iVar13].colFlags" (subscript_expression "pTab->aCol[iVar13]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if ((uVar3 & 0x60) == 0) {\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }" if (parenthesized_expression "((uVar3 & 0x60) == 0)" ( (binary_expression "(uVar3 & 0x60) == 0" (parenthesized_expression "(uVar3 & 0x60)" ( (binary_expression "uVar3 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }\n                  }" { (if_statement "if ((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)) {\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }" if (parenthesized_expression "((aChange[iVar13] < 0) && (iVar13 != pTab->iPKey))" ( (binary_expression "(aChange[iVar13] < 0) && (iVar13 != pTab->iPKey)" (parenthesized_expression "(aChange[iVar13] < 0)" ( (binary_expression "aChange[iVar13] < 0" (subscript_expression "aChange[iVar13]" identifier [ identifier ]) < number_literal) )) && (parenthesized_expression "(iVar13 != pTab->iPKey)" ( (binary_expression "iVar13 != pTab->iPKey" identifier != (field_expression "pTab->iPKey" identifier -> field_identifier)) ))) )) (compound_statement "{\n                      sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);\n                      iVar29 = (int)pTab->nCol;\n                    }" { (expression_statement "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec);" (call_expression "sqlite3ExprCodeGetColumnOfTable\n                                ((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec)" identifier (argument_list "((Vdbe *)local_e8,pTab,(int)local_dc,iVar13,local_ec)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "iVar29 = (int)pTab->nCol;" (assignment_expression "iVar29 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) })) }) (else_clause "else {\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }" else (compound_statement "{\n                    local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);\n                  }" { (expression_statement "local_ec = local_ec - (uint)((uVar3 & 0x20) != 0);" (assignment_expression "local_ec = local_ec - (uint)((uVar3 & 0x20) != 0)" identifier = (binary_expression "local_ec - (uint)((uVar3 & 0x20) != 0)" identifier - (call_expression "(uint)((uVar3 & 0x20) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) ))))) ;) }))) (expression_statement "local_ec = local_ec + 1;" (assignment_expression "local_ec = local_ec + 1" identifier = (binary_expression "local_ec + 1" identifier + number_literal)) ;) })) (if_statement "if ((pTab->tabFlags & 0x60) != 0) {\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }" if (parenthesized_expression "((pTab->tabFlags & 0x60) != 0)" ( (binary_expression "(pTab->tabFlags & 0x60) != 0" (parenthesized_expression "(pTab->tabFlags & 0x60)" ( (binary_expression "pTab->tabFlags & 0x60" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                  sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);\n                }" { (expression_statement "sqlite3ComputeGeneratedColumns(pParse,local_94,pTab);" (call_expression "sqlite3ComputeGeneratedColumns(pParse,local_94,pTab)" identifier (argument_list "(pParse,local_94,pTab)" ( identifier , identifier , identifier ))) ;) })) (goto_statement "goto LAB_00092d63;" goto statement_identifier ;) })) }))) (if_statement "if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);\n            }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x52,local_9c,1,0)" identifier (argument_list "((Vdbe *)local_e8,0x52,local_9c,1,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , number_literal , number_literal ))) ;) })) (expression_statement "sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0);" (call_expression "sqlite3CodeRowTrigger\n                      (pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0)" identifier (argument_list "(pParse,pTrigger,0x7f,pChanges_00,2,pTab,(int)local_fc,(int)pChanges,\n                       (int)local_f0)" ( identifier , identifier , number_literal , identifier , number_literal , identifier , (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pChanges" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (uVar2 != '\x01') {\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }" if (parenthesized_expression "(uVar2 != '\x01')" ( (binary_expression "uVar2 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n              if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }\n            }" { (if_statement "if (uVar2 == '\x02') {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }\n              else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }" if (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3WhereEnd(local_80);\n              }" { (expression_statement "sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);" (call_expression "sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0)" identifier (argument_list "((Vdbe *)local_e8,(int)local_f0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3WhereEnd(local_80);" (call_expression "sqlite3WhereEnd(local_80)" identifier (argument_list "(local_80)" ( identifier ))) ;) }) (else_clause "else if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }" else (if_statement "if ((local_e0 == (Index *)0x0) && (local_100 == 0)) {\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }\n              else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }" if (parenthesized_expression "((local_e0 == (Index *)0x0) && (local_100 == 0))" ( (binary_expression "(local_e0 == (Index *)0x0) && (local_100 == 0)" (parenthesized_expression "(local_e0 == (Index *)0x0)" ( (binary_expression "local_e0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);\n              }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0xb,0,(int)local_f0,0)" identifier (argument_list "((Vdbe *)local_e8,0xb,0,(int)local_f0,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) }) (else_clause "else {\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }" else (compound_statement "{\n                sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);\n                sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);\n              }" { (expression_statement "sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0);" (call_expression "sqlite3VdbeResolveLabel((Vdbe *)local_e8,(int)local_f0)" identifier (argument_list "((Vdbe *)local_e8,(int)local_f0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0)" identifier (argument_list "((Vdbe *)local_e8,5,(int)local_d8,(int)local_8c,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(int)local_d8" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) }))))) })) (expression_statement "sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28);" (call_expression "sqlite3VdbeResolveLabel((Vdbe *)local_e8,iVar28)" identifier (argument_list "((Vdbe *)local_e8,iVar28)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)) {\n              autoIncrementEnd(pParse);\n            }" if (parenthesized_expression "((((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0))" ( (binary_expression "(((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)) && (pParse->pAinc != (AutoincInfo *)0x0)" (parenthesized_expression "(((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0))" ( (binary_expression "((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)) &&\n                (pWhere == (Expr *)0x0)" (parenthesized_expression "((pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0))" ( (binary_expression "(pParse->nested == '\0') && (pParse->pTriggerTab == (Table *)0x0)" (parenthesized_expression "(pParse->nested == '\0')" ( (binary_expression "pParse->nested == '\0'" (field_expression "pParse->nested" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pParse->pTriggerTab == (Table *)0x0)" ( (binary_expression "pParse->pTriggerTab == (Table *)0x0" (field_expression "pParse->pTriggerTab" identifier -> field_identifier) == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pWhere == (Expr *)0x0)" ( (binary_expression "pWhere == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pParse->pAinc != (AutoincInfo *)0x0)" ( (binary_expression "pParse->pAinc != (AutoincInfo *)0x0" (field_expression "pParse->pAinc" identifier -> field_identifier) != (cast_expression "(AutoincInfo *)0x0" ( (type_descriptor "AutoincInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              autoIncrementEnd(pParse);\n            }" { (expression_statement "autoIncrementEnd(pParse);" (call_expression "autoIncrementEnd(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) })) (if_statement "if (local_9c != 0) {\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);\n              sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);\n              if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }\n            }" { (expression_statement "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0);" (call_expression "sqlite3VdbeAddOp3((Vdbe *)local_e8,0x50,local_9c,1,0)" identifier (argument_list "((Vdbe *)local_e8,0x50,local_9c,1,0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "sqlite3VdbeSetNumCols((Vdbe *)local_e8,1);" (call_expression "sqlite3VdbeSetNumCols((Vdbe *)local_e8,1)" identifier (argument_list "((Vdbe *)local_e8,1)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (if_statement "if (((sqlite3 *)local_e8->pParse)->mallocFailed == '\0') {\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }" if (parenthesized_expression "(((sqlite3 *)local_e8->pParse)->mallocFailed == '\0')" ( (binary_expression "((sqlite3 *)local_e8->pParse)->mallocFailed == '\0'" (field_expression "((sqlite3 *)local_e8->pParse)->mallocFailed" (parenthesized_expression "((sqlite3 *)local_e8->pParse)" ( (cast_expression "(sqlite3 *)local_e8->pParse" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e8->pParse" identifier -> field_identifier)) )) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);\n              }" { (expression_statement "sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0);" (call_expression "sqlite3VdbeSetColName\n                          ((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0)" identifier (argument_list "((Vdbe *)local_e8,0,0,(char *)(unaff_EDI + 0x199ff),\n                           (_func_void_void_ptr *)0x0)" ( (cast_expression "(Vdbe *)local_e8" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(char *)(unaff_EDI + 0x199ff)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199ff)" ( (binary_expression "unaff_EDI + 0x199ff" identifier + number_literal) ))) , (cast_expression "(_func_void_void_ptr *)0x0" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) })) })) }) (else_clause "else {\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }" else (compound_statement "{\n            psVar37 = pParse->db;\n            pVVar23 = pParse->pVdbe;\n            local_e4 = pTab->pVTable;\n            if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }\n            iVar13 = pParse->nTab;\n            sVar10 = pTab->nCol;\n            iVar11 = sVar10 + 2;\n            iVar29 = pSrc->a[0].iCursor;\n            dupFlags = (u8 **)(iVar13 + 1);\n            pParse->nTab = (int)dupFlags;\n            pEVar34 = (Expr *)0x0;\n            ppuVar36 = dupFlags;\n            local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);\n            iVar27 = pParse->nMem;\n            iVar28 = iVar27 + 1;\n            iVar15 = iVar11 + iVar27;\n            pParse->nMem = iVar15;\n            if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }\n            sqlite3VtabMakeWritable(pParse,pTab);\n            iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);\n            sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);\n            if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }\n            pPVar22 = pParse->pToplevel;\n            if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }\n            pPVar22->mayAbort = '\x01';\n            if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }\n          }" { (expression_statement "psVar37 = pParse->db;" (assignment_expression "psVar37 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pVVar23 = pParse->pVdbe;" (assignment_expression "pVVar23 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_e4 = pTab->pVTable;" (assignment_expression "local_e4 = pTab->pVTable" identifier = (field_expression "pTab->pVTable" identifier -> field_identifier)) ;) (if_statement "if (local_e4 != (VTable *)0x0) {\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }" if (parenthesized_expression "(local_e4 != (VTable *)0x0)" ( (binary_expression "local_e4 != (VTable *)0x0" identifier != (cast_expression "(VTable *)0x0" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              psVar6 = local_e4->db;\n              while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }\n            }" { (expression_statement "psVar6 = local_e4->db;" (assignment_expression "psVar6 = local_e4->db" identifier = (field_expression "local_e4->db" identifier -> field_identifier)) ;) (while_statement "while ((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))\n              {\n                psVar6 = local_e4->db;\n              }" while (parenthesized_expression "((psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)))" ( (parenthesized_expression "(psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0))" ( (binary_expression "psVar6 != psVar37 && (local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)" (binary_expression "psVar6 != psVar37" identifier != identifier) && (parenthesized_expression "(local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0)" ( (comma_expression "local_e4 = local_e4->pNext, local_e4 != (VTable *)0x0" (assignment_expression "local_e4 = local_e4->pNext" identifier = (field_expression "local_e4->pNext" identifier -> field_identifier)) , (binary_expression "local_e4 != (VTable *)0x0" identifier != (cast_expression "(VTable *)0x0" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )) (compound_statement "{\n                psVar6 = local_e4->db;\n              }" { (expression_statement "psVar6 = local_e4->db;" (assignment_expression "psVar6 = local_e4->db" identifier = (field_expression "local_e4->db" identifier -> field_identifier)) ;) })) })) (expression_statement "iVar13 = pParse->nTab;" (assignment_expression "iVar13 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "sVar10 = pTab->nCol;" (assignment_expression "sVar10 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (expression_statement "iVar11 = sVar10 + 2;" (assignment_expression "iVar11 = sVar10 + 2" identifier = (binary_expression "sVar10 + 2" identifier + number_literal)) ;) (expression_statement "iVar29 = pSrc->a[0].iCursor;" (assignment_expression "iVar29 = pSrc->a[0].iCursor" identifier = (field_expression "pSrc->a[0].iCursor" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "dupFlags = (u8 **)(iVar13 + 1);" (assignment_expression "dupFlags = (u8 **)(iVar13 + 1)" identifier = (cast_expression "(u8 **)(iVar13 + 1)" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "pParse->nTab = (int)dupFlags;" (assignment_expression "pParse->nTab = (int)dupFlags" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)dupFlags" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pEVar34 = (Expr *)0x0;" (assignment_expression "pEVar34 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppuVar36 = dupFlags;" (assignment_expression "ppuVar36 = dupFlags" identifier = identifier) ;) (expression_statement "local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0);" (assignment_expression "local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0)" identifier = (cast_expression "(Vdbe *)sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar23,100,iVar13,iVar11,0)" identifier (argument_list "(pVVar23,100,iVar13,iVar11,0)" ( identifier , number_literal , identifier , identifier , number_literal ))))) ;) (expression_statement "iVar27 = pParse->nMem;" (assignment_expression "iVar27 = pParse->nMem" identifier = (field_expression "pParse->nMem" identifier -> field_identifier)) ;) (expression_statement "iVar28 = iVar27 + 1;" (assignment_expression "iVar28 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = iVar11 + iVar27;" (assignment_expression "iVar15 = iVar11 + iVar27" identifier = (binary_expression "iVar11 + iVar27" identifier + identifier)) ;) (expression_statement "pParse->nMem = iVar15;" (assignment_expression "pParse->nMem = iVar15" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (if_statement "if (pSrc->nSrc < 2) {\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }\n            else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }" if (parenthesized_expression "(pSrc->nSrc < 2)" ( (binary_expression "pSrc->nSrc < 2" (field_expression "pSrc->nSrc" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n              p2 = iVar15 + 2;\n              pParse->nMem = p2;\n              local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);\n              if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;\n              iVar19 = (int)pTab->nCol;\n              for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }\n              uVar2 = local_e8->eOnePass;\n              if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }\n              sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);\n            }" { (expression_statement "p2 = iVar15 + 2;" (assignment_expression "p2 = iVar15 + 2" identifier = (binary_expression "iVar15 + 2" identifier + number_literal)) ;) (expression_statement "pParse->nMem = p2;" (assignment_expression "pParse->nMem = p2" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0);" (assignment_expression "local_e8 = sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0)" identifier = (call_expression "sqlite3WhereBegin(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0)" identifier (argument_list "(pParse,pSrc,(Expr *)pTabList,(ExprList *)0x0,\n                                           (ExprList *)0x0,4,0)" ( identifier , identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal )))) ;) (if_statement "if (local_e8 == (WhereInfo *)0x0) goto LAB_00091be9;" if (parenthesized_expression "(local_e8 == (WhereInfo *)0x0)" ( (binary_expression "local_e8 == (WhereInfo *)0x0" identifier == (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)pTab->nCol;" (assignment_expression "iVar19 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) (for_statement "for (p2_00 = 0; p2_00 < iVar19; p2_00 = p2_00 + 1) {\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }" for ( (assignment_expression "p2_00 = 0" identifier = number_literal) ; (binary_expression "p2_00 < iVar19" identifier < identifier) ; (assignment_expression "p2_00 = p2_00 + 1" identifier = (binary_expression "p2_00 + 1" identifier + number_literal)) ) (compound_statement "{\n                p3 = iVar27 + 3 + p2_00;\n                if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }\n              }" { (expression_statement "p3 = iVar27 + 3 + p2_00;" (assignment_expression "p3 = iVar27 + 3 + p2_00" identifier = (binary_expression "iVar27 + 3 + p2_00" (binary_expression "iVar27 + 3" identifier + number_literal) + identifier)) ;) (if_statement "if (aChange[p2_00] < 0) {\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }" if (parenthesized_expression "(aChange[p2_00] < 0)" ( (binary_expression "aChange[p2_00] < 0" (subscript_expression "aChange[p2_00]" identifier [ identifier ]) < number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);\n                  if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }\n                  iVar19 = (int)pTab->nCol;\n                }" { (expression_statement "sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,p2_00,p3)" identifier (argument_list "(pVVar23,0xa6,iVar29,p2_00,p3)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (if_statement "if (0 < pVVar23->nOp) {\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }" if (parenthesized_expression "(0 < pVVar23->nOp)" ( (binary_expression "0 < pVVar23->nOp" number_literal < (field_expression "pVVar23->nOp" identifier -> field_identifier)) )) (compound_statement "{\n                    pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;\n                  }" { (expression_statement "pVVar23->aOp[pVVar23->nOp + -1].p5 = 1;" (assignment_expression "pVVar23->aOp[pVVar23->nOp + -1].p5 = 1" (field_expression "pVVar23->aOp[pVVar23->nOp + -1].p5" (subscript_expression "pVVar23->aOp[pVVar23->nOp + -1]" (field_expression "pVVar23->aOp" identifier -> field_identifier) [ (binary_expression "pVVar23->nOp + -1" (field_expression "pVVar23->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) (expression_statement "iVar19 = (int)pTab->nCol;" (assignment_expression "iVar19 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) }) (else_clause "else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }" else (if_statement "if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }" if (parenthesized_expression "(pParse->pVdbe != (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe != (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);\n                  iVar19 = (int)pTab->nCol;\n                }" { (expression_statement "sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3);" (call_expression "sqlite3ExprCode(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3)" identifier (argument_list "(pParse,pChanges_00->a[aChange[p2_00]].pExpr,p3)" ( identifier , (field_expression "pChanges_00->a[aChange[p2_00]].pExpr" (subscript_expression "pChanges_00->a[aChange[p2_00]]" (field_expression "pChanges_00->a" identifier -> field_identifier) [ (subscript_expression "aChange[p2_00]" identifier [ identifier ]) ]) . field_identifier) , identifier ))) ;) (expression_statement "iVar19 = (int)pTab->nCol;" (assignment_expression "iVar19 = (int)pTab->nCol" identifier = (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) ;) })))) })) (if_statement "if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }\n              else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }" if (parenthesized_expression "((pTab->tabFlags & 0x80) == 0)" ( (binary_expression "(pTab->tabFlags & 0x80) == 0" (parenthesized_expression "(pTab->tabFlags & 0x80)" ( (binary_expression "pTab->tabFlags & 0x80" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);\n                if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }\n              }" { (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar28,0)" identifier (argument_list "(pVVar23,0x7f,iVar29,iVar28,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (if_statement "if (local_b8 == (Expr *)0x0) {\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }\n                else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }" if (parenthesized_expression "(local_b8 == (Expr *)0x0)" ( (binary_expression "local_b8 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);\n                }" { (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x7f,iVar29,iVar27 + 2,0)" identifier (argument_list "(pVVar23,0x7f,iVar29,iVar27 + 2,0)" ( identifier , number_literal , identifier , (binary_expression "iVar27 + 2" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }" else (if_statement "if (pParse->pVdbe != (Vdbe *)0x0) {\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }" if (parenthesized_expression "(pParse->pVdbe != (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe != (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3ExprCode(pParse,local_b8,iVar27 + 2);\n                }" { (expression_statement "sqlite3ExprCode(pParse,local_b8,iVar27 + 2);" (call_expression "sqlite3ExprCode(pParse,local_b8,iVar27 + 2)" identifier (argument_list "(pParse,local_b8,iVar27 + 2)" ( identifier , identifier , (binary_expression "iVar27 + 2" identifier + number_literal) ))) ;) })))) }) (else_clause "else {\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }" else (compound_statement "{\n                pIVar20 = pTab->pIndex;\n                while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }\n                sVar4 = *pIVar20->aiColumn;\n                sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);\n                sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);\n              }" { (expression_statement "pIVar20 = pTab->pIndex;" (assignment_expression "pIVar20 = pTab->pIndex" identifier = (field_expression "pTab->pIndex" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }\n                  if ((pIVar20->field_0x37 & 3) == 2) break;\n                  pIVar20 = pIVar20->pNext;\n                }" { (if_statement "if (pIVar20 == (Index *)0x0) {\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }" if (parenthesized_expression "(pIVar20 == (Index *)0x0)" ( (binary_expression "pIVar20 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n                    pcVar7 = (code *)invalidInstructionException();\n                    (*pcVar7)();\n                  }" { 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 "()" ( ))) ;) })) (if_statement "if ((pIVar20->field_0x37 & 3) == 2) break;" if (parenthesized_expression "((pIVar20->field_0x37 & 3) == 2)" ( (binary_expression "(pIVar20->field_0x37 & 3) == 2" (parenthesized_expression "(pIVar20->field_0x37 & 3)" ( (binary_expression "pIVar20->field_0x37 & 3" (field_expression "pIVar20->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pIVar20 = pIVar20->pNext;" (assignment_expression "pIVar20 = pIVar20->pNext" identifier = (field_expression "pIVar20->pNext" identifier -> field_identifier)) ;) })) (expression_statement "sVar4 = *pIVar20->aiColumn;" (assignment_expression "sVar4 = *pIVar20->aiColumn" identifier = (pointer_expression "*pIVar20->aiColumn" * (field_expression "pIVar20->aiColumn" identifier -> field_identifier))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0xa6,iVar29,(int)sVar4,iVar28)" identifier (argument_list "(pVVar23,0xa6,iVar29,(int)sVar4,iVar28)" ( identifier , number_literal , identifier , (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0)" identifier (argument_list "(pVVar23,0x4e,iVar27 + 3 + (int)sVar4,iVar27 + 2,0)" ( identifier , number_literal , (binary_expression "iVar27 + 3 + (int)sVar4" (binary_expression "iVar27 + 3" identifier + number_literal) + (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "iVar27 + 2" identifier + number_literal) , number_literal ))) ;) }))) (expression_statement "uVar2 = local_e8->eOnePass;" (assignment_expression "uVar2 = local_e8->eOnePass" identifier = (field_expression "local_e8->eOnePass" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == '\0') {\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pPVar22 = pParse->pToplevel;\n                if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }\n                pPVar22->isMultiWrite = '\x01';\n                sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);\n                sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);\n                sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);\n                goto LAB_000922b8;\n              }" { (expression_statement "pPVar22 = pParse->pToplevel;" (assignment_expression "pPVar22 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n                  pPVar22 = pParse;\n                }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pPVar22 = pParse;\n                }" { (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;) })) (expression_statement "pPVar22->isMultiWrite = '\x01';" (assignment_expression "pPVar22->isMultiWrite = '\x01'" (field_expression "pPVar22->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1)" identifier (argument_list "(pVVar23,0x5b,iVar28,iVar11,iVar15 + 1)" ( identifier , number_literal , identifier , identifier , (binary_expression "iVar15 + 1" identifier + number_literal) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x78,iVar13,p2,0)" identifier (argument_list "(pVVar23,0x78,iVar13,p2,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x79,iVar13,iVar15 + 1,p2)" identifier (argument_list "(pVVar23,0x79,iVar13,iVar15 + 1,p2)" ( identifier , number_literal , identifier , (binary_expression "iVar15 + 1" identifier + number_literal) , identifier ))) ;) (goto_statement "goto LAB_000922b8;" goto statement_identifier ;) })) (expression_statement "sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8);" (call_expression "sqlite3VdbeChangeToNoop((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8)" identifier (argument_list "((Vdbe *)pVVar23->db,(int)&pVVar23->aOp,local_f8)" ( (cast_expression "(Vdbe *)pVVar23->db" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pVVar23->db" identifier -> field_identifier)) , (cast_expression "(int)&pVVar23->aOp" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar23->aOp" & (field_expression "pVVar23->aOp" identifier -> field_identifier))) , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x74,iVar29,0,0)" identifier (argument_list "(pVVar23,0x74,iVar29,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) }) (else_clause "else {\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }" else (compound_statement "{\n              if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }\n              ppuVar36 = (u8 **)0x9221e;\n              pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);\n              pTVar30 = pTab;\n              if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }\n              updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);\n              local_e8 = (WhereInfo *)0x0;\n              if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }\nLAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }\n              local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);\n              uVar2 = '\0';\n              if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }\n            }" { (if_statement "if (local_b8 == (Expr *)0x0) {\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }\n              else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }" if (parenthesized_expression "(local_b8 == (Expr *)0x0)" ( (binary_expression "local_b8 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n              }" { (expression_statement "pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);" (assignment_expression "pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" identifier = (call_expression "sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" identifier (argument_list "(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" ( identifier , number_literal , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) }) (else_clause "else {\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }" else (compound_statement "{\n                pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n              }" { (expression_statement "pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);" (assignment_expression "pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" identifier = (call_expression "exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" identifier (argument_list "((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(int)dupFlags" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) }))) (expression_statement "ppuVar36 = (u8 **)0x9221e;" (assignment_expression "ppuVar36 = (u8 **)0x9221e" identifier = (cast_expression "(u8 **)0x9221e" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16);" (assignment_expression "pList = sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16)" identifier = (call_expression "sqlite3ExprListAppend((Parse *)pParse->db,(ExprList *)0x0,pEVar16)" identifier (argument_list "((Parse *)pParse->db,(ExprList *)0x0,pEVar16)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (expression_statement "pTVar30 = pTab;" (assignment_expression "pTVar30 = pTab" identifier = identifier) ;) (if_statement "if (0 < pTab->nCol) {\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }" if (parenthesized_expression "(0 < pTab->nCol)" ( (binary_expression "0 < pTab->nCol" number_literal < (field_expression "pTab->nCol" identifier -> field_identifier)) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                } while (iVar29 < (int)pTVar30);" do (compound_statement "{\n                  if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }\n                  iVar29 = iVar29 + 1;\n                  ppuVar36 = (u8 **)0x92275;\n                  pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);\n                  pTVar30 = (Table *)(int)pTab->nCol;\n                }" { (if_statement "if (aChange[iVar29] < 0) {\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }\n                  else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }" if (parenthesized_expression "(aChange[iVar29] < 0)" ( (binary_expression "aChange[iVar29] < 0" (subscript_expression "aChange[iVar29]" identifier [ identifier ]) < number_literal) )) (compound_statement "{\n                    pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }\n                  }" { (expression_statement "pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0);" (assignment_expression "pEVar16 = sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" identifier = (call_expression "sqlite3PExpr(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" identifier (argument_list "(pParse,0x4b,(Expr *)0x0,(Expr *)0x0)" ( identifier , number_literal , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pEVar16 != (Expr *)0x0) {\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }" if (parenthesized_expression "(pEVar16 != (Expr *)0x0)" ( (binary_expression "pEVar16 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pEVar16->iColumn = (short)iVar29 + 1;\n                    }" { (expression_statement "pEVar16->iColumn = (short)iVar29 + 1;" (assignment_expression "pEVar16->iColumn = (short)iVar29 + 1" (field_expression "pEVar16->iColumn" identifier -> field_identifier) = (binary_expression "(short)iVar29 + 1" (cast_expression "(short)iVar29" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) })) }) (else_clause "else {\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }" else (compound_statement "{\n                    pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;\n                    if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }\n                  }" { (expression_statement "pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr;" (assignment_expression "pEVar16 = pChanges_00->a[aChange[iVar29]].pExpr" identifier = (field_expression "pChanges_00->a[aChange[iVar29]].pExpr" (subscript_expression "pChanges_00->a[aChange[iVar29]]" (field_expression "pChanges_00->a" identifier -> field_identifier) [ (subscript_expression "aChange[iVar29]" identifier [ identifier ]) ]) . field_identifier)) ;) (if_statement "if (pEVar16 != (Expr *)0x0) {\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }" if (parenthesized_expression "(pEVar16 != (Expr *)0x0)" ( (binary_expression "pEVar16 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);\n                    }" { (expression_statement "pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36);" (assignment_expression "pEVar16 = exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" identifier = (call_expression "exprDup((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" identifier (argument_list "((sqlite3 *)0x0,pEVar34,(int)dupFlags,ppuVar36)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(int)dupFlags" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) })) }))) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "ppuVar36 = (u8 **)0x92275;" (assignment_expression "ppuVar36 = (u8 **)0x92275" identifier = (cast_expression "(u8 **)0x92275" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16);" (assignment_expression "pList = sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16)" identifier = (call_expression "sqlite3ExprListAppend((Parse *)pParse->db,pList,pEVar16)" identifier (argument_list "((Parse *)pParse->db,pList,pEVar16)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , identifier , identifier )))) ;) (expression_statement "pTVar30 = (Table *)(int)pTab->nCol;" (assignment_expression "pTVar30 = (Table *)(int)pTab->nCol" identifier = (cast_expression "(Table *)(int)pTab->nCol" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(iVar29 < (int)pTVar30)" ( (binary_expression "iVar29 < (int)pTVar30" identifier < (cast_expression "(int)pTVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4);" (call_expression "updateFromSelect(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4)" identifier (argument_list "(pParse,iVar13,(Index *)0x0,pList,pSrc,(Expr *)pTabList,\n                               (ExprList *)pTVar30,in_stack_fffffee4)" ( identifier , identifier , (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ExprList *)pTVar30" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "local_e8 = (WhereInfo *)0x0;" (assignment_expression "local_e8 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pList != (ExprList *)0x0) {\n                exprListDeleteNN(psVar37,pList);\n              }" if (parenthesized_expression "(pList != (ExprList *)0x0)" ( (binary_expression "pList != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                exprListDeleteNN(psVar37,pList);\n              }" { (expression_statement "exprListDeleteNN(psVar37,pList);" (call_expression "exprListDeleteNN(psVar37,pList)" identifier (argument_list "(psVar37,pList)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_000922b8:\n              if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }" statement_identifier : (if_statement "if (pSrc->nSrc == 1) {\n                sqlite3WhereEnd(local_e8);\n              }" if (parenthesized_expression "(pSrc->nSrc == 1)" ( (binary_expression "pSrc->nSrc == 1" (field_expression "pSrc->nSrc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                sqlite3WhereEnd(local_e8);\n              }" { (expression_statement "sqlite3WhereEnd(local_e8);" (call_expression "sqlite3WhereEnd(local_e8)" identifier (argument_list "(local_e8)" ( identifier ))) ;) }))) (expression_statement "local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0);" (assignment_expression "local_f8 = (Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0)" identifier = (cast_expression "(Vdbe *)sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar23,0x25,iVar13,0,0)" identifier (argument_list "(pVVar23,0x25,iVar13,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar2 = '\0';" (assignment_expression "uVar2 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0 < iVar11) {\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                } while (iVar27 != sVar10 + 2);" do (compound_statement "{\n                  iVar27 = iVar29 + 1;\n                  sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);\n                  iVar29 = iVar27;\n                }" { (expression_statement "iVar27 = iVar29 + 1;" (assignment_expression "iVar27 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29)" identifier (argument_list "(pVVar23,0x59,iVar13,iVar29,iVar28 + iVar29)" ( identifier , number_literal , identifier , identifier , (binary_expression "iVar28 + iVar29" identifier + identifier) ))) ;) (expression_statement "iVar29 = iVar27;" (assignment_expression "iVar29 = iVar27" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 != sVar10 + 2)" ( (binary_expression "iVar27 != sVar10 + 2" identifier != (binary_expression "sVar10 + 2" identifier + number_literal)) )) ;) })) }))) (expression_statement "sqlite3VtabMakeWritable(pParse,pTab);" (call_expression "sqlite3VtabMakeWritable(pParse,pTab)" identifier (argument_list "(pParse,pTab)" ( identifier , identifier ))) ;) (expression_statement "iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28);" (assignment_expression "iVar11 = sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar23,10,0,iVar11,iVar28)" identifier (argument_list "(pVVar23,10,0,iVar11,iVar28)" ( identifier , number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc);" (call_expression "sqlite3VdbeChangeP4(pVVar23,iVar11,(char *)local_e4,-0xc)" identifier (argument_list "(pVVar23,iVar11,(char *)local_e4,-0xc)" ( identifier , identifier , (cast_expression "(char *)local_e4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (if_statement "if (pChanges == (ExprList *)0xb) {\n              pChanges._0_2_ = 2;\n            }\n            else {\n            }" if (parenthesized_expression "(pChanges == (ExprList *)0xb)" ( (binary_expression "pChanges == (ExprList *)0xb" identifier == (cast_expression "(ExprList *)0xb" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pChanges._0_2_ = 2;\n            }" { (expression_statement "pChanges._0_2_ = 2;" (assignment_expression "pChanges._0_2_ = 2" (field_expression "pChanges._0_2_" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n            }" else (compound_statement "{\n            }" { }))) (if_statement "if (0 < pVVar23->nOp) {\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }" if (parenthesized_expression "(0 < pVVar23->nOp)" ( (binary_expression "0 < pVVar23->nOp" number_literal < (field_expression "pVVar23->nOp" identifier -> field_identifier)) )) (compound_statement "{\n              pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;\n            }" { (expression_statement "pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges;" (assignment_expression "pVVar23->aOp[pVVar23->nOp + -1].p5 = (u16)pChanges" (field_expression "pVVar23->aOp[pVVar23->nOp + -1].p5" (subscript_expression "pVVar23->aOp[pVVar23->nOp + -1]" (field_expression "pVVar23->aOp" identifier -> field_identifier) [ (binary_expression "pVVar23->nOp + -1" (field_expression "pVVar23->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = (cast_expression "(u16)pChanges" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) })) (expression_statement "pPVar22 = pParse->pToplevel;" (assignment_expression "pPVar22 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n              pPVar22 = pParse;\n            }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pPVar22 = pParse;\n            }" { (expression_statement "pPVar22 = pParse;" (assignment_expression "pPVar22 = pParse" identifier = identifier) ;) })) (expression_statement "pPVar22->mayAbort = '\x01';" (assignment_expression "pPVar22->mayAbort = '\x01'" (field_expression "pPVar22->mayAbort" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (uVar2 == '\0') {\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }\n            else {\n              sqlite3WhereEnd(local_e8);\n            }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);\n              if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }\n              pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);\n              if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }\n              pOVar17->p2 = pVVar23->nOp;\n              sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);\n            }" { (expression_statement "sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0)" identifier (argument_list "(pVVar23,5,iVar13,(int)((int)&local_f8->db + 1),0)" ( identifier , number_literal , identifier , (cast_expression "(int)((int)&local_f8->db + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&local_f8->db + 1)" ( (binary_expression "(int)&local_f8->db + 1" (cast_expression "(int)&local_f8->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_f8->db" & (field_expression "local_f8->db" identifier -> field_identifier))) + number_literal) ))) , number_literal ))) ;) (if_statement "if ((int)local_f8 < 0) {\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }" if (parenthesized_expression "((int)local_f8 < 0)" ( (binary_expression "(int)local_f8 < 0" (cast_expression "(int)local_f8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                local_f8 = (Vdbe *)(pVVar23->nOp + -1);\n              }" { (expression_statement "local_f8 = (Vdbe *)(pVVar23->nOp + -1);" (assignment_expression "local_f8 = (Vdbe *)(pVVar23->nOp + -1)" identifier = (cast_expression "(Vdbe *)(pVVar23->nOp + -1)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVVar23->nOp + -1)" ( (binary_expression "pVVar23->nOp + -1" (field_expression "pVVar23->nOp" identifier -> field_identifier) + number_literal) )))) ;) })) (expression_statement "pOVar17 = (Op *)(unaff_EDI + 0x4e0b5);" (assignment_expression "pOVar17 = (Op *)(unaff_EDI + 0x4e0b5)" identifier = (cast_expression "(Op *)(unaff_EDI + 0x4e0b5)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x4e0b5)" ( (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal) )))) ;) (if_statement "if (pVVar23->db->mallocFailed == '\0') {\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }" if (parenthesized_expression "(pVVar23->db->mallocFailed == '\0')" ( (binary_expression "pVVar23->db->mallocFailed == '\0'" (field_expression "pVVar23->db->mallocFailed" (field_expression "pVVar23->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pOVar17 = pVVar23->aOp + (int)local_f8;\n              }" { (expression_statement "pOVar17 = pVVar23->aOp + (int)local_f8;" (assignment_expression "pOVar17 = pVVar23->aOp + (int)local_f8" identifier = (binary_expression "pVVar23->aOp + (int)local_f8" (field_expression "pVVar23->aOp" identifier -> field_identifier) + (cast_expression "(int)local_f8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pOVar17->p2 = pVVar23->nOp;" (assignment_expression "pOVar17->p2 = pVVar23->nOp" (field_expression "pOVar17->p2" identifier -> field_identifier) = (field_expression "pVVar23->nOp" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0);" (call_expression "sqlite3VdbeAddOp3(pVVar23,0x74,iVar13,0,0)" identifier (argument_list "(pVVar23,0x74,iVar13,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) }) (else_clause "else {\n              sqlite3WhereEnd(local_e8);\n            }" else (compound_statement "{\n              sqlite3WhereEnd(local_e8);\n            }" { (expression_statement "sqlite3WhereEnd(local_e8);" (call_expression "sqlite3WhereEnd(local_e8)" identifier (argument_list "(local_e8)" ( identifier ))) ;) }))) }))) }))) (labeled_statement "LAB_00091be9:\n        pPVar22 = sContext.pParse;" statement_identifier : (expression_statement "pPVar22 = sContext.pParse;" (assignment_expression "pPVar22 = sContext.pParse" identifier = (field_expression "sContext.pParse" identifier . field_identifier)) ;)) (if_statement "if (sContext.pParse != (Parse *)0x0) {\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }" if (parenthesized_expression "(sContext.pParse != (Parse *)0x0)" ( (binary_expression "sContext.pParse != (Parse *)0x0" (field_expression "sContext.pParse" identifier . field_identifier) != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sContext.pParse = (Parse *)0x0;\n          pPVar22->zAuthContext = sContext.zAuthContext;\n        }" { (expression_statement "sContext.pParse = (Parse *)0x0;" (assignment_expression "sContext.pParse = (Parse *)0x0" (field_expression "sContext.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar22->zAuthContext = sContext.zAuthContext;" (assignment_expression "pPVar22->zAuthContext = sContext.zAuthContext" (field_expression "pPVar22->zAuthContext" identifier -> field_identifier) = (field_expression "sContext.zAuthContext" identifier . field_identifier)) ;) })) (expression_statement "sqlite3DbFreeNN(db,aChange);" (call_expression "sqlite3DbFreeNN(db,aChange)" identifier (argument_list "(db,aChange)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_00091598;" goto statement_identifier ;) })) })) })) (expression_statement "pPVar22 = sContext.pParse;" (assignment_expression "pPVar22 = sContext.pParse" identifier = (field_expression "sContext.pParse" identifier . field_identifier)) ;) (if_statement "if (sContext.pParse != (Parse *)0x0) {\n    sContext.pParse = (Parse *)0x0;\n    pPVar22->zAuthContext = sContext.zAuthContext;\n  }" if (parenthesized_expression "(sContext.pParse != (Parse *)0x0)" ( (binary_expression "sContext.pParse != (Parse *)0x0" (field_expression "sContext.pParse" identifier . field_identifier) != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sContext.pParse = (Parse *)0x0;\n    pPVar22->zAuthContext = sContext.zAuthContext;\n  }" { (expression_statement "sContext.pParse = (Parse *)0x0;" (assignment_expression "sContext.pParse = (Parse *)0x0" (field_expression "sContext.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar22->zAuthContext = sContext.zAuthContext;" (assignment_expression "pPVar22->zAuthContext = sContext.zAuthContext" (field_expression "pPVar22->zAuthContext" identifier -> field_identifier) = (field_expression "sContext.zAuthContext" identifier . field_identifier)) ;) })) (labeled_statement "LAB_00091598:\n  psVar37 = db;" statement_identifier : (expression_statement "psVar37 = db;" (assignment_expression "psVar37 = db" identifier = identifier) ;)) (expression_statement "sqlite3SrcListDelete(db,pSrc);" (call_expression "sqlite3SrcListDelete(db,pSrc)" identifier (argument_list "(db,pSrc)" ( identifier , identifier ))) ;) (if_statement "if (pChanges_00 != (ExprList *)0x0) {\n    exprListDeleteNN(db,pChanges_00);\n  }" if (parenthesized_expression "(pChanges_00 != (ExprList *)0x0)" ( (binary_expression "pChanges_00 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    exprListDeleteNN(db,pChanges_00);\n  }" { (expression_statement "exprListDeleteNN(db,pChanges_00);" (call_expression "exprListDeleteNN(db,pChanges_00)" identifier (argument_list "(db,pChanges_00)" ( identifier , identifier ))) ;) })) (if_statement "if (pTabList != (SrcList *)0x0) {\n    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);\n  }" if (parenthesized_expression "(pTabList != (SrcList *)0x0)" ( (binary_expression "pTabList != (SrcList *)0x0" identifier != (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);\n  }" { (expression_statement "sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList);" (call_expression "sqlite3ExprDeleteNN(psVar37,(Expr *)pTabList)" identifier (argument_list "(psVar37,(Expr *)pTabList)" ( identifier , (cast_expression "(Expr *)pTabList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00091b70:\n  iVar28 = iVar28 + 1;" statement_identifier : (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;)) (expression_statement "local_fc = (Table *)((int)local_fc + 0x14);" (assignment_expression "local_fc = (Table *)((int)local_fc + 0x14)" identifier = (cast_expression "(Table *)((int)local_fc + 0x14)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_fc + 0x14)" ( (binary_expression "(int)local_fc + 0x14" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar28 == iVar11) goto LAB_00091b82;" if (parenthesized_expression "(iVar28 == iVar11)" ( (binary_expression "iVar28 == iVar11" identifier == identifier) )) (goto_statement "goto LAB_00091b82;" goto statement_identifier ;)) (goto_statement "goto LAB_000918f0;" goto statement_identifier ;) })))
(translation_unit "void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)\n\n{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}\n\n" (function_definition "void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)\n\n{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" primitive_type (ERROR "__regparm1" identifier) (function_declarator "FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "char cVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int extraout_ECX_00;" primitive_type identifier ;) (declaration "int extraout_ECX_01;" primitive_type identifier ;) (declaration "int extraout_ECX_02;" primitive_type identifier ;) (declaration "int extraout_ECX_03;" primitive_type identifier ;) (declaration "int extraout_ECX_04;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX_05;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_06;" type_identifier identifier ;) (declaration "int *extraout_ECX_07;" primitive_type (pointer_declarator "*extraout_ECX_07" * identifier) ;) (declaration "int *extraout_ECX_08;" primitive_type (pointer_declarator "*extraout_ECX_08" * identifier) ;) (declaration "int *extraout_ECX_09;" primitive_type (pointer_declarator "*extraout_ECX_09" * identifier) ;) (declaration "int extraout_ECX_10;" primitive_type identifier ;) (declaration "int extraout_ECX_11;" primitive_type identifier ;) (declaration "int extraout_ECX_12;" primitive_type identifier ;) (declaration "int extraout_ECX_13;" primitive_type identifier ;) (declaration "int extraout_ECX_14;" primitive_type identifier ;) (declaration "int extraout_ECX_15;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX_16;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_17;" type_identifier identifier ;) (declaration "int extraout_ECX_18;" primitive_type identifier ;) (declaration "int extraout_ECX_19;" primitive_type identifier ;) (declaration "int *extraout_EDX;" primitive_type (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "uint extraout_EDX_00;" type_identifier identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint extraout_EDX_01;" type_identifier identifier ;) (declaration "uint extraout_EDX_02;" type_identifier identifier ;) (declaration "uint extraout_EDX_03;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_04;" type_identifier identifier ;) (declaration "uint extraout_EDX_05;" type_identifier identifier ;) (declaration "uint extraout_EDX_06;" type_identifier identifier ;) (declaration "uint extraout_EDX_07;" type_identifier identifier ;) (declaration "uint extraout_EDX_08;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "undefined8 uVar32;" type_identifier identifier ;) (declaration "undefined8 uVar33;" type_identifier identifier ;) (declaration "undefined4 uVar34;" type_identifier identifier ;) (declaration "uint local_100;" type_identifier identifier ;) (declaration "int *local_fc;" primitive_type (pointer_declarator "*local_fc" * identifier) ;) (declaration "int local_f8;" primitive_type identifier ;) (declaration "int local_f0;" primitive_type identifier ;) (declaration "int local_ec;" primitive_type identifier ;) (declaration "int *local_e8;" primitive_type (pointer_declarator "*local_e8" * identifier) ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "int local_e0;" primitive_type identifier ;) (declaration "int *local_dc;" primitive_type (pointer_declarator "*local_dc" * identifier) ;) (declaration "uint *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int *local_c0;" primitive_type (pointer_declarator "*local_c0" * identifier) ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "short local_a4;" (sized_type_specifier "short" short) identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int *local_98;" primitive_type (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "char local_6e;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "byte local_50 [4];" type_identifier (array_declarator "local_50 [4]" identifier [ number_literal ]) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x9151b;" (assignment_expression "uStack_14 = 0x9151b" identifier = number_literal) ;) (expression_statement "FUN_000a94ff();" (call_expression "FUN_000a94ff()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;" if (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(*(char *)(iVar27 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00091598;" goto statement_identifier ;)) (expression_statement "piVar8 = (int *)FUN_00091200();" (assignment_expression "piVar8 = (int *)FUN_00091200()" identifier = (cast_expression "(int *)FUN_00091200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00091200()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" { (expression_statement "local_d4 = -0x8000;" (assignment_expression "local_d4 = -0x8000" identifier = number_literal) ;) (if_statement "if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }" if (parenthesized_expression "(piVar8[0x12] != 0)" ( (binary_expression "piVar8[0x12] != 0" (subscript_expression "piVar8[0x12]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      local_d4 = FUN_0002a630();\n    }" { (expression_statement "local_d4 = FUN_0002a630();" (assignment_expression "local_d4 = FUN_0002a630()" identifier = (call_expression "FUN_0002a630()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "iVar9 = FUN_0002add0(extraout_ECX,local_50);" (assignment_expression "iVar9 = FUN_0002add0(extraout_ECX,local_50)" identifier = (call_expression "FUN_0002add0(extraout_ECX,local_50)" identifier (argument_list "(extraout_ECX,local_50)" ( identifier , identifier )))) ;) (expression_statement "piVar20 = (int *)piVar8[3];" (assignment_expression "piVar20 = (int *)piVar8[3]" identifier = (cast_expression "(int *)piVar8[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[3]" identifier [ number_literal ]))) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }" if (parenthesized_expression "(1 < *extraout_EDX)" ( (binary_expression "1 < *extraout_EDX" number_literal < (pointer_expression "*extraout_EDX" * identifier)) )) (compound_statement "{\n      local_100 = *extraout_ECX;\n    }" { (expression_statement "local_100 = *extraout_ECX;" (assignment_expression "local_100 = *extraout_ECX" identifier = (pointer_expression "*extraout_ECX" * identifier)) ;) })) (expression_statement "iVar10 = FUN_00083c60();" (assignment_expression "iVar10 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" if (parenthesized_expression "((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0))" ( (binary_expression "(iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = FUN_0003d4a0(), iVar10 == 0)" ( (comma_expression "iVar10 = FUN_0003d4a0(), iVar10 == 0" (assignment_expression "iVar10 = FUN_0003d4a0()" identifier = (call_expression "FUN_0003d4a0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" { (expression_statement "piVar16 = (int *)param_1[10];" (assignment_expression "piVar16 = (int *)param_1[10]" identifier = (cast_expression "(int *)param_1[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "local_c0 = (int *)((int)piVar16 + 1);" (assignment_expression "local_c0 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar26 = *(byte *)(piVar8 + 9);" (assignment_expression "bVar26 = *(byte *)(piVar8 + 9)" identifier = (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) ))))) ;) (expression_statement "param_1[10] = (int)local_c0;" (assignment_expression "param_1[10] = (int)local_c0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = piVar8[2];" (assignment_expression "iVar10 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "local_dc = piVar16;" (assignment_expression "local_dc = piVar16" identifier = identifier) ;) (if_statement "if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" if (parenthesized_expression "((bVar26 & 0x80) == 0)" ( (binary_expression "(bVar26 & 0x80) == 0" (parenthesized_expression "(bVar26 & 0x80)" ( (binary_expression "bVar26 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }" { (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" identifier = number_literal) ;) (if_statement "if (iVar10 == 0) goto LAB_00091c69;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091c69;" goto statement_identifier ;)) (labeled_statement "LAB_00091707:\n        piVar23 = local_c0;" statement_identifier : (expression_statement "piVar23 = local_c0;" (assignment_expression "piVar23 = local_c0" identifier = identifier) ;)) (do_statement "do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);" do (compound_statement "{\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        }" { (expression_statement "bVar31 = local_e0 == iVar10;" (assignment_expression "bVar31 = local_e0 == iVar10" identifier = (binary_expression "local_e0 == iVar10" identifier == identifier)) ;) (expression_statement "iVar10 = *(int *)(iVar10 + 0x14);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x14)" identifier = (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (bVar31) {\n            local_dc = piVar23;\n          }" if (parenthesized_expression "(bVar31)" ( identifier )) (compound_statement "{\n            local_dc = piVar23;\n          }" { (expression_statement "local_dc = piVar23;" (assignment_expression "local_dc = piVar23" identifier = identifier) ;) })) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_90 = ~(uint)piVar16 + (int)piVar23;" (assignment_expression "local_90 = ~(uint)piVar16 + (int)piVar23" identifier = (binary_expression "~(uint)piVar16 + (int)piVar23" (unary_expression "~(uint)piVar16" ~ (cast_expression "(uint)piVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "param_1[10] = (int)piVar23;" (assignment_expression "param_1[10] = (int)piVar23" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" else (compound_statement "{\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" { (if_statement "if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" { (expression_statement "bVar26 = *(byte *)(iVar10 + 0x37);" (assignment_expression "bVar26 = *(byte *)(iVar10 + 0x37)" identifier = (pointer_expression "*(byte *)(iVar10 + 0x37)" * (cast_expression "(byte *)(iVar10 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x37)" ( (binary_expression "iVar10 + 0x37" identifier + number_literal) ))))) ;) (expression_statement "local_e0 = iVar10;" (assignment_expression "local_e0 = iVar10" identifier = identifier) ;) (while_statement "while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" while (parenthesized_expression "(((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)))" ( (parenthesized_expression "((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))" ( (binary_expression "(bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" (binary_expression "(bVar26 & 3) != 2" (parenthesized_expression "(bVar26 & 3)" ( (binary_expression "bVar26 & 3" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" ( (comma_expression "local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0" (assignment_expression "local_e0 = *(int *)(local_e0 + 0x14)" identifier = (pointer_expression "*(int *)(local_e0 + 0x14)" * (cast_expression "(int *)(local_e0 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x14)" ( (binary_expression "local_e0 + 0x14" identifier + number_literal) ))))) , (binary_expression "local_e0 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" { (expression_statement "bVar26 = *(byte *)(local_e0 + 0x37);" (assignment_expression "bVar26 = *(byte *)(local_e0 + 0x37)" identifier = (pointer_expression "*(byte *)(local_e0 + 0x37)" * (cast_expression "(byte *)(local_e0 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x37)" ( (binary_expression "local_e0 + 0x37" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00091707;" goto statement_identifier ;) })) (labeled_statement "LAB_00091c69:\n        local_e0 = 0;" statement_identifier : (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }))) (if_statement "if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" { (expression_statement "local_dc = (int *)param_4[7];" (assignment_expression "local_dc = (int *)param_4[7]" identifier = (cast_expression "(int *)param_4[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "local_c0 = (int *)param_4[8];" (assignment_expression "local_c0 = (int *)param_4[8]" identifier = (cast_expression "(int *)param_4[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[8]" identifier [ number_literal ]))) ;) (expression_statement "param_1[10] = (int)piVar16;" (assignment_expression "param_1[10] = (int)piVar16" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "extraout_EDX[0xc] = (int)local_dc;" (assignment_expression "extraout_EDX[0xc] = (int)local_dc" (subscript_expression "extraout_EDX[0xc]" identifier [ number_literal ]) = (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar11 = (undefined4 *)FUN_0002e2d0();" (assignment_expression "puVar11 = (undefined4 *)FUN_0002e2d0()" identifier = (cast_expression "(undefined4 *)FUN_0002e2d0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e2d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" { (expression_statement "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a)" identifier = (binary_expression "puVar11 + *(short *)((int)piVar8 + 0x2a)" identifier + (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "__n = local_90 + 1;" (assignment_expression "__n = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar23 + __n;" (assignment_expression "piVar18 = piVar23 + __n" identifier = (binary_expression "piVar23 + __n" identifier + identifier)) ;) (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" identifier (argument_list "(piVar18,1,__n)" ( identifier , number_literal , identifier ))) ;) (expression_statement "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + local_90 + 1)" * (cast_expression "(undefined1 *)((int)piVar18 + local_90 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + local_90 + 1)" ( (binary_expression "(int)piVar18 + local_90 + 1" (binary_expression "(int)piVar18 + local_90" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" if (parenthesized_expression "(0 < sVar7)" ( (binary_expression "0 < sVar7" number_literal < identifier) )) (compound_statement "{\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" { (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (do_statement "do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);" do (compound_statement "{\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          }" { (expression_statement "*puVar12 = 0xffffffff;" (assignment_expression "*puVar12 = 0xffffffff" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 + sVar7 != puVar12)" ( (binary_expression "puVar11 + sVar7 != puVar12" (binary_expression "puVar11 + sVar7" identifier + identifier) != identifier) )) ;) })) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0x200;" (assignment_expression "local_28 = 0x200" identifier = number_literal) ;) (expression_statement "local_38 = param_4;" (assignment_expression "local_38 = param_4" identifier = identifier) ;) (expression_statement "local_e8 = (int *)param_1[2];" (assignment_expression "local_e8 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_3c = extraout_EDX;" (assignment_expression "local_3c = extraout_EDX" identifier = identifier) ;) (if_statement "if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" if (parenthesized_expression "((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))" ( (binary_expression "(local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" (parenthesized_expression "(local_e8 != (int *)0x0)" ( (binary_expression "local_e8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" ( (comma_expression "local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0" (assignment_expression "local_e8 = (int *)FUN_000318c0()" identifier = (cast_expression "(int *)FUN_000318c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))))) , (binary_expression "local_e8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" { (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" if (parenthesized_expression "((int)*extraout_ECX < 1)" ( (binary_expression "(int)*extraout_ECX < 1" (cast_expression "(int)*extraout_ECX" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*extraout_ECX" * identifier)) < number_literal) )) (compound_statement "{\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" else (compound_statement "{\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" { (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = extraout_ECX + 1;" (assignment_expression "local_d8 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (do_statement "do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);" do (compound_statement "{\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            }" { (if_statement "if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;" if (parenthesized_expression "((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0))" ( (binary_expression "(local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "iVar10 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar10 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar25 = local_d8[1];" (assignment_expression "uVar25 = local_d8[1]" identifier = (subscript_expression "local_d8[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "local_fc = (int *)piVar8[1];" (assignment_expression "local_fc = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_000918f0:\n                iVar15 = *local_fc;" statement_identifier : (expression_statement "iVar15 = *local_fc;" (assignment_expression "iVar15 = *local_fc" identifier = (pointer_expression "*local_fc" * identifier)) ;)) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );" do (compound_statement "{\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "uVar24 = (uint)*(byte *)(iVar15 + iVar13);" (assignment_expression "uVar24 = (uint)*(byte *)(iVar15 + iVar13)" identifier = (binary_expression "(uint)*(byte *)(iVar15 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar15 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar13)" ( (binary_expression "iVar15 + iVar13" identifier + identifier) ))))) ;) (expression_statement "uVar22 = (uint)*(byte *)(uVar25 + iVar13);" (assignment_expression "uVar22 = (uint)*(byte *)(uVar25 + iVar13)" identifier = (binary_expression "(uint)*(byte *)(uVar25 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar25 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + iVar13)" ( (binary_expression "uVar25 + iVar13" identifier + identifier) ))))) ;) (if_statement "if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" if (parenthesized_expression "(uVar24 == uVar22)" ( (binary_expression "uVar24 == uVar22" identifier == identifier) )) (compound_statement "{\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }" { (if_statement "if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" { (if_statement "if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" if (parenthesized_expression "((short)piVar8[10] == iVar29)" ( (binary_expression "(short)piVar8[10] == iVar29" (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }" { (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" identifier = (pointer_expression "*local_d8" * identifier)) ;) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" identifier = identifier) ;) (labeled_statement "LAB_00091c26:\n                        puVar11[iVar29] = local_e4;" statement_identifier : (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = identifier) ;)) (if_statement "if (iVar10 <= iVar29) break;" if (parenthesized_expression "(iVar10 <= iVar29)" ( (binary_expression "iVar10 <= iVar29" identifier <= identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" else (compound_statement "{\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" { (expression_statement "uVar2 = *(ushort *)(local_fc + 4);" (assignment_expression "uVar2 = *(ushort *)(local_fc + 4)" identifier = (pointer_expression "*(ushort *)(local_fc + 4)" * (cast_expression "(ushort *)(local_fc + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_fc + 4)" ( (binary_expression "local_fc + 4" identifier + number_literal) ))))) ;) (if_statement "if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" if (parenthesized_expression "((local_e0 == 0) || ((uVar2 & 1) == 0))" ( (binary_expression "(local_e0 == 0) || ((uVar2 & 1) == 0)" (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) || (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" { (if_statement "if ((uVar2 & 0x60) == 0) goto LAB_00091c26;" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00091c26;" goto statement_identifier ;)) (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" identifier (argument_list "(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" ( identifier , (binary_expression "unaff_EDI + 0x1c67d" identifier + number_literal) , identifier , identifier ))) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) })) (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = identifier) ;) (if_statement "if (iVar10 <= iVar29) goto LAB_00092075;" if (parenthesized_expression "(iVar10 <= iVar29)" ( (binary_expression "iVar10 <= iVar29" identifier <= identifier) )) (goto_statement "goto LAB_00092075;" goto statement_identifier ;)) (expression_statement "local_6e = '\x01';" (assignment_expression "local_6e = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) }))) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" * (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" * (cast_expression "(int *)(iVar27 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x10)" ( (binary_expression "iVar27 + 0x10" identifier + number_literal) )))) + (binary_expression "local_d4 * 0x10" identifier * number_literal)) ))))) ;) (goto_statement "goto LAB_0009197f;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" else (if_statement "if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22))" ( (binary_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)" (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24)" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar24)" ( (binary_expression "unaff_EDI + 0x23b65 + uVar24" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + identifier) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar22)" * (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar22)" ( (binary_expression "unaff_EDI + 0x23b65 + uVar22" (binary_expression "unaff_EDI + 0x23b65" identifier + number_literal) + identifier) ))))) )) (goto_statement "goto LAB_00091b70;" goto statement_identifier ;)))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" statement_identifier : (if_statement "if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" if (parenthesized_expression "((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0))" ( (binary_expression "(local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)" (parenthesized_expression "(local_e0 != 0)" ( (binary_expression "local_e0 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = FUN_00029a00(), iVar10 == 0)" ( (comma_expression "iVar10 = FUN_00029a00(), iVar10 == 0" (assignment_expression "iVar10 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" { (labeled_statement "LAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" statement_identifier : (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25)" identifier (argument_list "(param_1,unaff_EDI + 0x199ec,uVar25)" ( identifier , (binary_expression "unaff_EDI + 0x199ec" identifier + number_literal) , identifier ))) ;)) (expression_statement "*(undefined1 *)((int)param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x11)" * (cast_expression "(undefined1 *)((int)param_1 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x11)" ( (binary_expression "(int)param_1 + 0x11" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;) }))) (expression_statement "iVar29 = -1;" (assignment_expression "iVar29 = -1" identifier = number_literal) ;) (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" identifier = (pointer_expression "*local_d8" * identifier)) ;) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" * (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" ( (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" * (cast_expression "(int *)(iVar27 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x10)" ( (binary_expression "iVar27 + 0x10" identifier + number_literal) )))) + (binary_expression "local_d4 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" identifier = identifier) ;) (expression_statement "iVar15 = unaff_EDI + 0x18a8f;" (assignment_expression "iVar15 = unaff_EDI + 0x18a8f" identifier = (binary_expression "unaff_EDI + 0x18a8f" identifier + number_literal)) ;) (labeled_statement "LAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);" statement_identifier : (expression_statement "iVar10 = FUN_0003c520(iVar15,uVar34);" (assignment_expression "iVar10 = FUN_0003c520(iVar15,uVar34)" identifier = (call_expression "FUN_0003c520(iVar15,uVar34)" identifier (argument_list "(iVar15,uVar34)" ( identifier , identifier )))) ;)) (if_statement "if (iVar10 == 1) goto LAB_00091be9;" if (parenthesized_expression "(iVar10 == 1)" ( (binary_expression "iVar10 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (if_statement "if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }" if (parenthesized_expression "(iVar10 == 2)" ( (binary_expression "iVar10 == 2" identifier == number_literal) )) (compound_statement "{\n                puVar11[iVar29] = 0xffffffff;\n              }" { (expression_statement "puVar11[iVar29] = 0xffffffff;" (assignment_expression "puVar11[iVar29] = 0xffffffff" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) = number_literal) ;) })) (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" identifier = (binary_expression "local_e4 + 1" identifier + number_literal)) ;) (expression_statement "local_d8 = local_d8 + 4;" (assignment_expression "local_d8 = local_d8 + 4" identifier = (binary_expression "local_d8 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)local_e4 < (int)*extraout_ECX)" ( (binary_expression "(int)local_e4 < (int)*extraout_ECX" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*extraout_ECX" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*extraout_ECX" * identifier))) )) ;) }))) (expression_statement "bVar26 = local_6e + cVar1;" (assignment_expression "bVar26 = local_6e + cVar1" identifier = (binary_expression "local_6e + cVar1" identifier + identifier)) ;) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" { (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (do_statement "do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);" do (compound_statement "{\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            }" { (if_statement "if (sVar7 < 1) break;" if (parenthesized_expression "(sVar7 < 1)" ( (binary_expression "sVar7 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);" do (compound_statement "{\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              }" { (if_statement "if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0))" ( (binary_expression "((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" (parenthesized_expression "((int)puVar11[iVar10] < 0)" ( (binary_expression "(int)puVar11[iVar10] < 0" (cast_expression "(int)puVar11[iVar10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar10]" identifier [ identifier ])) < number_literal) )) && (parenthesized_expression "((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60)" ( (binary_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60" (pointer_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" * (cast_expression "(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8[1] + iVar10 * 0x14 + 0x10)" ( (binary_expression "piVar8[1] + iVar10 * 0x14 + 0x10" (binary_expression "piVar8[1] + iVar10 * 0x14" (subscript_expression "piVar8[1]" identifier [ number_literal ]) + (binary_expression "iVar10 * 0x14" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "iVar29 = FUN_00028fd0();" (assignment_expression "iVar29 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" { (expression_statement "puVar11[iVar10] = 99999;" (assignment_expression "puVar11[iVar10] = 99999" (subscript_expression "puVar11[iVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "bVar31 = true;" (assignment_expression "bVar31 = true" identifier = true) ;) })) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < sVar7)" ( (binary_expression "iVar10 < sVar7" identifier < identifier) )) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) })) (expression_statement "iVar10 = piVar8[0xe];" (assignment_expression "iVar10 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (expression_statement "extraout_EDX[0xf] = -(uint)(iVar10 != 0);" (assignment_expression "extraout_EDX[0xf] = -(uint)(iVar10 != 0)" (subscript_expression "extraout_EDX[0xf]" identifier [ number_literal ]) = (unary_expression "-(uint)(iVar10 != 0)" - (call_expression "(uint)(iVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))))) ;) (expression_statement "piVar14 = (int *)(uint)bVar26;" (assignment_expression "piVar14 = (int *)(uint)bVar26" identifier = (cast_expression "(int *)(uint)bVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar26" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);" (assignment_expression "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0)" (subscript_expression "extraout_EDX[0x10]" identifier [ number_literal ]) = (unary_expression "-(uint)((iVar10 != 0) != 0)" - (call_expression "(uint)((iVar10 != 0) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((iVar10 != 0) != 0)" ( (binary_expression "(iVar10 != 0) != 0" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) != number_literal) ))))) ;) (expression_statement "iVar10 = FUN_0002a330(piVar14);" (assignment_expression "iVar10 = FUN_0002a330(piVar14)" identifier = (call_expression "FUN_0002a330(piVar14)" identifier (argument_list "(piVar14)" ( identifier )))) ;) (if_statement "if (param_3 == 5) {\n            local_4c = 1;\n          }" if (parenthesized_expression "(param_3 == 5)" ( (binary_expression "param_3 == 5" identifier == number_literal) )) (compound_statement "{\n            local_4c = 1;\n          }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) })) (expression_statement "iVar29 = piVar8[2];" (assignment_expression "iVar29 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "local_98 = piVar23;" (assignment_expression "local_98 = piVar23" identifier = identifier) ;) (if_statement "if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" { (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);" do (compound_statement "{\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            }" { (if_statement "if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" if (parenthesized_expression "(((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))))" ( (binary_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" (parenthesized_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0))" ( (binary_expression "(local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)" (parenthesized_expression "(local_e0 == iVar29)" ( (binary_expression "local_e0 == iVar29" identifier == identifier) )) || (parenthesized_expression "(1 < iVar10 || bVar26 != 0)" ( (binary_expression "1 < iVar10 || bVar26 != 0" (binary_expression "1 < iVar10" number_literal < identifier) || (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" ( (parenthesized_expression "(*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))" ( (binary_expression "*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)" (binary_expression "*(int *)(iVar29 + 0x24) != 0" (pointer_expression "*(int *)(iVar29 + 0x24)" * (cast_expression "(int *)(iVar29 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x24)" ( (binary_expression "iVar29 + 0x24" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(iVar15 = FUN_00028fd0(), iVar15 != 0)" ( (comma_expression "iVar15 = FUN_00028fd0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar29 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) + identifier)) ;) (labeled_statement "LAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;" statement_identifier : (if_statement "if (iVar15 == 0) goto LAB_00091b56;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091b56;" goto statement_identifier ;))) }) (else_clause "else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" else (compound_statement "{\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" if (parenthesized_expression "(*(short *)(iVar29 + 0x32) != 0)" ( (binary_expression "*(short *)(iVar29 + 0x32) != 0" (pointer_expression "*(short *)(iVar29 + 0x32)" * (cast_expression "(short *)(iVar29 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x32)" ( (binary_expression "iVar29 + 0x32" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" { (do_statement "do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));" do (compound_statement "{\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  }" { (expression_statement "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);" (assignment_expression "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" * (cast_expression "(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar29 + 4) + iVar15 * 2)" ( (binary_expression "*(int *)(iVar29 + 4) + iVar15 * 2" (pointer_expression "*(int *)(iVar29 + 4)" * (cast_expression "(int *)(iVar29 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 4)" ( (binary_expression "iVar29 + 4" identifier + number_literal) )))) + (binary_expression "iVar15 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" if (parenthesized_expression "(sVar7 < 0)" ( (binary_expression "sVar7 < 0" identifier < number_literal) )) (compound_statement "{\n                      uVar25 = FUN_00028fd0();\n                    }" { (expression_statement "uVar25 = FUN_00028fd0();" (assignment_expression "uVar25 = FUN_00028fd0()" identifier = (call_expression "FUN_00028fd0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" else (compound_statement "{\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" { (expression_statement "uVar25 = (uint)~puVar11[sVar7] >> 0x1f;" (assignment_expression "uVar25 = (uint)~puVar11[sVar7] >> 0x1f" identifier = (binary_expression "(uint)~puVar11[sVar7] >> 0x1f" (cast_expression "(uint)~puVar11[sVar7]" ( (type_descriptor "uint" type_identifier) ) (unary_expression "~puVar11[sVar7]" ~ (subscript_expression "puVar11[sVar7]" identifier [ identifier ]))) >> number_literal)) ;) }))) (if_statement "if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar29 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) + identifier)) ;) (if_statement "if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }" if (parenthesized_expression "((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05'))" ( (binary_expression "(param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')" (parenthesized_expression "(param_3 == 0xb)" ( (binary_expression "param_3 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(iVar29 + 0x36) == '\x05')" ( (binary_expression "*(char *)(iVar29 + 0x36) == '\x05'" (pointer_expression "*(char *)(iVar29 + 0x36)" * (cast_expression "(char *)(iVar29 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x36)" ( (binary_expression "iVar29 + 0x36" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n                        local_4c = 1;\n                      }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) })) (goto_statement "goto LAB_00091b52;" goto statement_identifier ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32))" ( (binary_expression "iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)(iVar29 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar29 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x32)" ( (binary_expression "iVar29 + 0x32" identifier + number_literal) ))))) )) ;) })) (labeled_statement "LAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" statement_identifier : (expression_statement "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1)" * (cast_expression "(undefined1 *)((int)piVar18 + (int)local_fc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + (int)local_fc + 1)" ( (binary_expression "(int)piVar18 + (int)local_fc + 1" (binary_expression "(int)piVar18 + (int)local_fc" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar29 = *(int *)(iVar29 + 0x14);" (assignment_expression "iVar29 = *(int *)(iVar29 + 0x14)" identifier = (pointer_expression "*(int *)(iVar29 + 0x14)" * (cast_expression "(int *)(iVar29 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x14)" ( (binary_expression "iVar29 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar23[(int)local_fc] = iVar15;" (assignment_expression "piVar23[(int)local_fc] = iVar15" (subscript_expression "piVar23[(int)local_fc]" identifier [ (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "local_fc = (int *)((int)local_fc + 1);" (assignment_expression "local_fc = (int *)((int)local_fc + 1)" identifier = (cast_expression "(int *)((int)local_fc + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_fc + 1)" ( (binary_expression "(int)local_fc + 1" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) ;) (expression_statement "local_98 = piVar23 + (int)local_fc;" (assignment_expression "local_98 = piVar23 + (int)local_fc" identifier = (binary_expression "piVar23 + (int)local_fc" identifier + (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "iVar29 = param_1[0xb];" (assignment_expression "iVar29 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar29 + 1;" (assignment_expression "param_1[0xb] = iVar29 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "*local_98 = iVar29 + 1;" (assignment_expression "*local_98 = iVar29 + 1" (pointer_expression "*local_98" * identifier) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (if_statement "if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (compound_statement "{\n            memset(piVar18,1,__n);\n          }" { (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" identifier (argument_list "(piVar18,1,__n)" ( identifier , number_literal , identifier ))) ;) })) (if_statement "if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" { (expression_statement "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;" (assignment_expression "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" * (cast_expression "(byte *)((int)local_e8 + 0x8e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" * (cast_expression "(byte *)((int)local_e8 + 0x8e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e8 + 0x8e)" ( (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "bVar31 = iVar10 != 0;" (assignment_expression "bVar31 = iVar10 != 0" identifier = (binary_expression "iVar10 != 0" identifier != number_literal)) ;) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (if_statement "if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }" { (expression_statement "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "local_84 = *local_98;" (assignment_expression "local_84 = *local_98" identifier = (pointer_expression "*local_98" * identifier)) ;) (expression_statement "local_74 = param_1[0xb];" (assignment_expression "local_74 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_fc = (int *)(local_74 + 1);" (assignment_expression "local_fc = (int *)(local_74 + 1)" identifier = (cast_expression "(int *)(local_74 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_74 + 1)" ( (binary_expression "local_74 + 1" identifier + number_literal) )))) ;) (expression_statement "param_1[0xb] = (int)local_fc;" (assignment_expression "param_1[0xb] = (int)local_fc" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" if (parenthesized_expression "((iVar9 != 0 || local_6e != '\0') || (bVar31))" ( (binary_expression "(iVar9 != 0 || local_6e != '\0') || (bVar31)" (parenthesized_expression "(iVar9 != 0 || local_6e != '\0')" ( (binary_expression "iVar9 != 0 || local_6e != '\0'" (binary_expression "iVar9 != 0" identifier != number_literal) || (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }" { (expression_statement "local_74 = local_74 + 2;" (assignment_expression "local_74 = local_74 + 2" identifier = (binary_expression "local_74 + 2" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = (int)local_fc + (int)piVar30;" (assignment_expression "param_1[0xb] = (int)local_fc + (int)piVar30" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "(int)local_fc + (int)piVar30" (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (!bVar31) goto joined_r0x00091d94;" if (parenthesized_expression "(!bVar31)" ( (unary_expression "!bVar31" ! identifier) )) (goto_statement "goto joined_r0x00091d94;" goto statement_identifier ;)) (labeled_statement "LAB_00091d96:\n              local_d4 = param_1[0xb] + 1;" statement_identifier : (expression_statement "local_d4 = param_1[0xb] + 1;" (assignment_expression "local_d4 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "param_1[0xb] = local_d4;" (assignment_expression "param_1[0xb] = local_d4" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" else (compound_statement "{\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" { (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x00091d94:\n              local_d4 = (int)local_fc;" statement_identifier : (expression_statement "local_d4 = (int)local_fc;" (assignment_expression "local_d4 = (int)local_fc" identifier = (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;" if (parenthesized_expression "(bVar26 != 0 || iVar9 != 0)" ( (binary_expression "bVar26 != 0 || iVar9 != 0" (binary_expression "bVar26 != 0" identifier != number_literal) || (binary_expression "iVar9 != 0" identifier != number_literal)) )) (goto_statement "goto LAB_00091d96;" goto statement_identifier ;)) }))) (expression_statement "local_94 = param_1[0xb] + 1;" (assignment_expression "local_94 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "uVar25 = param_1[0xb] + (int)piVar30;" (assignment_expression "uVar25 = param_1[0xb] + (int)piVar30" identifier = (binary_expression "param_1[0xb] + (int)piVar30" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "param_1[0xb] = uVar25;" (assignment_expression "param_1[0xb] = uVar25" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" else (compound_statement "{\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" { (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar25 = extraout_EDX_00;" (assignment_expression "uVar25 = extraout_EDX_00" identifier = identifier) ;) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) }))) (if_statement "if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }" { (if_statement "if (local_100 == 0) goto LAB_00091e0a;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091e0a;" goto statement_identifier ;)) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" else (compound_statement "{\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" { (expression_statement "iVar15 = param_1[0x3d];" (assignment_expression "iVar15 = param_1[0x3d]" identifier = (subscript_expression "param_1[0x3d]" identifier [ number_literal ])) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "param_1[0x3d] = *piVar8;" (assignment_expression "param_1[0x3d] = *piVar8" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "uVar25 = local_100;" (assignment_expression "uVar25 = local_100" identifier = identifier) ;) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) (expression_statement "local_48 = iVar15;" (assignment_expression "local_48 = iVar15" identifier = identifier) ;) (expression_statement "local_44 = param_1;" (assignment_expression "local_44 = param_1" identifier = identifier) ;) (if_statement "if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" { (expression_statement "FUN_00083b40(param_2,local_dc,iVar29,iVar29);" (call_expression "FUN_00083b40(param_2,local_dc,iVar29,iVar29)" identifier (argument_list "(param_2,local_dc,iVar29,iVar29)" ( identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_00091e0a:\n              uVar32 = FUN_0003c9d0();" statement_identifier : (expression_statement "uVar32 = FUN_0003c9d0();" (assignment_expression "uVar32 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)uVar32 != 0) goto LAB_00091be9;" if (parenthesized_expression "((int)uVar32 != 0)" ( (binary_expression "(int)uVar32 != 0" (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" identifier = (subscript_expression "piVar8[0xe]" identifier [ number_literal ])) ;) (expression_statement "iVar15 = extraout_ECX_00;" (assignment_expression "iVar15 = extraout_ECX_00" identifier = identifier) ;) })) }))) (if_statement "if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "iVar29 = param_1[0xe] + -1;" (assignment_expression "iVar29 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar29;" (assignment_expression "param_1[0xe] = iVar29" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" if (parenthesized_expression "(((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0))" ( (binary_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)" (parenthesized_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar27 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar27 + 0x20) & 1)" ( (binary_expression "*(byte *)(iVar27 + 0x20) & 1" (pointer_expression "*(byte *)(iVar27 + 0x20)" * (cast_expression "(byte *)(iVar27 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x20)" ( (binary_expression "iVar27 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_9c = 0, param_1[0x1e] == 0)" ( (comma_expression "local_9c = 0, param_1[0x1e] == 0" (assignment_expression "local_9c = 0" identifier = number_literal) , (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" { (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }" { (expression_statement "local_9c = param_1[0xb] + 1;" (assignment_expression "local_9c = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = local_9c;" (assignment_expression "param_1[0xb] = local_9c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_9c,0,piVar30,piVar30);" (call_expression "FUN_000315c0(local_9c,0,piVar30,piVar30)" identifier (argument_list "(local_9c,0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_10;" (assignment_expression "iVar15 = extraout_ECX_10" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_06;" (assignment_expression "uVar25 = extraout_EDX_06" identifier = identifier) ;) }) (else_clause "else {\n                local_9c = 0;\n              }" else (compound_statement "{\n                local_9c = 0;\n              }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" if (parenthesized_expression "((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0))" ( (binary_expression "(local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)" (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "FUN_000315c0(local_84,local_fc,iVar15,iVar15);" (call_expression "FUN_000315c0(local_84,local_fc,iVar15,iVar15)" identifier (argument_list "(local_84,local_fc,iVar15,iVar15)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (if_statement "if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);" statement_identifier : (expression_statement "FUN_00075fd0(param_1,param_2,iVar29,0x10);" (call_expression "FUN_00075fd0(param_1,param_2,iVar29,0x10)" identifier (argument_list "(param_1,param_2,iVar29,0x10)" ( identifier , identifier , identifier , number_literal ))) ;)) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (expression_statement "iVar15 = extraout_ECX_01;" (assignment_expression "iVar15 = extraout_ECX_01" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_01;" (assignment_expression "uVar25 = extraout_EDX_01" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (labeled_statement "LAB_00091f2a:\n                iVar27 = iVar13;" statement_identifier : (expression_statement "iVar27 = iVar13;" (assignment_expression "iVar27 = iVar13" identifier = identifier) ;)) (if_statement "if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" if (parenthesized_expression "((uVar22 & 0x80) == 0)" ( (binary_expression "(uVar22 & 0x80) == 0" (parenthesized_expression "(uVar22 & 0x80)" ( (binary_expression "uVar22 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }" { (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" identifier (argument_list "(local_fc,0,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_18;" (assignment_expression "iVar15 = extraout_ECX_18" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_07;" (assignment_expression "uVar25 = extraout_EDX_07" identifier = identifier) ;) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = (int *)iVar13;" (assignment_expression "local_98 = (int *)iVar13" identifier = (cast_expression "(int *)iVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" else (compound_statement "{\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" { (labeled_statement "LAB_00091f32:\n                  local_c4 = (int)local_a4;" statement_identifier : (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" if (parenthesized_expression "(0 < local_c4)" ( (binary_expression "0 < local_c4" number_literal < identifier) )) (compound_statement "{\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" { (labeled_statement "LAB_00091f43:\n                    local_98 = (int *)0x0;" statement_identifier : (expression_statement "local_98 = (int *)0x0;" (assignment_expression "local_98 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_68 = iVar27;" (assignment_expression "local_68 = iVar27" identifier = identifier) ;) (do_statement "do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);" do (compound_statement "{\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    }" { (expression_statement "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;" (call_expression "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" identifier (argument_list "((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" ( (cast_expression "(int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" * (cast_expression "(short *)(*(int *)(local_e0 + 4) + (int)local_98)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_e0 + 4) + (int)local_98)" ( (binary_expression "*(int *)(local_e0 + 4) + (int)local_98" (pointer_expression "*(int *)(local_e0 + 4)" * (cast_expression "(int *)(local_e0 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 4)" ( (binary_expression "local_e0 + 4" identifier + number_literal) )))) + (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) , identifier ))) ;) (expression_statement "local_98 = (int *)((int)local_98 + 2);" (assignment_expression "local_98 = (int *)((int)local_98 + 2)" identifier = (cast_expression "(int *)((int)local_98 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_98 + 2)" ( (binary_expression "(int)local_98 + 2" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = extraout_ECX_02;" (assignment_expression "iVar15 = extraout_ECX_02" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_02;" (assignment_expression "uVar25 = extraout_EDX_02" identifier = identifier) ;) }) while (parenthesized_expression "((int *)(local_c4 * 2) != local_98)" ( (binary_expression "(int *)(local_c4 * 2) != local_98" (cast_expression "(int *)(local_c4 * 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c4 * 2)" ( (binary_expression "local_c4 * 2" identifier * number_literal) ))) != identifier) )) ;) })) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c8 = local_c4;" (assignment_expression "local_c8 = local_c4" identifier = identifier) ;) (if_statement "if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }" { (labeled_statement "LAB_00092c5d:\n                    uVar34 = FUN_0002e150();" statement_identifier : (expression_statement "uVar34 = FUN_0002e150();" (assignment_expression "uVar34 = FUN_0002e150()" identifier = (call_expression "FUN_0002e150()" identifier (argument_list "()" ( )))) ;)) (expression_statement "FUN_000315c0(local_c8,local_8c,uVar34,uVar34);" (call_expression "FUN_000315c0(local_c8,local_8c,uVar34,uVar34)" identifier (argument_list "(local_c8,local_8c,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00032090(local_c8);" (call_expression "FUN_00032090(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;) (expression_statement "FUN_000316b0(local_8c,local_98,local_c8);" (call_expression "FUN_000316b0(local_8c,local_98,local_c8)" identifier (argument_list "(local_8c,local_98,local_c8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_04;" (assignment_expression "iVar15 = extraout_ECX_04" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_05;" (assignment_expression "uVar25 = extraout_EDX_05" identifier = identifier) ;) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" identifier = identifier) ;) }) (else_clause "else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" else (if_statement "if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" if (parenthesized_expression "(local_f0 != 0)" ( (binary_expression "local_f0 != 0" identifier != number_literal) )) (compound_statement "{\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" { (expression_statement "FUN_0002b350();" (call_expression "FUN_0002b350()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar15 = extraout_ECX_03;" (assignment_expression "iVar15 = extraout_ECX_03" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_03;" (assignment_expression "uVar25 = extraout_EDX_03" identifier = identifier) ;) })))) }))) (goto_statement "goto LAB_0009244d;" goto statement_identifier ;) })) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00093044:\n              uVar34 = 0x1004;" statement_identifier : (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" identifier = number_literal) ;)) (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" ( (parenthesized_expression "(((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))" ( (binary_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)" (parenthesized_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0))" ( (binary_expression "(iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)" (parenthesized_expression "(iVar9 != 0 || (iVar10 != 0))" ( (binary_expression "iVar9 != 0 || (iVar10 != 0)" (binary_expression "iVar9 != 0" identifier != number_literal) || (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) ))) )) || (parenthesized_expression "(uVar34 = 0x100c, bVar26 != 0)" ( (comma_expression "uVar34 = 0x100c, bVar26 != 0" (assignment_expression "uVar34 = 0x100c" identifier = number_literal) , (binary_expression "bVar26 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                uVar34 = 0x1004;\n              }" { (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" identifier = number_literal) ;) })) (expression_statement "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);" (assignment_expression "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0)" identifier = (call_expression "FUN_0007d3c0(0,0,uVar34,local_c0)" identifier (argument_list "(0,0,uVar34,local_c0)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar15 = (int)uVar32;" (assignment_expression "iVar15 = (int)uVar32" identifier = (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar15 == 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "local_64 = *(int **)(iVar15 + 0x14);" (assignment_expression "local_64 = *(int **)(iVar15 + 0x14)" identifier = (pointer_expression "*(int **)(iVar15 + 0x14)" * (cast_expression "(int **)(iVar15 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x14)" ( (binary_expression "iVar15 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_78 = *(int **)(iVar15 + 0x18);" (assignment_expression "local_78 = *(int **)(iVar15 + 0x18)" identifier = (pointer_expression "*(int **)(iVar15 + 0x18)" * (cast_expression "(int **)(iVar15 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_e4 = (uint)*(byte *)(iVar15 + 0x2e);" (assignment_expression "local_e4 = (uint)*(byte *)(iVar15 + 0x2e)" identifier = (binary_expression "(uint)*(byte *)(iVar15 + 0x2e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar15 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2e)" ( (binary_expression "iVar15 + 0x2e" identifier + number_literal) ))))) ;) (expression_statement "bVar6 = *(byte *)(iVar15 + 0x30) & 1;" (assignment_expression "bVar6 = *(byte *)(iVar15 + 0x30) & 1" identifier = (binary_expression "*(byte *)(iVar15 + 0x30) & 1" (pointer_expression "*(byte *)(iVar15 + 0x30)" * (cast_expression "(byte *)(iVar15 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x30)" ( (binary_expression "iVar15 + 0x30" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar30 = (int *)(local_e4 - 1);" (assignment_expression "piVar30 = (int *)(local_e4 - 1)" identifier = (cast_expression "(int *)(local_e4 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e4 - 1)" ( (binary_expression "local_e4 - 1" identifier - number_literal) )))) ;) (expression_statement "iVar15 = extraout_ECX_11;" (assignment_expression "iVar15 = extraout_ECX_11" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (if_statement "if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" if (parenthesized_expression "(piVar30 == (int *)0x0)" ( (binary_expression "piVar30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" { (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;) })) (expression_statement "piVar17 = (int *)param_1[0x1d];" (assignment_expression "piVar17 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar17 = param_1;\n              }" { (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar17 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar17 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar17 + 5)" * (cast_expression "(undefined1 *)(piVar17 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 5)" ( (binary_expression "piVar17 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (expression_statement "uVar25 = uVar22 & 0x80;" (assignment_expression "uVar25 = uVar22 & 0x80" identifier = (binary_expression "uVar22 & 0x80" identifier & number_literal)) ;) (if_statement "if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" { (if_statement "if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;" if (parenthesized_expression "((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   )" ( (binary_expression "(((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" (parenthesized_expression "(((int)local_78 < 0) || (local_dc == local_78))" ( (binary_expression "((int)local_78 < 0) || (local_dc == local_78)" (parenthesized_expression "((int)local_78 < 0)" ( (binary_expression "(int)local_78 < 0" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(local_dc == local_78)" ( (binary_expression "local_dc == local_78" identifier == identifier) ))) )) || (parenthesized_expression "(iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" ( (comma_expression "iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0'" (assignment_expression "iVar15 = (int)local_78 - (int)piVar16" identifier = (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier))) , (binary_expression "*(char *)((int)piVar18 + iVar15) == '\0'" (pointer_expression "*(char *)((int)piVar18 + iVar15)" * (cast_expression "(char *)((int)piVar18 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + iVar15)" ( (binary_expression "(int)piVar18 + iVar15" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_00091f2a;" goto statement_identifier ;)) (if_statement "if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" if (parenthesized_expression "(uVar25 == 0)" ( (binary_expression "uVar25 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" { (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" identifier (argument_list "(local_fc,0,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_14;" (assignment_expression "iVar15 = extraout_ECX_14" identifier = identifier) ;) (goto_statement "goto LAB_000931ef;" goto statement_identifier ;) })) (expression_statement "local_c8 = (uint)local_a4;" (assignment_expression "local_c8 = (uint)local_a4" identifier = (cast_expression "(uint)local_a4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (if_statement "if (0 < (int)local_c8) goto LAB_00091f43;" if (parenthesized_expression "(0 < (int)local_c8)" ( (binary_expression "0 < (int)local_c8" number_literal < (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00091f43;" goto statement_identifier ;)) (goto_statement "goto LAB_00092c5d;" goto statement_identifier ;) })) (if_statement "if (uVar25 != 0) goto LAB_00091f32;" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00091f32;" goto statement_identifier ;)) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30)" identifier = (call_expression "FUN_000315c0(local_fc,0,piVar30,piVar30)" identifier (argument_list "(local_fc,0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "iVar15 = extraout_ECX_12;" (assignment_expression "iVar15 = extraout_ECX_12" identifier = identifier) ;) (if_statement "if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" { (labeled_statement "LAB_000931ef:\n                iVar13 = param_1[0xb];" statement_identifier : (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;)) (expression_statement "param_1[0xb] = iVar13 + 1;" (assignment_expression "param_1[0xb] = iVar13 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "*local_98 = iVar13 + 1;" (assignment_expression "*local_98 = iVar13 + 1" (pointer_expression "*local_98" * identifier) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15)" identifier = (call_expression "FUN_000315c0(local_fc,0,iVar15,iVar15)" identifier (argument_list "(local_fc,0,iVar15,iVar15)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = extraout_ECX_15;" (assignment_expression "iVar15 = extraout_ECX_15" identifier = identifier) ;) (expression_statement "piVar30 = local_98;" (assignment_expression "piVar30 = local_98" identifier = identifier) ;) })) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = local_8c;" (assignment_expression "iVar13 = local_8c" identifier = identifier) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" statement_identifier : (if_statement "if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" if (parenthesized_expression "((local_e4 != 2) && (bVar5))" ( (binary_expression "(local_e4 != 2) && (bVar5)" (parenthesized_expression "(local_e4 != 2)" ( (binary_expression "local_e4 != 2" identifier != number_literal) )) && (parenthesized_expression "(bVar5)" ( identifier ))) )) (compound_statement "{\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" { (expression_statement "uVar32 = FUN_00043f00();" (assignment_expression "uVar32 = FUN_00043f00()" identifier = (call_expression "FUN_00043f00()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = extraout_ECX_13;" (assignment_expression "iVar15 = extraout_ECX_13" identifier = identifier) ;) }))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" { (if_statement "if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (compound_statement "{\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }" { (expression_statement "piVar17 = piVar8;" (assignment_expression "piVar17 = piVar8" identifier = identifier) ;) (if_statement "if (piVar8[0xe] != 0) goto LAB_000932c3;" if (parenthesized_expression "(piVar8[0xe] != 0)" ( (binary_expression "piVar8[0xe] != 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) (labeled_statement "LAB_00093245:\n                  iVar27 = 0;" statement_identifier : (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" statement_identifier : (expression_statement "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" (assignment_expression "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0)" identifier = (call_expression "FUN_00017bea(0,piVar16,piVar18,0,0)" identifier (argument_list "(0,piVar16,piVar18,0,0)" ( number_literal , identifier , identifier , number_literal , number_literal )))) ;)) (labeled_statement "LAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" statement_identifier : (if_statement "if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" { (expression_statement "iVar15 = local_e8[0x1a] + -1;" (assignment_expression "iVar15 = local_e8[0x1a] + -1" identifier = (binary_expression "local_e8[0x1a] + -1" (subscript_expression "local_e8[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" if (parenthesized_expression "(iVar15 == iVar27)" ( (binary_expression "iVar15 == iVar27" identifier == identifier) )) (compound_statement "{\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }" { (expression_statement "local_e8[0x1a] = iVar27;" (assignment_expression "local_e8[0x1a] = iVar27" (subscript_expression "local_e8[0x1a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" identifier = (call_expression "CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" identifier (argument_list "((int)((ulonglong)uVar32 >> 0x20),local_e8)" ( (cast_expression "(int)((ulonglong)uVar32 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) }) (else_clause "else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" else (compound_statement "{\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" { (if_statement "if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }" if (parenthesized_expression "(-1 < iVar27)" ( (binary_expression "-1 < iVar27" number_literal < identifier) )) (compound_statement "{\n                        iVar15 = iVar27;\n                      }" { (expression_statement "iVar15 = iVar27;" (assignment_expression "iVar15 = iVar27" identifier = identifier) ;) })) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" identifier = (pointer_expression "*local_e8" * identifier)) ;) (expression_statement "local_f0 = unaff_EDI + 0x4e0b5;" (assignment_expression "local_f0 = unaff_EDI + 0x4e0b5" identifier = (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal)) ;) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" if (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" { (expression_statement "local_f0 = iVar15 * 0x14 + local_e8[0x19];" (assignment_expression "local_f0 = iVar15 * 0x14 + local_e8[0x19]" identifier = (binary_expression "iVar15 * 0x14 + local_e8[0x19]" (binary_expression "iVar15 * 0x14" identifier * number_literal) + (subscript_expression "local_e8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(local_f0 + 8) = local_e8[0x1a];" (assignment_expression "*(int *)(local_f0 + 8) = local_e8[0x1a]" (pointer_expression "*(int *)(local_f0 + 8)" * (cast_expression "(int *)(local_f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f0 + 8)" ( (binary_expression "local_f0 + 8" identifier + number_literal) )))) = (subscript_expression "local_e8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "uVar32 = CONCAT44(iVar27,local_f0);" (assignment_expression "uVar32 = CONCAT44(iVar27,local_f0)" identifier = (call_expression "CONCAT44(iVar27,local_f0)" identifier (argument_list "(iVar27,local_f0)" ( identifier , identifier )))) ;) }))) }))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" identifier = (cast_expression "(int *)uVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_e4 == 0) goto LAB_000932c3;" if (parenthesized_expression "(local_e4 == 0)" ( (binary_expression "local_e4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000932c3;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" else (compound_statement "{\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" { (if_statement "if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_64)" ( (binary_expression "-1 < (int)local_64" number_literal < (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" * (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + ((int)local_64 - (int)piVar16))" ( (binary_expression "(int)piVar18 + ((int)local_64 - (int)piVar16)" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_64 - (int)piVar16)" ( (binary_expression "(int)local_64 - (int)piVar16" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" if (parenthesized_expression "(-1 < (int)local_78)" ( (binary_expression "-1 < (int)local_78" number_literal < (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" { (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" * (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar18 + ((int)local_78 - (int)piVar16))" ( (binary_expression "(int)piVar18 + ((int)local_78 - (int)piVar16)" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)local_78 - (int)piVar16)" ( (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) = number_literal) ;) })) (if_statement "if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" if (parenthesized_expression "((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f)))" ( (binary_expression "(local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) && (parenthesized_expression "(0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" ( (binary_expression "0 < local_90 + ((int)~(uint)local_78 >> 0x1f)" number_literal < (binary_expression "local_90 + ((int)~(uint)local_78 >> 0x1f)" identifier + (parenthesized_expression "((int)~(uint)local_78 >> 0x1f)" ( (binary_expression "(int)~(uint)local_78 >> 0x1f" (cast_expression "(int)~(uint)local_78" ( (type_descriptor "int" primitive_type) ) (unary_expression "~(uint)local_78" ~ (cast_expression "(uint)local_78" ( (type_descriptor "uint" type_identifier) ) identifier))) >> number_literal) )))) ))) )) (compound_statement "{\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" { (expression_statement "uVar33 = FUN_000315c0(0,0,iVar15,iVar15);" (assignment_expression "uVar33 = FUN_000315c0(0,0,iVar15,iVar15)" identifier = (call_expression "FUN_000315c0(0,0,iVar15,iVar15)" identifier (argument_list "(0,0,iVar15,iVar15)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" identifier = (call_expression "CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" identifier (argument_list "((int)((ulonglong)uVar33 >> 0x20),piVar8)" ( (cast_expression "(int)((ulonglong)uVar33 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar33 >> 0x20)" ( (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (expression_statement "iVar27 = (int)uVar33;" (assignment_expression "iVar27 = (int)uVar33" identifier = (cast_expression "(int)uVar33" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093247;" if (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00093247;" goto statement_identifier ;)) (goto_statement "goto LAB_0009326e;" goto statement_identifier ;) })) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093245;" if (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00093245;" goto statement_identifier ;)) }))) (expression_statement "piVar30 = local_64;" (assignment_expression "piVar30 = local_64" identifier = identifier) ;) (if_statement "if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" if (parenthesized_expression "((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78))" ( (binary_expression "(local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)" (parenthesized_expression "(local_dc != local_64)" ( (binary_expression "local_dc != local_64" identifier != identifier) )) && (parenthesized_expression "(piVar30 = local_78, local_dc != local_78)" ( (comma_expression "piVar30 = local_78, local_dc != local_78" (assignment_expression "piVar30 = local_78" identifier = identifier) , (binary_expression "local_dc != local_78" identifier != identifier)) ))) )) (compound_statement "{\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" { (expression_statement "FUN_000316b0(iVar29,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(iVar29,iVar13,local_c4,uVar34)" identifier (argument_list "(iVar29,iVar13,local_c4,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) })) (labeled_statement "LAB_00093182:\n                local_f0 = iVar29;" statement_identifier : (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" identifier = identifier) ;)) (if_statement "if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" if (parenthesized_expression "(local_e4 != 1)" ( (binary_expression "local_e4 != 1" identifier != number_literal) )) (compound_statement "{\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" { (expression_statement "iVar27 = param_1[0xe];" (assignment_expression "iVar27 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = iVar27 + -1;" (assignment_expression "param_1[0xe] = iVar27 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "local_f0 = iVar27 + -1;" (assignment_expression "local_f0 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) })) (expression_statement "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);" (assignment_expression "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier = (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier (argument_list "(iVar29,0,local_f0,local_f0)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" identifier = (cast_expression "(int *)uVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_e4 != 0) goto LAB_00093182;" if (parenthesized_expression "(local_e4 != 0)" ( (binary_expression "local_e4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00093182;" goto statement_identifier ;)) (labeled_statement "LAB_000932c3:\n              piVar30 = local_e8;" statement_identifier : (expression_statement "piVar30 = local_e8;" (assignment_expression "piVar30 = local_e8" identifier = identifier) ;)) (if_statement "if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" if (parenthesized_expression "((local_e0 != 0) || (local_100 != 0))" ( (binary_expression "(local_e0 != 0) || (local_100 != 0)" (parenthesized_expression "(local_e0 != 0)" ( (binary_expression "local_e0 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) ))) )) (compound_statement "{\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" { (expression_statement "local_f0 = param_1[0xe] + -1;" (assignment_expression "local_f0 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = local_f0;" (assignment_expression "param_1[0xe] = local_f0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar29,0,local_f0,local_f0);" (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" identifier (argument_list "(iVar29,0,local_f0,local_f0)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar29 = local_e8[0x1a];" (assignment_expression "iVar29 = local_e8[0x1a]" identifier = (subscript_expression "local_e8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "local_8c = iVar29;" (assignment_expression "local_8c = iVar29" identifier = identifier) ;) (if_statement "if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" { (expression_statement "FUN_000315c0(iVar13,0,local_e8,local_e8);" (call_expression "FUN_000315c0(iVar13,0,local_e8,local_e8)" identifier (argument_list "(iVar13,0,local_e8,local_e8)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_000316b0(local_f0,iVar13,0);" (call_expression "FUN_000316b0(local_f0,iVar13,0)" identifier (argument_list "(local_f0,iVar13,0)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_00093326;" goto statement_identifier ;) })) (if_statement "if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" { (if_statement "if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }" { (expression_statement "FUN_000315c0(local_fc,0,iVar29,iVar29);" (call_expression "FUN_000315c0(local_fc,0,iVar29,iVar29)" identifier (argument_list "(local_fc,0,iVar29,iVar29)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar29 = FUN_000315c0(local_f0,local_fc);" (assignment_expression "iVar29 = FUN_000315c0(local_f0,local_fc)" identifier = (call_expression "FUN_000315c0(local_f0,local_fc)" identifier (argument_list "(local_f0,local_fc)" ( identifier , identifier )))) ;) }) (else_clause "else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" else (compound_statement "{\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" { (expression_statement "iVar29 = (int)local_a4;" (assignment_expression "iVar29 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar27 = iVar29;" (assignment_expression "iVar27 = iVar29" identifier = identifier) ;) (expression_statement "uVar34 = extraout_ECX_16;" (assignment_expression "uVar34 = extraout_ECX_16" identifier = identifier) ;) (for_statement "for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" for ( (assignment_expression "piVar30 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (binary_expression "(int)piVar30 < iVar29" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ; (assignment_expression "piVar30 = (int *)((int)piVar30 + 1)" identifier = (cast_expression "(int *)((int)piVar30 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar30 + 1)" ( (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" { (expression_statement "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);" (assignment_expression "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" identifier = (call_expression "FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" identifier (argument_list "(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" ( identifier , (binary_expression "(int)local_98 + (int)piVar30" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier )))) ;) (expression_statement "uVar34 = extraout_ECX_17;" (assignment_expression "uVar34 = extraout_ECX_17" identifier = identifier) ;) })) (expression_statement "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);" (assignment_expression "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34)" identifier = (call_expression "FUN_000316b0(local_f0,local_98,iVar29,uVar34)" identifier (argument_list "(local_f0,local_98,iVar29,uVar34)" ( identifier , identifier , identifier , identifier )))) ;) }))) (goto_statement "goto LAB_0009246c;" goto statement_identifier ;) })) (if_statement "if (cVar1 == '\0') goto LAB_000924ae;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000924ae;" goto statement_identifier ;)) (goto_statement "goto LAB_0009342d;" goto statement_identifier ;) })) (expression_statement "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);" (assignment_expression "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" identifier = (call_expression "FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" identifier (argument_list "(iVar29,local_fc,piVar17,piVar17)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "FUN_000315c0(local_f0,local_fc);" (call_expression "FUN_000315c0(local_f0,local_fc)" identifier (argument_list "(local_f0,local_fc)" ( identifier , identifier ))) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (labeled_statement "LAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;" statement_identifier : (if_statement "if (cVar1 != '\0') goto LAB_0009247e;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0009247e;" goto statement_identifier ;))) }) (else_clause "else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" else (compound_statement "{\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" { (if_statement "if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_a4 = 0;\n              }" { (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" else (compound_statement "{\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" { (expression_statement "local_a4 = *(short *)(local_e0 + 0x32);" (assignment_expression "local_a4 = *(short *)(local_e0 + 0x32)" identifier = (pointer_expression "*(short *)(local_e0 + 0x32)" * (cast_expression "(short *)(local_e0 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_e0 + 0x32)" ( (binary_expression "local_e0 + 0x32" identifier + number_literal) ))))) ;) }))) (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" identifier = (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar27 = iVar13 + 1;" (assignment_expression "iVar27 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "local_8c = local_100 + 1 + iVar13 + local_c4;" (assignment_expression "local_8c = local_100 + 1 + iVar13 + local_c4" identifier = (binary_expression "local_100 + 1 + iVar13 + local_c4" (binary_expression "local_100 + 1 + iVar13" (binary_expression "local_100 + 1" identifier + number_literal) + identifier) + identifier)) ;) (expression_statement "param_1[0xb] = local_8c;" (assignment_expression "param_1[0xb] = local_8c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }" { (if_statement "if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar15 = 0;\n                }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" else (compound_statement "{\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "iVar15 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar15 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) (expression_statement "iVar15 = local_c4 + local_100 + iVar15;" (assignment_expression "iVar15 = local_c4 + local_100 + iVar15" identifier = (binary_expression "local_c4 + local_100 + iVar15" (binary_expression "local_c4 + local_100" identifier + identifier) + identifier)) ;) (expression_statement "piVar30 = (int *)param_1[10];" (assignment_expression "piVar30 = (int *)param_1[10]" identifier = (cast_expression "(int *)param_1[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = (int)piVar30 + 1;" (assignment_expression "iVar21 = (int)piVar30 + 1" identifier = (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "param_1[10] = iVar21;" (assignment_expression "param_1[10] = iVar21" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }" { (expression_statement "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);" (assignment_expression "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21)" identifier = (call_expression "FUN_000315c0(iVar15,0,iVar21,iVar21)" identifier (argument_list "(iVar15,0,iVar21,iVar21)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "local_f0 = iVar13;" (assignment_expression "local_f0 = iVar13" identifier = identifier) ;) }) (else_clause "else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" else (compound_statement "{\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" { (expression_statement "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21)" identifier (argument_list "(iVar27,iVar13 + local_c4,iVar21,iVar21)" ( identifier , (binary_expression "iVar13 + local_c4" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_f0 = FUN_000315c0(iVar15,0);" (assignment_expression "local_f0 = FUN_000315c0(iVar15,0)" identifier = (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar13 = FUN_0004b310();" (assignment_expression "iVar13 = FUN_0004b310()" identifier = (call_expression "FUN_0004b310()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" { (expression_statement "*(short *)(iVar13 + 8) = (short)iVar15;" (assignment_expression "*(short *)(iVar13 + 8) = (short)iVar15" (pointer_expression "*(short *)(iVar13 + 8)" * (cast_expression "(short *)(iVar13 + 8)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = (cast_expression "(short)iVar15" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "iVar13 = FUN_0002b210();" (assignment_expression "iVar13 = FUN_0002b210()" identifier = (call_expression "FUN_0002b210()" identifier (argument_list "()" ( )))) ;) })) }))) (if_statement "if (local_100 == 0) goto LAB_00093044;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00093044;" goto statement_identifier ;)) (expression_statement "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);" (call_expression "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13)" identifier (argument_list "(extraout_ECX,extraout_EDX,param_2,iVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar15 = extraout_ECX_19;" (assignment_expression "iVar15 = extraout_ECX_19" identifier = identifier) ;) (expression_statement "uVar25 = extraout_EDX_08;" (assignment_expression "uVar25 = extraout_EDX_08" identifier = identifier) ;) (if_statement "if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }" if (parenthesized_expression "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_dc = piVar30;\n                }" { (expression_statement "local_dc = piVar30;" (assignment_expression "local_dc = piVar30" identifier = identifier) ;) })) }) (else_clause "else if (local_100 == 0) goto LAB_00091ee2;" else (if_statement "if (local_100 == 0) goto LAB_00091ee2;" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091ee2;" goto statement_identifier ;)))) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" identifier = number_literal) ;) (expression_statement "piVar30 = (int *)param_1[0x1d];" (assignment_expression "piVar30 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar30 = param_1;\n              }" { (expression_statement "piVar30 = param_1;" (assignment_expression "piVar30 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar30 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar30 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar30 + 5)" * (cast_expression "(undefined1 *)(piVar30 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30 + 5)" ( (binary_expression "piVar30 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" identifier = (cast_expression "(int *)iVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);" statement_identifier : (expression_statement "uVar32 = CONCAT44(uVar25,iVar29);" (assignment_expression "uVar32 = CONCAT44(uVar25,iVar29)" identifier = (call_expression "CONCAT44(uVar25,iVar29)" identifier (argument_list "(uVar25,iVar29)" ( identifier , identifier )))) ;)) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "piVar30 = param_4;" (assignment_expression "piVar30 = param_4" identifier = identifier) ;) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" identifier = identifier) ;) (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" identifier = identifier) ;) (if_statement "if (param_4 == (int *)0x0) goto LAB_0009314f;" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009314f;" goto statement_identifier ;)) (labeled_statement "LAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" statement_identifier : (if_statement "if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" { (if_statement "if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }" { (labeled_statement "LAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" statement_identifier : (if_statement "if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    FUN_00077ad0();\n                  }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" else (compound_statement "{\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" { (labeled_statement "LAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" statement_identifier : (expression_statement "FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" (call_expression "FUN_000315c0(local_ac,local_d4,iVar29,iVar29)" identifier (argument_list "(local_ac,local_d4,iVar29,iVar29)" ( identifier , identifier , identifier , identifier ))) ;)) }))) (expression_statement "FUN_000315c0(0,0,piVar30,piVar30);" (call_expression "FUN_000315c0(0,0,piVar30,piVar30)" identifier (argument_list "(0,0,piVar30,piVar30)" ( number_literal , number_literal , identifier , identifier ))) ;) }))) }))) (labeled_statement "LAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" statement_identifier : (if_statement "if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" if (parenthesized_expression "((local_6e != '\0') || (bVar31))" ( (binary_expression "(local_6e != '\0') || (bVar31)" (parenthesized_expression "(local_6e != '\0')" ( (binary_expression "local_6e != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }" if (parenthesized_expression "((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0))" ( (binary_expression "(iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" * (cast_expression "(byte *)(*param_1 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x1d)" ( (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                local_c8 = FUN_00017857();\n              }" { (expression_statement "local_c8 = FUN_00017857();" (assignment_expression "local_c8 = FUN_00017857()" identifier = (call_expression "FUN_00017857()" identifier (argument_list "()" ( )))) ;) })) (labeled_statement "LAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);" statement_identifier : (expression_statement "uVar25 = FUN_00096110(0,3,piVar8,param_3);" (assignment_expression "uVar25 = FUN_00096110(0,3,piVar8,param_3)" identifier = (call_expression "FUN_00096110(0,3,piVar8,param_3)" identifier (argument_list "(0,3,piVar8,param_3)" ( number_literal , number_literal , identifier , identifier )))) ;)) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" if (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" ( (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);" do (compound_statement "{\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                }" { (expression_statement "sVar7 = (short)iVar27;" (assignment_expression "sVar7 = (short)iVar27" identifier = (cast_expression "(short)iVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x20) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x20) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x20" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    sVar7 = FUN_0002a110();\n                  }" { (expression_statement "sVar7 = FUN_0002a110();" (assignment_expression "sVar7 = FUN_0002a110()" identifier = (call_expression "FUN_0002a110()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" if (parenthesized_expression "(((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))" ( (binary_expression "((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" (parenthesized_expression "((uVar25 | local_c8) == 0xffffffff)" ( (binary_expression "(uVar25 | local_c8) == 0xffffffff" (parenthesized_expression "(uVar25 | local_c8)" ( (binary_expression "uVar25 | local_c8" identifier | identifier) )) == number_literal) )) || (parenthesized_expression "(((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" ( (parenthesized_expression "((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))" ( (binary_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" (parenthesized_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))" ( (binary_expression "iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" (binary_expression "iVar27 < 0x20" identifier < number_literal) && (parenthesized_expression "(((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" ( (binary_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0" (parenthesized_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f))" ( (binary_expression "(uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)" (parenthesized_expression "(uVar25 | local_c8)" ( (binary_expression "uVar25 | local_c8" identifier | identifier) )) & (binary_expression "1 << ((byte)iVar27 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar27 & 0x1f)" ( (binary_expression "(byte)iVar27 & 0x1f" (cast_expression "(byte)iVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) != number_literal) ))) )) || (parenthesized_expression "(iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" ( (comma_expression "iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0" (assignment_expression "iVar9 = piVar8[1] + iVar27 * 0x14" identifier = (binary_expression "piVar8[1] + iVar27 * 0x14" (subscript_expression "piVar8[1]" identifier [ number_literal ]) + (binary_expression "iVar27 * 0x14" identifier * number_literal))) , (binary_expression "(*(byte *)(iVar9 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 1)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 1" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) ))) )) (compound_statement "{\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }" { (expression_statement "FUN_00077cb0(iVar27,sVar7 + local_74);" (call_expression "FUN_00077cb0(iVar27,sVar7 + local_74)" identifier (argument_list "(iVar27,sVar7 + local_74)" ( identifier , (binary_expression "sVar7 + local_74" identifier + identifier) ))) ;) }) (else_clause "else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" else (compound_statement "{\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" { (expression_statement "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);" (call_expression "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9)" identifier (argument_list "(sVar7 + local_74,0,iVar9,iVar9)" ( (binary_expression "sVar7 + local_74" identifier + identifier) , number_literal , identifier , identifier ))) ;) }))) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < (int)piVar16)" ( (binary_expression "iVar27 < (int)piVar16" identifier < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" if (parenthesized_expression "((cVar1 == '\0') && (local_e0 == 0))" ( (binary_expression "(cVar1 == '\0') && (local_e0 == 0)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" { (expression_statement "FUN_000315c0(local_d4,0,piVar16,piVar16);" (call_expression "FUN_000315c0(local_d4,0,piVar16,piVar16)" identifier (argument_list "(local_d4,0,piVar16,piVar16)" ( identifier , number_literal , identifier , identifier ))) ;) })) }) (else_clause "else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" else (compound_statement "{\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" { (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 != 0) goto LAB_000924dd;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000924dd;" goto statement_identifier ;)) })))) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" identifier = identifier) ;) (expression_statement "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);" (assignment_expression "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3)" identifier = (cast_expression "(int *)FUN_00096110(1,1,piVar8,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00096110(1,1,piVar8,param_3)" identifier (argument_list "(1,1,piVar8,param_3)" ( number_literal , number_literal , identifier , identifier ))))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" if (parenthesized_expression "(0 < (int)piVar18)" ( (binary_expression "0 < (int)piVar18" number_literal < (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" { (expression_statement "piVar16 = (int *)0x0;" (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar27 = local_94;" (assignment_expression "iVar27 = local_94" identifier = identifier) ;) (do_statement "do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);" do (compound_statement "{\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              }" { (if_statement "if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" if (parenthesized_expression "((int *)(int)(short)piVar8[10] == piVar16)" ( (binary_expression "(int *)(int)(short)piVar8[10] == piVar16" (cast_expression "(int *)(int)(short)piVar8[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)piVar8[10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ])))) == identifier) )) (compound_statement "{\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" { (labeled_statement "LAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);" statement_identifier : (expression_statement "FUN_000315c0(iVar27,0,piVar30);" (call_expression "FUN_000315c0(iVar27,0,piVar30)" identifier (argument_list "(iVar27,0,piVar30)" ( identifier , number_literal , identifier ))) ;)) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }) (else_clause "else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" else (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" { (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" identifier = (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" * (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (subscript_expression "piVar8[1]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" { (if_statement "if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" ( (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ])) < number_literal) )) (compound_statement "{\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }" { (expression_statement "piVar19 = piVar18;" (assignment_expression "piVar19 = piVar18" identifier = identifier) ;) (if_statement "if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;" if (parenthesized_expression "((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))" ( (binary_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" (parenthesized_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20))" ( (binary_expression "((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)" (parenthesized_expression "((local_50[0] & 1) != 0)" ( (binary_expression "(local_50[0] & 1) != 0" (parenthesized_expression "(local_50[0] & 1)" ( (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((int)piVar16 < 0x20)" ( (binary_expression "(int)piVar16 < 0x20" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "(piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" ( (comma_expression "piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (assignment_expression "piVar19 = piVar17" identifier = identifier) , (binary_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1)" ( (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1" (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f)" (cast_expression "(uint)piVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((uint)piVar16 & 0x1f)" ( (binary_expression "(uint)piVar16 & 0x1f" (cast_expression "(uint)piVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal)) ))) )) (goto_statement "goto LAB_000926a2;" goto statement_identifier ;)) (expression_statement "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);" (call_expression "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19)" identifier (argument_list "(piVar16,iVar27,piVar19,piVar19)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) (expression_statement "piVar30 = piVar19;" (assignment_expression "piVar30 = piVar19" identifier = identifier) ;) }) (else_clause "else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" else (if_statement "if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }" { (if_statement "if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) })) }) (else_clause "else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" else (compound_statement "{\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" { (if_statement "if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        piVar18 = (int *)(int)local_a4;\n                      }" { (expression_statement "piVar18 = (int *)(int)local_a4;" (assignment_expression "piVar18 = (int *)(int)local_a4" identifier = (cast_expression "(int *)(int)local_a4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" identifier = identifier) ;) (expression_statement "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);" (call_expression "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" identifier (argument_list "(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" ( (binary_expression "puVar11[(int)piVar16] + (int)piVar18" (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ]) + (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier , identifier ))) ;) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }))))) }) (else_clause "else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" else (compound_statement "{\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" { (expression_statement "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);" (assignment_expression "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" identifier = (binary_expression "iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" (binary_expression "iVar27 + -1" identifier + number_literal) + (call_expression "(uint)((uVar2 & 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar2 & 0x20) == 0)" ( (binary_expression "(uVar2 & 0x20) == 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) == number_literal) ))))) ;) }))) }))) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)piVar16 < (int)piVar18)" ( (binary_expression "(int)piVar16 < (int)piVar18" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              FUN_00018629();\n            }" { (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" if (parenthesized_expression "((local_50[0] & 1) == 0)" ( (binary_expression "(local_50[0] & 1) == 0" (parenthesized_expression "(local_50[0] & 1)" ( (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }" { (if_statement "if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" { (labeled_statement "LAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" statement_identifier : (expression_statement "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" (assignment_expression "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" identifier = (call_expression "FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" identifier (argument_list "(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" ( identifier , identifier , identifier , identifier , identifier , (binary_expression "param_3 & 0xff" identifier & number_literal) , identifier , (pointer_expression "&local_4c" & identifier) , identifier , number_literal , identifier , identifier )))) ;)) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar31 = bVar26 != 0;" (assignment_expression "bVar31 = bVar26 != 0" identifier = (binary_expression "bVar26 != 0" identifier != number_literal)) ;) (expression_statement "piVar16 = (int *)(uint)bVar31;" (assignment_expression "piVar16 = (int *)(uint)bVar31" identifier = (cast_expression "(int *)(uint)bVar31" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar31" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" if (parenthesized_expression "((local_4c != 0) || (piVar20 = piVar16, bVar31))" ( (binary_expression "(local_4c != 0) || (piVar20 = piVar16, bVar31)" (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) || (parenthesized_expression "(piVar20 = piVar16, bVar31)" ( (comma_expression "piVar20 = piVar16, bVar31" (assignment_expression "piVar20 = piVar16" identifier = identifier) , identifier) ))) )) (compound_statement "{\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" { (if_statement "if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }" { (expression_statement "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (assignment_expression "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier = (cast_expression "(int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier (argument_list "(local_f0,local_fc,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" else (compound_statement "{\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" { (expression_statement "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);" (assignment_expression "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" identifier = (cast_expression "(int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" identifier (argument_list "(local_f0,iVar13,local_c4,extraout_ECX_06)" ( identifier , identifier , identifier , identifier ))))) ;) }))) })) (if_statement "if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" { (expression_statement "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);" (assignment_expression "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" identifier = (cast_expression "(int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001b07a(0,puVar11,piVar14,piVar20)" identifier (argument_list "(0,puVar11,piVar14,piVar20)" ( number_literal , identifier , identifier , identifier ))))) ;) })) (expression_statement "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);" (assignment_expression "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" identifier = (call_expression "FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" identifier (argument_list "(local_c0,piVar23,0xffffffff,piVar20)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "piVar20 = extraout_ECX_07;" (assignment_expression "piVar20 = extraout_ECX_07" identifier = identifier) ;) (if_statement "if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" { (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier = (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier (argument_list "(0,0,(int)uVar32,(int)uVar32)" ( number_literal , number_literal , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "piVar20 = extraout_ECX_08;" (assignment_expression "piVar20 = extraout_ECX_08" identifier = identifier) ;) })) (if_statement "if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" if (parenthesized_expression "((1 < iVar10) || (bVar31))" ( (binary_expression "(1 < iVar10) || (bVar31)" (parenthesized_expression "(1 < iVar10)" ( (binary_expression "1 < iVar10" number_literal < identifier) )) || (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" { (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier = (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" identifier (argument_list "(0,0,(int)uVar32,(int)uVar32)" ( number_literal , number_literal , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "piVar20 = extraout_ECX_09;" (assignment_expression "piVar20 = extraout_ECX_09" identifier = identifier) ;) })) (expression_statement "piVar30 = (int *)((ulonglong)uVar32 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar32 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar32 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }" { (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                    uVar34 = 6;\n                  }" { (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" else (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" { (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" identifier = number_literal) ;) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" identifier = identifier) ;) }))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" identifier (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" else (compound_statement "{\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" { (expression_statement "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);" (assignment_expression "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" identifier = (cast_expression "(int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" identifier (argument_list "(local_d4,puVar11,piVar14,(int)uVar32)" ( identifier , identifier , identifier , (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                    uVar34 = 6;\n                  }" { (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" else (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" { (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" identifier = number_literal) ;) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" identifier = identifier) ;) }))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" identifier (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (if_statement "if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" if (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" * (cast_expression "(byte *)(*param_1 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x1d)" ( (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" { (expression_statement "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);" (call_expression "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1)" identifier (argument_list "(local_fc,puVar11,piVar14,*param_1)" ( identifier , identifier , identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "piVar30 = piVar14;" (assignment_expression "piVar30 = piVar14" identifier = identifier) ;) })) }))) })) }) (else_clause "else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" else (compound_statement "{\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" { (expression_statement "piVar30 = (int *)FUN_00032360();" (assignment_expression "piVar30 = (int *)FUN_00032360()" identifier = (cast_expression "(int *)FUN_00032360()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00032360()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;" (assignment_expression "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" identifier = (call_expression "FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" identifier (argument_list "(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" ( identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" { (if_statement "if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" if (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }" { (expression_statement "FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" identifier (argument_list "(local_f0,local_fc,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" else (compound_statement "{\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" { (expression_statement "FUN_000316b0(local_f0,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,uVar34)" identifier (argument_list "(local_f0,iVar13,local_c4,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "local_ec = local_94;" (assignment_expression "local_ec = local_94" identifier = identifier) ;) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (for_statement "for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" for ( (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (binary_expression "(int)piVar16 < iVar27" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ; (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" { (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" identifier = (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" * (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" ( (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (subscript_expression "piVar8[1]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" if (parenthesized_expression "((uVar2 & 0x60) == 0)" ( (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" ( (binary_expression "uVar2 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" { (if_statement "if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" if (parenthesized_expression "(((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10]))" ( (binary_expression "((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])" (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" ( (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[(int)piVar16]" identifier [ (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) ])) < number_literal) )) && (parenthesized_expression "(piVar16 != (int *)(int)(short)piVar8[10])" ( (binary_expression "piVar16 != (int *)(int)(short)piVar8[10]" identifier != (cast_expression "(int *)(int)(short)piVar8[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)piVar8[10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)piVar8[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar8[10]" identifier [ number_literal ]))))) ))) )) (compound_statement "{\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" { (expression_statement "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);" (call_expression "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27)" identifier (argument_list "(piVar16,local_ec,iVar27,iVar27)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) })) }) (else_clause "else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" else (compound_statement "{\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" { (expression_statement "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);" (assignment_expression "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0)" identifier = (binary_expression "local_ec - (uint)((uVar2 & 0x20) != 0)" identifier - (call_expression "(uint)((uVar2 & 0x20) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar2 & 0x20) != 0)" ( (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) != number_literal) ))))) ;) }))) (expression_statement "local_ec = local_ec + 1;" (assignment_expression "local_ec = local_ec + 1" identifier = (binary_expression "local_ec + 1" identifier + number_literal)) ;) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  FUN_00018629();\n                }" { (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00092d63;" goto statement_identifier ;) })) }))) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" { (expression_statement "FUN_000315c0(1,0,piVar16,piVar16);" (call_expression "FUN_000315c0(1,0,piVar16,piVar16)" identifier (argument_list "(1,0,piVar16,piVar16)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" identifier = identifier) ;) })) (expression_statement "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);" (call_expression "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" identifier (argument_list "(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" ( identifier , number_literal , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" if (parenthesized_expression "(local_e4 != 1)" ( (binary_expression "local_e4 != 1" identifier != number_literal) )) (compound_statement "{\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" { (if_statement "if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" if (parenthesized_expression "(local_e4 == 2)" ( (binary_expression "local_e4 == 2" identifier == number_literal) )) (compound_statement "{\n                FUN_00031430();\n                FUN_00043f00();\n              }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" else (if_statement "if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" if (parenthesized_expression "((local_e0 == 0) && (local_100 == 0))" ( (binary_expression "(local_e0 == 0) && (local_100 == 0)" (parenthesized_expression "(local_e0 == 0)" ( (binary_expression "local_e0 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_100 == 0)" ( (binary_expression "local_100 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }" { (expression_statement "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);" (call_expression "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04)" identifier (argument_list "(local_f0,0,extraout_EDX_04,extraout_EDX_04)" ( identifier , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" else (compound_statement "{\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);" (call_expression "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05)" identifier (argument_list "(local_8c,0,extraout_ECX_05,extraout_ECX_05)" ( identifier , number_literal , identifier , identifier ))) ;) }))))) })) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }" if (parenthesized_expression "((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0))" ( (binary_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)" (parenthesized_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0))" ( (binary_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)" (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0))" ( (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" * (cast_expression "(char *)((int)param_1 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x12)" ( (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(param_1[0x1e] == 0)" ( (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(param_1[0x1c] != 0)" ( (binary_expression "param_1[0x1c] != 0" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              FUN_00017af1();\n            }" { (expression_statement "FUN_00017af1();" (call_expression "FUN_00017af1()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" { (expression_statement "FUN_000315c0(1,0,local_9c,local_9c);" (call_expression "FUN_000315c0(1,0,local_9c,local_9c)" identifier (argument_list "(1,0,local_9c,local_9c)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_0002ee80();" (call_expression "FUN_0002ee80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" identifier = (pointer_expression "*local_e8" * identifier)) ;) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" if (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" * (cast_expression "(char *)(iVar27 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x4d)" ( (binary_expression "iVar27 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" { (expression_statement "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);" (call_expression "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27)" identifier (argument_list "(unaff_EDI + 0x199ff,0,iVar27,iVar27)" ( (binary_expression "unaff_EDI + 0x199ff" identifier + number_literal) , number_literal , identifier , identifier ))) ;) })) })) }) (else_clause "else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" else (compound_statement "{\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" { (expression_statement "piVar20 = (int *)param_1[2];" (assignment_expression "piVar20 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar16 = (int *)piVar8[0x10];" (assignment_expression "piVar16 = (int *)piVar8[0x10]" identifier = (cast_expression "(int *)piVar8[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x10]" identifier [ number_literal ]))) ;) (if_statement "if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" if (parenthesized_expression "(piVar16 != (int *)0x0)" ( (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" { (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (while_statement "while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }" while (parenthesized_expression "((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)))" ( (parenthesized_expression "(iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))" ( (binary_expression "iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" (binary_expression "iVar27 != *param_1" identifier != (pointer_expression "*param_1" * identifier)) && (parenthesized_expression "(piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" ( (comma_expression "piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0" (assignment_expression "piVar16 = (int *)piVar16[6]" identifier = (cast_expression "(int *)piVar16[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[6]" identifier [ number_literal ]))) , (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )) (compound_statement "{\n                iVar27 = *piVar16;\n              }" { (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) })) })) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" identifier = (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar27 = sVar7 + 2;" (assignment_expression "iVar27 = sVar7 + 2" identifier = (binary_expression "sVar7 + 2" identifier + number_literal)) ;) (expression_statement "iVar9 = param_1[10] + 1;" (assignment_expression "iVar9 = param_1[10] + 1" identifier = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[10] = iVar9;" (assignment_expression "param_1[10] = iVar9" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);" (assignment_expression "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9)" identifier = (call_expression "FUN_000315c0(iVar27,0,iVar9,iVar9)" identifier (argument_list "(iVar27,0,iVar9,iVar9)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "iVar10 = param_1[0xb];" (assignment_expression "iVar10 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iVar10 + 1;" (assignment_expression "iVar9 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar27 + iVar10;" (assignment_expression "iVar29 = iVar27 + iVar10" identifier = (binary_expression "iVar27 + iVar10" identifier + identifier)) ;) (expression_statement "param_1[0xb] = iVar29;" (assignment_expression "param_1[0xb] = iVar29" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" if (parenthesized_expression "(*extraout_EDX < 2)" ( (binary_expression "*extraout_EDX < 2" (pointer_expression "*extraout_EDX" * identifier) < number_literal) )) (compound_statement "{\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }" { (expression_statement "iVar15 = iVar29 + 2;" (assignment_expression "iVar15 = iVar29 + 2" identifier = (binary_expression "iVar29 + 2" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = iVar15;" (assignment_expression "param_1[0xb] = iVar15" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = FUN_0007d3c0(0,0,4,0);" (assignment_expression "iVar13 = FUN_0007d3c0(0,0,4,0)" identifier = (call_expression "FUN_0007d3c0(0,0,4,0)" identifier (argument_list "(0,0,4,0)" ( number_literal , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00091be9;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00091be9;" goto statement_identifier ;)) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (for_statement "for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" for ( (assignment_expression "iVar28 = 0" identifier = number_literal) ; (binary_expression "iVar28 < iVar21" identifier < identifier) ; (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ) (compound_statement "{\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" { (if_statement "if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "((int)puVar11[iVar28] < 0)" ( (binary_expression "(int)puVar11[iVar28] < 0" (cast_expression "(int)puVar11[iVar28]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar28]" identifier [ identifier ])) < number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" identifier (argument_list "(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" ( identifier , (binary_expression "iVar10 + 3 + iVar28" (binary_expression "iVar10 + 3" identifier + number_literal) + identifier) , identifier , identifier ))) ;) (if_statement "if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" if (parenthesized_expression "(0 < piVar20[0x1a])" ( (binary_expression "0 < piVar20[0x1a]" number_literal < (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" { (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" * (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ])) + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" else (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) })))) })) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" if (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" ( (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" ( (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" * (cast_expression "(byte *)(piVar8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 9)" ( (binary_expression "piVar8 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }" { (expression_statement "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);" (assignment_expression "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8)" identifier = (call_expression "FUN_000315c0(iVar9,0,piVar8,piVar8)" identifier (argument_list "(iVar9,0,piVar8,piVar8)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }" { (expression_statement "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34)" identifier (argument_list "(iVar10 + 2,0,uVar34,uVar34)" ( (binary_expression "iVar10 + 2" identifier + number_literal) , number_literal , identifier , identifier ))) ;) }) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" else (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  FUN_00077ad0();\n                }" { (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" identifier (argument_list "()" ( ))) ;) })))) }) (else_clause "else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" else (compound_statement "{\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" { (expression_statement "iVar21 = piVar8[2];" (assignment_expression "iVar21 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" { (if_statement "if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" { (expression_statement "pcVar4 = (code *)invalidInstructionException();" (assignment_expression "pcVar4 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar4)();" (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;" if (parenthesized_expression "((*(byte *)(iVar21 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar21 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar21 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar21 + 0x37) & 3" (pointer_expression "*(byte *)(iVar21 + 0x37)" * (cast_expression "(byte *)(iVar21 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x37)" ( (binary_expression "iVar21 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar21 = *(int *)(iVar21 + 0x14);" (assignment_expression "iVar21 = *(int *)(iVar21 + 0x14)" identifier = (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "psVar3 = *(short **)(iVar21 + 4);" (assignment_expression "psVar3 = *(short **)(iVar21 + 4)" identifier = (pointer_expression "*(short **)(iVar21 + 4)" * (cast_expression "(short **)(iVar21 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar21 + 4)" ( (binary_expression "iVar21 + 4" identifier + number_literal) ))))) ;) (expression_statement "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);" (call_expression "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3)" identifier (argument_list "((int)*psVar3,iVar9,psVar3,psVar3)" ( (cast_expression "(int)*psVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar3" * identifier)) , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(iVar10 + 2,0);" (call_expression "FUN_000315c0(iVar10 + 2,0)" identifier (argument_list "(iVar10 + 2,0)" ( (binary_expression "iVar10 + 2" identifier + number_literal) , number_literal ))) ;) }))) (expression_statement "cVar1 = *(char *)(iVar13 + 0x2e);" (assignment_expression "cVar1 = *(char *)(iVar13 + 0x2e)" identifier = (pointer_expression "*(char *)(iVar13 + 0x2e)" * (cast_expression "(char *)(iVar13 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2e)" ( (binary_expression "iVar13 + 0x2e" identifier + number_literal) ))))) ;) (if_statement "if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" { (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  piVar8 = param_1;\n                }" { (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar8 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar8 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar8 + 5)" * (cast_expression "(undefined1 *)(piVar8 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 5)" ( (binary_expression "piVar8 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);" (call_expression "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8)" identifier (argument_list "(iVar27,iVar29 + 1,piVar8,piVar8)" ( identifier , (binary_expression "iVar29 + 1" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar29 + 1,iVar15);" (call_expression "FUN_000315c0(iVar29 + 1,iVar15)" identifier (argument_list "(iVar29 + 1,iVar15)" ( (binary_expression "iVar29 + 1" identifier + number_literal) , identifier ))) ;) (goto_statement "goto LAB_000922b8;" goto statement_identifier ;) })) (expression_statement "uVar34 = FUN_0002b350();" (assignment_expression "uVar34 = FUN_0002b350()" identifier = (call_expression "FUN_0002b350()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(0,0,uVar34,uVar34);" (call_expression "FUN_000315c0(0,0,uVar34,uVar34)" identifier (argument_list "(0,0,uVar34,uVar34)" ( number_literal , number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" else (compound_statement "{\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" { (if_statement "if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_00047ba0(0);\n              }" { (expression_statement "FUN_00047ba0(0);" (call_expression "FUN_00047ba0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }) (else_clause "else {\n                FUN_00052c60(0);\n              }" else (compound_statement "{\n                FUN_00052c60(0);\n              }" { (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" identifier = (call_expression "FUN_000449c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" if (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" ( (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);" do (compound_statement "{\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" { (if_statement "if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" if (parenthesized_expression "((int)puVar11[iVar29] < 0)" ( (binary_expression "(int)puVar11[iVar29] < 0" (cast_expression "(int)puVar11[iVar29]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar11[iVar29]" identifier [ identifier ])) < number_literal) )) (compound_statement "{\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }" { (expression_statement "iVar10 = FUN_00047ba0(0);" (assignment_expression "iVar10 = FUN_00047ba0(0)" identifier = (call_expression "FUN_00047ba0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" { (expression_statement "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1;" (assignment_expression "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1" (pointer_expression "*(short *)(iVar10 + 0x20)" * (cast_expression "(short *)(iVar10 + 0x20)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x20)" ( (binary_expression "iVar10 + 0x20" identifier + number_literal) )))) = (binary_expression "(short)iVar29 + 1" (cast_expression "(short)iVar29" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) })) }) (else_clause "else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" else (if_statement "if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" if (parenthesized_expression "(extraout_ECX[puVar11[iVar29] * 4 + 1] != 0)" ( (binary_expression "extraout_ECX[puVar11[iVar29] * 4 + 1] != 0" (subscript_expression "extraout_ECX[puVar11[iVar29] * 4 + 1]" identifier [ (binary_expression "puVar11[iVar29] * 4 + 1" (binary_expression "puVar11[iVar29] * 4" (subscript_expression "puVar11[iVar29]" identifier [ identifier ]) * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                    FUN_00052c60(0);\n                  }" { (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })))) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" identifier = (call_expression "FUN_000449c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" identifier = (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar8 + 0x2a)" * (cast_expression "(short *)((int)piVar8 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x2a)" ( (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))))) ;) }) while (parenthesized_expression "(iVar29 < (int)piVar16)" ( (binary_expression "iVar29 < (int)piVar16" identifier < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);" (call_expression "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16)" identifier (argument_list "(iVar10,extraout_EDX,param_2,piVar16)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar10 != 0) {\n                FUN_000433a0();\n              }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_000433a0();\n              }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_000922b8:\n              piVar8 = extraout_EDX;" statement_identifier : (expression_statement "piVar8 = extraout_EDX;" (assignment_expression "piVar8 = extraout_EDX" identifier = identifier) ;)) (if_statement "if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }" if (parenthesized_expression "(*extraout_EDX == 1)" ( (binary_expression "*extraout_EDX == 1" (pointer_expression "*extraout_EDX" * identifier) == number_literal) )) (compound_statement "{\n                piVar8 = (int *)FUN_00043f00();\n              }" { (expression_statement "piVar8 = (int *)FUN_00043f00();" (assignment_expression "piVar8 = (int *)FUN_00043f00()" identifier = (cast_expression "(int *)FUN_00043f00()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))))) ;) })) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" identifier = identifier) ;) (expression_statement "local_f8 = FUN_000315c0(0,0,piVar8,piVar8);" (assignment_expression "local_f8 = FUN_000315c0(0,0,piVar8,piVar8)" identifier = (call_expression "FUN_000315c0(0,0,piVar8,piVar8)" identifier (argument_list "(0,0,piVar8,piVar8)" ( number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" if (parenthesized_expression "(0 < iVar27)" ( (binary_expression "0 < iVar27" number_literal < identifier) )) (compound_statement "{\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);" do (compound_statement "{\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                }" { (expression_statement "iVar29 = iVar10 + 1;" (assignment_expression "iVar29 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);" (call_expression "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16)" identifier (argument_list "(iVar10,iVar9 + iVar10,piVar8,piVar16)" ( identifier , (binary_expression "iVar9 + iVar10" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "iVar10 = iVar29;" (assignment_expression "iVar10 = iVar29" identifier = identifier) ;) }) while (parenthesized_expression "(iVar29 != sVar7 + 2)" ( (binary_expression "iVar29 != sVar7 + 2" identifier != (binary_expression "sVar7 + 2" identifier + number_literal)) )) ;) })) }))) (expression_statement "uVar34 = FUN_0002e240();" (assignment_expression "uVar34 = FUN_0002e240()" identifier = (call_expression "FUN_0002e240()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar27,iVar9,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar27,iVar9,uVar34,uVar34)" identifier (argument_list "(iVar27,iVar9,uVar34,uVar34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00032090(0xfffffff4);" (call_expression "FUN_00032090(0xfffffff4)" identifier (argument_list "(0xfffffff4)" ( number_literal ))) ;) (if_statement "if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }" if (parenthesized_expression "(param_3 == 0xb)" ( (binary_expression "param_3 == 0xb" identifier == number_literal) )) (compound_statement "{\n              param_3._0_2_ = 2;\n            }" { (expression_statement "param_3._0_2_ = 2;" (assignment_expression "param_3._0_2_ = 2" (field_expression "param_3._0_2_" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n            }" else (compound_statement "{\n            }" { }))) (if_statement "if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" if (parenthesized_expression "(0 < piVar20[0x1a])" ( (binary_expression "0 < piVar20[0x1a]" number_literal < (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" { (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" * (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" ( (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ])) + number_literal) )))) = (cast_expression "(undefined2)param_3" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) })) (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar8 = param_1;\n            }" { (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar8 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar8 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar8 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar8 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x15)" ( (binary_expression "(int)piVar8 + 0x15" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }" { (expression_statement "FUN_000315c0(local_f8 + 1,0,param_1,param_1);" (call_expression "FUN_000315c0(local_f8 + 1,0,param_1,param_1)" identifier (argument_list "(local_f8 + 1,0,param_1,param_1)" ( (binary_expression "local_f8 + 1" identifier + number_literal) , number_literal , identifier , identifier ))) ;) (if_statement "if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }" if (parenthesized_expression "(local_f8 < 0)" ( (binary_expression "local_f8 < 0" identifier < number_literal) )) (compound_statement "{\n                local_f8 = piVar20[0x1a] + -1;\n              }" { (expression_statement "local_f8 = piVar20[0x1a] + -1;" (assignment_expression "local_f8 = piVar20[0x1a] + -1" identifier = (binary_expression "piVar20[0x1a] + -1" (subscript_expression "piVar20[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar27 = unaff_EDI + 0x4e0b5;" (assignment_expression "iVar27 = unaff_EDI + 0x4e0b5" identifier = (binary_expression "unaff_EDI + 0x4e0b5" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" if (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" { (expression_statement "iVar27 = local_f8 * 0x14 + piVar20[0x19];" (assignment_expression "iVar27 = local_f8 * 0x14 + piVar20[0x19]" identifier = (binary_expression "local_f8 * 0x14 + piVar20[0x19]" (binary_expression "local_f8 * 0x14" identifier * number_literal) + (subscript_expression "piVar20[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = piVar20[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = piVar20[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = (subscript_expression "piVar20[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);" (call_expression "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" identifier (argument_list "(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" ( number_literal , number_literal , (binary_expression "unaff_EDI + 0x4cae5" identifier + number_literal) , (binary_expression "unaff_EDI + 0x4cae5" identifier + number_literal) ))) ;) }) (else_clause "else {\n              FUN_00043f00();\n            }" else (compound_statement "{\n              FUN_00043f00();\n            }" { (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" identifier (argument_list "()" ( ))) ;) }))) }))) })) (labeled_statement "LAB_00091be9:\n        piVar8 = local_44;" statement_identifier : (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" identifier = identifier) ;)) (if_statement "if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" if (parenthesized_expression "(local_44 != (int *)0x0)" ( (binary_expression "local_44 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" { (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "FUN_00024720();" (call_expression "FUN_00024720()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00091598;" goto statement_identifier ;) })) })) })) (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" identifier = identifier) ;) (if_statement "if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" if (parenthesized_expression "(local_44 != (int *)0x0)" ( (binary_expression "local_44 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" { (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) })) (labeled_statement "LAB_00091598:\n  FUN_00043120();" statement_identifier : (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }" if (parenthesized_expression "(extraout_ECX != (uint *)0x0)" ( (binary_expression "extraout_ECX != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_000433a0();\n  }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_2 != 0) {\n    FUN_000432e0();\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_000432e0();\n  }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00091b70:\n  iVar29 = iVar29 + 1;" statement_identifier : (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;)) (expression_statement "local_fc = local_fc + 5;" (assignment_expression "local_fc = local_fc + 5" identifier = (binary_expression "local_fc + 5" identifier + number_literal)) ;) (if_statement "if (iVar29 == iVar10) goto LAB_00091b82;" if (parenthesized_expression "(iVar29 == iVar10)" ( (binary_expression "iVar29 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_00091b82;" goto statement_identifier ;)) (goto_statement "goto LAB_000918f0;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (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 LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (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 { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_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 IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) != LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression (binary_expression LIT < IDENT) || (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (assignment_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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression ~ (subscript_expression IDENT [ IDENT ]))) >> LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (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 IDENT + LIT) ))))) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != (char_literal ' escape_sequence '))) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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 = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) ))) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })))) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) == (char_literal ' escape_sequence '))) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , LIT , LIT )))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , IDENT )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT))) >> LIT) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)))) (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 *)) ) (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) }))) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT < LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) & (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) )) != LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , LIT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (subscript_expression IDENT [ LIT ])) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) }))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , IDENT , (pointer_expression & IDENT) , IDENT , LIT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = IDENT) , IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , IDENT ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT , 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 (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) })) }) (else_clause else (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 = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )))))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (subscript_expression IDENT [ LIT ])) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) < LIT) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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) )))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (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 ( ))) ;) })) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) }))))) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (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 (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , IDENT , IDENT ))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * IDENT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression IDENT + LIT) + IDENT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) = LIT) ;) })) (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) )))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (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 = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) + LIT)) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression (subscript_expression IDENT [ IDENT ]) * LIT) + LIT) ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 *)) ) (call_expression IDENT (argument_list ( ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) }) (else_clause else (compound_statement { }))) (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 (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "void __regparm1 FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)\n\n{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" (primitive_type "void") (ERROR "__regparm1" (identifier "__regparm1")) (function_declarator "FUN_00091510(int *param_1,int param_2,uint param_3,int *param_4)" (identifier "FUN_00091510") (parameter_list "(int *param_1,int param_2,uint param_3,int *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  size_t __n;\n  char cVar1;\n  ushort uVar2;\n  short *psVar3;\n  code *pcVar4;\n  bool bVar5;\n  byte bVar6;\n  short sVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  int *piVar16;\n  int *piVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  int iVar21;\n  uint *extraout_ECX;\n  uint uVar22;\n  int extraout_ECX_00;\n  int extraout_ECX_01;\n  int extraout_ECX_02;\n  int extraout_ECX_03;\n  int extraout_ECX_04;\n  undefined4 extraout_ECX_05;\n  undefined4 extraout_ECX_06;\n  int *extraout_ECX_07;\n  int *extraout_ECX_08;\n  int *extraout_ECX_09;\n  int extraout_ECX_10;\n  int extraout_ECX_11;\n  int extraout_ECX_12;\n  int extraout_ECX_13;\n  int extraout_ECX_14;\n  int extraout_ECX_15;\n  undefined4 extraout_ECX_16;\n  undefined4 extraout_ECX_17;\n  int extraout_ECX_18;\n  int extraout_ECX_19;\n  int *extraout_EDX;\n  int *piVar23;\n  uint uVar24;\n  uint extraout_EDX_00;\n  uint uVar25;\n  uint extraout_EDX_01;\n  uint extraout_EDX_02;\n  uint extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uint extraout_EDX_05;\n  uint extraout_EDX_06;\n  uint extraout_EDX_07;\n  uint extraout_EDX_08;\n  byte bVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int *piVar30;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  bool bVar31;\n  undefined8 uVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  uint local_100;\n  int *local_fc;\n  int local_f8;\n  int local_f0;\n  int local_ec;\n  int *local_e8;\n  uint local_e4;\n  int local_e0;\n  int *local_dc;\n  uint *local_d8;\n  int local_d4;\n  uint local_c8;\n  int local_c4;\n  int *local_c0;\n  uint local_b8;\n  int local_ac;\n  short local_a4;\n  int local_9c;\n  int *local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_84;\n  int *local_78;\n  int local_74;\n  char local_6e;\n  int local_68;\n  int *local_64;\n  byte local_50 [4];\n  int local_4c;\n  int local_48;\n  int *local_44;\n  int *local_40;\n  int *local_3c;\n  int *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9151b;\n  FUN_000a94ff();\n  iVar27 = *param_1;\n  local_4c = 0;\n  local_48 = 0;\n  local_44 = (int *)0x0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;\n  piVar8 = (int *)FUN_00091200();\n  if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }\n  piVar8 = local_44;\n  if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }\nLAB_00091598:\n  FUN_00043120();\n  if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }\n  if (param_2 != 0) {\n    FUN_000432e0();\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a9ea0();\nLAB_00091b70:\n  iVar29 = iVar29 + 1;\n  local_fc = local_fc + 5;\n  if (iVar29 == iVar10) goto LAB_00091b82;\n  goto LAB_000918f0;\n}" ({ "{") (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "short *psVar3;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar3" (* "*") (identifier "psVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "short sVar7;" (sized_type_specifier "short" (short "short")) (identifier "sVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "uint *extraout_ECX;" (type_identifier "uint") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "int extraout_ECX_00;" (primitive_type "int") (identifier "extraout_ECX_00") (; ";")) (declaration "int extraout_ECX_01;" (primitive_type "int") (identifier "extraout_ECX_01") (; ";")) (declaration "int extraout_ECX_02;" (primitive_type "int") (identifier "extraout_ECX_02") (; ";")) (declaration "int extraout_ECX_03;" (primitive_type "int") (identifier "extraout_ECX_03") (; ";")) (declaration "int extraout_ECX_04;" (primitive_type "int") (identifier "extraout_ECX_04") (; ";")) (declaration "undefined4 extraout_ECX_05;" (type_identifier "undefined4") (identifier "extraout_ECX_05") (; ";")) (declaration "undefined4 extraout_ECX_06;" (type_identifier "undefined4") (identifier "extraout_ECX_06") (; ";")) (declaration "int *extraout_ECX_07;" (primitive_type "int") (pointer_declarator "*extraout_ECX_07" (* "*") (identifier "extraout_ECX_07")) (; ";")) (declaration "int *extraout_ECX_08;" (primitive_type "int") (pointer_declarator "*extraout_ECX_08" (* "*") (identifier "extraout_ECX_08")) (; ";")) (declaration "int *extraout_ECX_09;" (primitive_type "int") (pointer_declarator "*extraout_ECX_09" (* "*") (identifier "extraout_ECX_09")) (; ";")) (declaration "int extraout_ECX_10;" (primitive_type "int") (identifier "extraout_ECX_10") (; ";")) (declaration "int extraout_ECX_11;" (primitive_type "int") (identifier "extraout_ECX_11") (; ";")) (declaration "int extraout_ECX_12;" (primitive_type "int") (identifier "extraout_ECX_12") (; ";")) (declaration "int extraout_ECX_13;" (primitive_type "int") (identifier "extraout_ECX_13") (; ";")) (declaration "int extraout_ECX_14;" (primitive_type "int") (identifier "extraout_ECX_14") (; ";")) (declaration "int extraout_ECX_15;" (primitive_type "int") (identifier "extraout_ECX_15") (; ";")) (declaration "undefined4 extraout_ECX_16;" (type_identifier "undefined4") (identifier "extraout_ECX_16") (; ";")) (declaration "undefined4 extraout_ECX_17;" (type_identifier "undefined4") (identifier "extraout_ECX_17") (; ";")) (declaration "int extraout_ECX_18;" (primitive_type "int") (identifier "extraout_ECX_18") (; ";")) (declaration "int extraout_ECX_19;" (primitive_type "int") (identifier "extraout_ECX_19") (; ";")) (declaration "int *extraout_EDX;" (primitive_type "int") (pointer_declarator "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "uint uVar24;" (type_identifier "uint") (identifier "uVar24") (; ";")) (declaration "uint extraout_EDX_00;" (type_identifier "uint") (identifier "extraout_EDX_00") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "uint extraout_EDX_01;" (type_identifier "uint") (identifier "extraout_EDX_01") (; ";")) (declaration "uint extraout_EDX_02;" (type_identifier "uint") (identifier "extraout_EDX_02") (; ";")) (declaration "uint extraout_EDX_03;" (type_identifier "uint") (identifier "extraout_EDX_03") (; ";")) (declaration "undefined4 extraout_EDX_04;" (type_identifier "undefined4") (identifier "extraout_EDX_04") (; ";")) (declaration "uint extraout_EDX_05;" (type_identifier "uint") (identifier "extraout_EDX_05") (; ";")) (declaration "uint extraout_EDX_06;" (type_identifier "uint") (identifier "extraout_EDX_06") (; ";")) (declaration "uint extraout_EDX_07;" (type_identifier "uint") (identifier "extraout_EDX_07") (; ";")) (declaration "uint extraout_EDX_08;" (type_identifier "uint") (identifier "extraout_EDX_08") (; ";")) (declaration "byte bVar26;" (type_identifier "byte") (identifier "bVar26") (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "int iVar29;" (primitive_type "int") (identifier "iVar29") (; ";")) (declaration "int *piVar30;" (primitive_type "int") (pointer_declarator "*piVar30" (* "*") (identifier "piVar30")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar31;" (primitive_type "bool") (identifier "bVar31") (; ";")) (declaration "undefined8 uVar32;" (type_identifier "undefined8") (identifier "uVar32") (; ";")) (declaration "undefined8 uVar33;" (type_identifier "undefined8") (identifier "uVar33") (; ";")) (declaration "undefined4 uVar34;" (type_identifier "undefined4") (identifier "uVar34") (; ";")) (declaration "uint local_100;" (type_identifier "uint") (identifier "local_100") (; ";")) (declaration "int *local_fc;" (primitive_type "int") (pointer_declarator "*local_fc" (* "*") (identifier "local_fc")) (; ";")) (declaration "int local_f8;" (primitive_type "int") (identifier "local_f8") (; ";")) (declaration "int local_f0;" (primitive_type "int") (identifier "local_f0") (; ";")) (declaration "int local_ec;" (primitive_type "int") (identifier "local_ec") (; ";")) (declaration "int *local_e8;" (primitive_type "int") (pointer_declarator "*local_e8" (* "*") (identifier "local_e8")) (; ";")) (declaration "uint local_e4;" (type_identifier "uint") (identifier "local_e4") (; ";")) (declaration "int local_e0;" (primitive_type "int") (identifier "local_e0") (; ";")) (declaration "int *local_dc;" (primitive_type "int") (pointer_declarator "*local_dc" (* "*") (identifier "local_dc")) (; ";")) (declaration "uint *local_d8;" (type_identifier "uint") (pointer_declarator "*local_d8" (* "*") (identifier "local_d8")) (; ";")) (declaration "int local_d4;" (primitive_type "int") (identifier "local_d4") (; ";")) (declaration "uint local_c8;" (type_identifier "uint") (identifier "local_c8") (; ";")) (declaration "int local_c4;" (primitive_type "int") (identifier "local_c4") (; ";")) (declaration "int *local_c0;" (primitive_type "int") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "uint local_b8;" (type_identifier "uint") (identifier "local_b8") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "short local_a4;" (sized_type_specifier "short" (short "short")) (identifier "local_a4") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "int *local_98;" (primitive_type "int") (pointer_declarator "*local_98" (* "*") (identifier "local_98")) (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "int *local_78;" (primitive_type "int") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "char local_6e;" (primitive_type "char") (identifier "local_6e") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int *local_64;" (primitive_type "int") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "byte local_50 [4];" (type_identifier "byte") (array_declarator "local_50 [4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int *local_44;" (primitive_type "int") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "int *local_40;" (primitive_type "int") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "int *local_3c;" (primitive_type "int") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x9151b;" (assignment_expression "uStack_14 = 0x9151b" (identifier "uStack_14") (= "=") (number_literal "0x9151b")) (; ";")) (expression_statement "FUN_000a94ff();" (call_expression "FUN_000a94ff()" (identifier "FUN_000a94ff") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" (identifier "iVar27") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" (identifier "local_44") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (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")) () ")"))))) (; ";")) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;" (if "if") (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0'))" (( "(") (binary_expression "(param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar27 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar27 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" (* "*") (cast_expression "(char *)(iVar27 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x4d)" (( "(") (binary_expression "iVar27 + 0x4d" (identifier "iVar27") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_00091598;" (goto "goto") (statement_identifier "LAB_00091598") (; ";"))) (expression_statement "piVar8 = (int *)FUN_00091200();" (assignment_expression "piVar8 = (int *)FUN_00091200()" (identifier "piVar8") (= "=") (cast_expression "(int *)FUN_00091200()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00091200()" (identifier "FUN_00091200") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar8 != (int *)0x0) {\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(piVar8 != (int *)0x0)" (( "(") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_d4 = -0x8000;\n    if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }\n    iVar9 = FUN_0002add0(extraout_ECX,local_50);\n    piVar20 = (int *)piVar8[3];\n    local_100 = 0;\n    if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }\n    iVar10 = FUN_00083c60();\n    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }\n  }" ({ "{") (expression_statement "local_d4 = -0x8000;" (assignment_expression "local_d4 = -0x8000" (identifier "local_d4") (= "=") (number_literal "-0x8000")) (; ";")) (if_statement "if (piVar8[0x12] != 0) {\n      local_d4 = FUN_0002a630();\n    }" (if "if") (parenthesized_expression "(piVar8[0x12] != 0)" (( "(") (binary_expression "piVar8[0x12] != 0" (subscript_expression "piVar8[0x12]" (identifier "piVar8") ([ "[") (number_literal "0x12") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_d4 = FUN_0002a630();\n    }" ({ "{") (expression_statement "local_d4 = FUN_0002a630();" (assignment_expression "local_d4 = FUN_0002a630()" (identifier "local_d4") (= "=") (call_expression "FUN_0002a630()" (identifier "FUN_0002a630") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar9 = FUN_0002add0(extraout_ECX,local_50);" (assignment_expression "iVar9 = FUN_0002add0(extraout_ECX,local_50)" (identifier "iVar9") (= "=") (call_expression "FUN_0002add0(extraout_ECX,local_50)" (identifier "FUN_0002add0") (argument_list "(extraout_ECX,local_50)" (( "(") (identifier "extraout_ECX") (, ",") (identifier "local_50") () ")")))) (; ";")) (expression_statement "piVar20 = (int *)piVar8[3];" (assignment_expression "piVar20 = (int *)piVar8[3]" (identifier "piVar20") (= "=") (cast_expression "(int *)piVar8[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (if_statement "if (1 < *extraout_EDX) {\n      local_100 = *extraout_ECX;\n    }" (if "if") (parenthesized_expression "(1 < *extraout_EDX)" (( "(") (binary_expression "1 < *extraout_EDX" (number_literal "1") (< "<") (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX"))) () ")")) (compound_statement "{\n      local_100 = *extraout_ECX;\n    }" ({ "{") (expression_statement "local_100 = *extraout_ECX;" (assignment_expression "local_100 = *extraout_ECX" (identifier "local_100") (= "=") (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX"))) (; ";")) (} "}"))) (expression_statement "iVar10 = FUN_00083c60();" (assignment_expression "iVar10 = FUN_00083c60()" (identifier "iVar10") (= "=") (call_expression "FUN_00083c60()" (identifier "FUN_00083c60") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" (if "if") (parenthesized_expression "((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0))" (( "(") (binary_expression "(iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)" (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = FUN_0003d4a0(), iVar10 == 0)" (( "(") (comma_expression "iVar10 = FUN_0003d4a0(), iVar10 == 0" (assignment_expression "iVar10 = FUN_0003d4a0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003d4a0()" (identifier "FUN_0003d4a0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      piVar16 = (int *)param_1[10];\n      local_c0 = (int *)((int)piVar16 + 1);\n      bVar26 = *(byte *)(piVar8 + 9);\n      param_1[10] = (int)local_c0;\n      iVar10 = piVar8[2];\n      local_dc = piVar16;\n      if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }\n      if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }\n      extraout_EDX[0xc] = (int)local_dc;\n      puVar11 = (undefined4 *)FUN_0002e2d0();\n      if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }\n    }" ({ "{") (expression_statement "piVar16 = (int *)param_1[10];" (assignment_expression "piVar16 = (int *)param_1[10]" (identifier "piVar16") (= "=") (cast_expression "(int *)param_1[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "local_c0 = (int *)((int)piVar16 + 1);" (assignment_expression "local_c0 = (int *)((int)piVar16 + 1)" (identifier "local_c0") (= "=") (cast_expression "(int *)((int)piVar16 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 + 1)" (( "(") (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar26 = *(byte *)(piVar8 + 9);" (assignment_expression "bVar26 = *(byte *)(piVar8 + 9)" (identifier "bVar26") (= "=") (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "param_1[10] = (int)local_c0;" (assignment_expression "param_1[10] = (int)local_c0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)local_c0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c0"))) (; ";")) (expression_statement "iVar10 = piVar8[2];" (assignment_expression "iVar10 = piVar8[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_dc = piVar16;" (assignment_expression "local_dc = piVar16" (identifier "local_dc") (= "=") (identifier "piVar16")) (; ";")) (if_statement "if ((bVar26 & 0x80) == 0) {\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }\n      else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" (if "if") (parenthesized_expression "((bVar26 & 0x80) == 0)" (( "(") (binary_expression "(bVar26 & 0x80) == 0" (parenthesized_expression "(bVar26 & 0x80)" (( "(") (binary_expression "bVar26 & 0x80" (identifier "bVar26") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_e0 = 0;\n        if (iVar10 == 0) goto LAB_00091c69;\nLAB_00091707:\n        piVar23 = local_c0;\n        do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);\n        param_1[10] = (int)piVar23;\n      }" ({ "{") (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" (identifier "local_e0") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_00091c69;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091c69;" (goto "goto") (statement_identifier "LAB_00091c69") (; ";"))) (labeled_statement "LAB_00091707:\n        piVar23 = local_c0;" (statement_identifier "LAB_00091707") (: ":") (expression_statement "piVar23 = local_c0;" (assignment_expression "piVar23 = local_c0" (identifier "piVar23") (= "=") (identifier "local_c0")) (; ";"))) (do_statement "do {\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        } while (iVar10 != 0);" (do "do") (compound_statement "{\n          bVar31 = local_e0 == iVar10;\n          iVar10 = *(int *)(iVar10 + 0x14);\n          if (bVar31) {\n            local_dc = piVar23;\n          }\n          piVar23 = (int *)((int)piVar23 + 1);\n          local_90 = ~(uint)piVar16 + (int)piVar23;\n        }" ({ "{") (expression_statement "bVar31 = local_e0 == iVar10;" (assignment_expression "bVar31 = local_e0 == iVar10" (identifier "bVar31") (= "=") (binary_expression "local_e0 == iVar10" (identifier "local_e0") (== "==") (identifier "iVar10"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar10 + 0x14);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x14)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar10 + 0x14)" (* "*") (cast_expression "(int *)(iVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x14)" (( "(") (binary_expression "iVar10 + 0x14" (identifier "iVar10") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (bVar31) {\n            local_dc = piVar23;\n          }" (if "if") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (compound_statement "{\n            local_dc = piVar23;\n          }" ({ "{") (expression_statement "local_dc = piVar23;" (assignment_expression "local_dc = piVar23" (identifier "local_dc") (= "=") (identifier "piVar23")) (; ";")) (} "}"))) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" (identifier "piVar23") (= "=") (cast_expression "(int *)((int)piVar23 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar23 + 1)" (( "(") (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_90 = ~(uint)piVar16 + (int)piVar23;" (assignment_expression "local_90 = ~(uint)piVar16 + (int)piVar23" (identifier "local_90") (= "=") (binary_expression "~(uint)piVar16 + (int)piVar23" (unary_expression "~(uint)piVar16" (~ "~") (cast_expression "(uint)piVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar16"))) (+ "+") (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_1[10] = (int)piVar23;" (assignment_expression "param_1[10] = (int)piVar23" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23"))) (; ";")) (} "}")) (else_clause "else {\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" (else "else") (compound_statement "{\n        if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }\nLAB_00091c69:\n        local_e0 = 0;\n        local_90 = 0;\n      }" ({ "{") (if_statement "if (iVar10 != 0) {\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          bVar26 = *(byte *)(iVar10 + 0x37);\n          local_e0 = iVar10;\n          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }\n          goto LAB_00091707;\n        }" ({ "{") (expression_statement "bVar26 = *(byte *)(iVar10 + 0x37);" (assignment_expression "bVar26 = *(byte *)(iVar10 + 0x37)" (identifier "bVar26") (= "=") (pointer_expression "*(byte *)(iVar10 + 0x37)" (* "*") (cast_expression "(byte *)(iVar10 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x37)" (( "(") (binary_expression "iVar10 + 0x37" (identifier "iVar10") (+ "+") (number_literal "0x37")) () ")"))))) (; ";")) (expression_statement "local_e0 = iVar10;" (assignment_expression "local_e0 = iVar10" (identifier "local_e0") (= "=") (identifier "iVar10")) (; ";")) (while_statement "while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" (while "while") (parenthesized_expression "(((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)))" (( "(") (parenthesized_expression "((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))" (( "(") (binary_expression "(bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" (binary_expression "(bVar26 & 3) != 2" (parenthesized_expression "(bVar26 & 3)" (( "(") (binary_expression "bVar26 & 3" (identifier "bVar26") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) (&& "&&") (parenthesized_expression "(local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0)" (( "(") (comma_expression "local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0" (assignment_expression "local_e0 = *(int *)(local_e0 + 0x14)" (identifier "local_e0") (= "=") (pointer_expression "*(int *)(local_e0 + 0x14)" (* "*") (cast_expression "(int *)(local_e0 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_e0 + 0x14)" (( "(") (binary_expression "local_e0 + 0x14" (identifier "local_e0") (+ "+") (number_literal "0x14")) () ")"))))) (, ",") (binary_expression "local_e0 != 0" (identifier "local_e0") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n            bVar26 = *(byte *)(local_e0 + 0x37);\n          }" ({ "{") (expression_statement "bVar26 = *(byte *)(local_e0 + 0x37);" (assignment_expression "bVar26 = *(byte *)(local_e0 + 0x37)" (identifier "bVar26") (= "=") (pointer_expression "*(byte *)(local_e0 + 0x37)" (* "*") (cast_expression "(byte *)(local_e0 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_e0 + 0x37)" (( "(") (binary_expression "local_e0 + 0x37" (identifier "local_e0") (+ "+") (number_literal "0x37")) () ")"))))) (; ";")) (} "}"))) (goto_statement "goto LAB_00091707;" (goto "goto") (statement_identifier "LAB_00091707") (; ";")) (} "}"))) (labeled_statement "LAB_00091c69:\n        local_e0 = 0;" (statement_identifier "LAB_00091c69") (: ":") (expression_statement "local_e0 = 0;" (assignment_expression "local_e0 = 0" (identifier "local_e0") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (param_4 != (int *)0x0) {\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" (if "if") (parenthesized_expression "(param_4 != (int *)0x0)" (( "(") (binary_expression "param_4 != (int *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_dc = (int *)param_4[7];\n        local_c0 = (int *)param_4[8];\n        param_1[10] = (int)piVar16;\n      }" ({ "{") (expression_statement "local_dc = (int *)param_4[7];" (assignment_expression "local_dc = (int *)param_4[7]" (identifier "local_dc") (= "=") (cast_expression "(int *)param_4[7]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "local_c0 = (int *)param_4[8];" (assignment_expression "local_c0 = (int *)param_4[8]" (identifier "local_c0") (= "=") (cast_expression "(int *)param_4[8]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[8]" (identifier "param_4") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "param_1[10] = (int)piVar16;" (assignment_expression "param_1[10] = (int)piVar16" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16"))) (; ";")) (} "}"))) (expression_statement "extraout_EDX[0xc] = (int)local_dc;" (assignment_expression "extraout_EDX[0xc] = (int)local_dc" (subscript_expression "extraout_EDX[0xc]" (identifier "extraout_EDX") ([ "[") (number_literal "0xc") (] "]")) (= "=") (cast_expression "(int)local_dc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_dc"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)FUN_0002e2d0();" (assignment_expression "puVar11 = (undefined4 *)FUN_0002e2d0()" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)FUN_0002e2d0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e2d0()" (identifier "FUN_0002e2d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" (if "if") (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);\n        __n = local_90 + 1;\n        piVar18 = piVar23 + __n;\n        memset(piVar18,1,__n);\n        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;\n        sVar7 = *(short *)((int)piVar8 + 0x2a);\n        if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }\n        local_34 = 0;\n        local_30 = 0;\n        local_2c = 0;\n        local_24 = 0;\n        local_28 = 0x200;\n        local_38 = param_4;\n        local_e8 = (int *)param_1[2];\n        local_40 = param_1;\n        local_3c = extraout_EDX;\n        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }\nLAB_00091be9:\n        piVar8 = local_44;\n        if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }\n        FUN_00024720();\n        goto LAB_00091598;\n      }" ({ "{") (expression_statement "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a)" (identifier "piVar23") (= "=") (binary_expression "puVar11 + *(short *)((int)piVar8 + 0x2a)" (identifier "puVar11") (+ "+") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (expression_statement "__n = local_90 + 1;" (assignment_expression "__n = local_90 + 1" (identifier "__n") (= "=") (binary_expression "local_90 + 1" (identifier "local_90") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar18 = piVar23 + __n;" (assignment_expression "piVar18 = piVar23 + __n" (identifier "piVar18") (= "=") (binary_expression "piVar23 + __n" (identifier "piVar23") (+ "+") (identifier "__n"))) (; ";")) (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" (identifier "memset") (argument_list "(piVar18,1,__n)" (( "(") (identifier "piVar18") (, ",") (number_literal "1") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + local_90 + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + local_90 + 1)" (* "*") (cast_expression "(undefined1 *)((int)piVar18 + local_90 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar18 + local_90 + 1)" (( "(") (binary_expression "(int)piVar18 + local_90 + 1" (binary_expression "(int)piVar18 + local_90" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (+ "+") (identifier "local_90")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (if_statement "if (0 < sVar7) {\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" (if "if") (parenthesized_expression "(0 < sVar7)" (( "(") (binary_expression "0 < sVar7" (number_literal "0") (< "<") (identifier "sVar7")) () ")")) (compound_statement "{\n          puVar12 = puVar11;\n          do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);\n        }" ({ "{") (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" (identifier "puVar12") (= "=") (identifier "puVar11")) (; ";")) (do_statement "do {\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          } while (puVar11 + sVar7 != puVar12);" (do "do") (compound_statement "{\n            *puVar12 = 0xffffffff;\n            puVar12 = puVar12 + 1;\n          }" ({ "{") (expression_statement "*puVar12 = 0xffffffff;" (assignment_expression "*puVar12 = 0xffffffff" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 + sVar7 != puVar12)" (( "(") (binary_expression "puVar11 + sVar7 != puVar12" (binary_expression "puVar11 + sVar7" (identifier "puVar11") (+ "+") (identifier "sVar7")) (!= "!=") (identifier "puVar12")) () ")")) (; ";")) (} "}"))) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0x200;" (assignment_expression "local_28 = 0x200" (identifier "local_28") (= "=") (number_literal "0x200")) (; ";")) (expression_statement "local_38 = param_4;" (assignment_expression "local_38 = param_4" (identifier "local_38") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_e8 = (int *)param_1[2];" (assignment_expression "local_e8 = (int *)param_1[2]" (identifier "local_e8") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" (identifier "local_40") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_3c = extraout_EDX;" (assignment_expression "local_3c = extraout_EDX" (identifier "local_3c") (= "=") (identifier "extraout_EDX")) (; ";")) (if_statement "if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))\n        {\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" (if "if") (parenthesized_expression "((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))" (( "(") (binary_expression "(local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" (parenthesized_expression "(local_e8 != (int *)0x0)" (( "(") (binary_expression "local_e8 != (int *)0x0" (identifier "local_e8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0)" (( "(") (comma_expression "local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0" (assignment_expression "local_e8 = (int *)FUN_000318c0()" (identifier "local_e8") (= "=") (cast_expression "(int *)FUN_000318c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "local_e8 != (int *)0x0" (identifier "local_e8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n          cVar1 = '\0';\n          if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }\n          bVar26 = local_6e + cVar1;\n          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }\n          iVar10 = piVar8[0xe];\n          extraout_EDX[0xf] = -(uint)(iVar10 != 0);\n          piVar14 = (int *)(uint)bVar26;\n          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);\n          iVar10 = FUN_0002a330(piVar14);\n          if (param_3 == 5) {\n            local_4c = 1;\n          }\n          iVar29 = piVar8[2];\n          local_98 = piVar23;\n          if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }\n          iVar29 = param_1[0xb];\n          param_1[0xb] = iVar29 + 1;\n          *local_98 = iVar29 + 1;\n          if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }\n          if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }\n          bVar31 = iVar10 != 0;\n          FUN_0006dd90();\n          iVar29 = piVar8[0xe];\n          if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }\n          if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }\n          if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }\n        }" ({ "{") (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" (identifier "cVar1") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if ((int)*extraout_ECX < 1) {\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }\n          else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" (if "if") (parenthesized_expression "((int)*extraout_ECX < 1)" (( "(") (binary_expression "(int)*extraout_ECX < 1" (cast_expression "(int)*extraout_ECX" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX"))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            local_6e = '\0';\n            local_ac = -1;\n            local_b8 = 0;\n          }" ({ "{") (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" (identifier "local_6e") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" (identifier "local_ac") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" (else "else") (compound_statement "{\n            local_6e = '\0';\n            local_e4 = 0;\n            local_ac = -1;\n            local_b8 = 0;\n            local_d8 = extraout_ECX + 1;\n            do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);\n          }" ({ "{") (expression_statement "local_6e = '\0';" (assignment_expression "local_6e = '\0'" (identifier "local_6e") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_ac = -1;" (assignment_expression "local_ac = -1" (identifier "local_ac") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = extraout_ECX + 1;" (assignment_expression "local_d8 = extraout_ECX + 1" (identifier "local_d8") (= "=") (binary_expression "extraout_ECX + 1" (identifier "extraout_ECX") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            } while ((int)local_e4 < (int)*extraout_ECX);" (do "do") (compound_statement "{\n              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;\n              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);\n              uVar25 = local_d8[1];\n              if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }\nLAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }\n              iVar29 = -1;\n              cVar1 = '\x01';\n              local_b8 = *local_d8;\n              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n              local_ac = local_e4;\n              iVar15 = unaff_EDI + 0x18a8f;\nLAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);\n              if (iVar10 == 1) goto LAB_00091be9;\n              if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }\n              local_e4 = local_e4 + 1;\n              local_d8 = local_d8 + 4;\n            }" ({ "{") (if_statement "if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;" (if "if") (parenthesized_expression "((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0))" (( "(") (binary_expression "(local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" (( "(") (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";"))) (expression_statement "iVar10 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar10 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar10") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (expression_statement "uVar25 = local_d8[1];" (assignment_expression "uVar25 = local_d8[1]" (identifier "uVar25") (= "=") (subscript_expression "local_d8[1]" (identifier "local_d8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (0 < iVar10) {\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n                iVar29 = 0;\n                local_fc = (int *)piVar8[1];\nLAB_000918f0:\n                iVar15 = *local_fc;\n                iVar13 = 0;\n                do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );\n              }" ({ "{") (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" (identifier "iVar29") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_fc = (int *)piVar8[1];" (assignment_expression "local_fc = (int *)piVar8[1]" (identifier "local_fc") (= "=") (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (labeled_statement "LAB_000918f0:\n                iVar15 = *local_fc;" (statement_identifier "LAB_000918f0") (: ":") (expression_statement "iVar15 = *local_fc;" (assignment_expression "iVar15 = *local_fc" (identifier "iVar15") (= "=") (pointer_expression "*local_fc" (* "*") (identifier "local_fc"))) (; ";"))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                } while( true );" (do "do") (compound_statement "{\n                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);\n                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);\n                  if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;\n                  iVar13 = iVar13 + 1;\n                }" ({ "{") (expression_statement "uVar24 = (uint)*(byte *)(iVar15 + iVar13);" (assignment_expression "uVar24 = (uint)*(byte *)(iVar15 + iVar13)" (identifier "uVar24") (= "=") (binary_expression "(uint)*(byte *)(iVar15 + iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar15 + iVar13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar13)" (( "(") (binary_expression "iVar15 + iVar13" (identifier "iVar15") (+ "+") (identifier "iVar13")) () ")"))))) (; ";")) (expression_statement "uVar22 = (uint)*(byte *)(uVar25 + iVar13);" (assignment_expression "uVar22 = (uint)*(byte *)(uVar25 + iVar13)" (identifier "uVar22") (= "=") (binary_expression "(uint)*(byte *)(uVar25 + iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(uVar25 + iVar13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 + iVar13)" (( "(") (binary_expression "uVar25 + iVar13" (identifier "uVar25") (+ "+") (identifier "iVar13")) () ")"))))) (; ";")) (if_statement "if (uVar24 == uVar22) {\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }\n                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" (if "if") (parenthesized_expression "(uVar24 == uVar22)" (( "(") (binary_expression "uVar24 == uVar22" (identifier "uVar24") (== "==") (identifier "uVar22")) () ")")) (compound_statement "{\n                    if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }\n                  }" ({ "{") (if_statement "if (uVar24 == 0) {\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" (if "if") (parenthesized_expression "(uVar24 == 0)" (( "(") (binary_expression "uVar24 == 0" (identifier "uVar24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }\n                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);\n                      goto LAB_0009197f;\n                    }" ({ "{") (if_statement "if ((short)piVar8[10] == iVar29) {\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }\n                      else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" (if "if") (parenthesized_expression "((short)piVar8[10] == iVar29)" (( "(") (binary_expression "(short)piVar8[10] == iVar29" (cast_expression "(short)piVar8[10]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "piVar8[10]" (identifier "piVar8") ([ "[") (number_literal "10") (] "]"))) (== "==") (identifier "iVar29")) () ")")) (compound_statement "{\n                        cVar1 = '\x01';\n                        local_b8 = *local_d8;\n                        local_ac = local_e4;\nLAB_00091c26:\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) break;\n                      }" ({ "{") (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" (identifier "cVar1") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" (identifier "local_b8") (= "=") (pointer_expression "*local_d8" (* "*") (identifier "local_d8"))) (; ";")) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" (identifier "local_ac") (= "=") (identifier "local_e4")) (; ";")) (labeled_statement "LAB_00091c26:\n                        puVar11[iVar29] = local_e4;" (statement_identifier "LAB_00091c26") (: ":") (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" (identifier "puVar11") ([ "[") (identifier "iVar29") (] "]")) (= "=") (identifier "local_e4")) (; ";"))) (if_statement "if (iVar10 <= iVar29) break;" (if "if") (parenthesized_expression "(iVar10 <= iVar29)" (( "(") (binary_expression "iVar10 <= iVar29" (identifier "iVar10") (<= "<=") (identifier "iVar29")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" (else "else") (compound_statement "{\n                        uVar2 = *(ushort *)(local_fc + 4);\n                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }\n                        puVar11[iVar29] = local_e4;\n                        if (iVar10 <= iVar29) goto LAB_00092075;\n                        local_6e = '\x01';\n                      }" ({ "{") (expression_statement "uVar2 = *(ushort *)(local_fc + 4);" (assignment_expression "uVar2 = *(ushort *)(local_fc + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)(local_fc + 4)" (* "*") (cast_expression "(ushort *)(local_fc + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_fc + 4)" (( "(") (binary_expression "local_fc + 4" (identifier "local_fc") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" (if "if") (parenthesized_expression "((local_e0 == 0) || ((uVar2 & 1) == 0))" (( "(") (binary_expression "(local_e0 == 0) || ((uVar2 & 1) == 0)" (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uVar2 & 1) == 0)" (( "(") (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" (( "(") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;\n                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);\n                          goto LAB_00091be9;\n                        }" ({ "{") (if_statement "if ((uVar2 & 0x60) == 0) goto LAB_00091c26;" (if "if") (parenthesized_expression "((uVar2 & 0x60) == 0)" (( "(") (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" (( "(") (binary_expression "uVar2 & 0x60" (identifier "uVar2") (& "&") (number_literal "0x60")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091c26;" (goto "goto") (statement_identifier "LAB_00091c26") (; ";"))) (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" (identifier "FUN_0003c160") (argument_list "(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2)" (( "(") (identifier "param_1") (, ",") (binary_expression "unaff_EDI + 0x1c67d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1c67d")) (, ",") (identifier "iVar15") (, ",") (identifier "uVar2") () ")"))) (; ";")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";")) (} "}"))) (expression_statement "puVar11[iVar29] = local_e4;" (assignment_expression "puVar11[iVar29] = local_e4" (subscript_expression "puVar11[iVar29]" (identifier "puVar11") ([ "[") (identifier "iVar29") (] "]")) (= "=") (identifier "local_e4")) (; ";")) (if_statement "if (iVar10 <= iVar29) goto LAB_00092075;" (if "if") (parenthesized_expression "(iVar10 <= iVar29)" (( "(") (binary_expression "iVar10 <= iVar29" (identifier "iVar10") (<= "<=") (identifier "iVar29")) () ")")) (goto_statement "goto LAB_00092075;" (goto "goto") (statement_identifier "LAB_00092075") (; ";"))) (expression_statement "local_6e = '\x01';" (assignment_expression "local_6e = '\x01'" (identifier "local_6e") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}")))) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (identifier "uVar34") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (( "(") (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" (* "*") (cast_expression "(int *)(iVar27 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x10)" (( "(") (binary_expression "iVar27 + 0x10" (identifier "iVar27") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "local_d4 * 0x10" (identifier "local_d4") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (goto_statement "goto LAB_0009197f;" (goto "goto") (statement_identifier "LAB_0009197f") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" (else "else") (if_statement "if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22))" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24) !=\n                           *(char *)(unaff_EDI + 0x23b65 + uVar22)" (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar24)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar24)" (( "(") (binary_expression "unaff_EDI + 0x23b65 + uVar24" (binary_expression "unaff_EDI + 0x23b65" (identifier "unaff_EDI") (+ "+") (number_literal "0x23b65")) (+ "+") (identifier "uVar24")) () ")")))) (!= "!=") (pointer_expression "*(char *)(unaff_EDI + 0x23b65 + uVar22)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x23b65 + uVar22)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x23b65 + uVar22)" (( "(") (binary_expression "unaff_EDI + 0x23b65 + uVar22" (binary_expression "unaff_EDI + 0x23b65" (identifier "unaff_EDI") (+ "+") (number_literal "0x23b65")) (+ "+") (identifier "uVar22")) () ")"))))) () ")")) (goto_statement "goto LAB_00091b70;" (goto "goto") (statement_identifier "LAB_00091b70") (; ";"))))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00091b82:\n              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" (statement_identifier "LAB_00091b82") (: ":") (if_statement "if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" (if "if") (parenthesized_expression "((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0))" (( "(") (binary_expression "(local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)" (parenthesized_expression "(local_e0 != 0)" (( "(") (binary_expression "local_e0 != 0" (identifier "local_e0") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar10 = FUN_00029a00(), iVar10 == 0)" (( "(") (comma_expression "iVar10 = FUN_00029a00(), iVar10 == 0" (assignment_expression "iVar10 = FUN_00029a00()" (identifier "iVar10") (= "=") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);\n                *(undefined1 *)((int)param_1 + 0x11) = 1;\n                goto LAB_00091be9;\n              }" ({ "{") (labeled_statement "LAB_00092075:\n                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" (statement_identifier "LAB_00092075") (: ":") (expression_statement "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);" (call_expression "FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25)" (identifier "FUN_0003c160") (argument_list "(param_1,unaff_EDI + 0x199ec,uVar25)" (( "(") (identifier "param_1") (, ",") (binary_expression "unaff_EDI + 0x199ec" (identifier "unaff_EDI") (+ "+") (number_literal "0x199ec")) (, ",") (identifier "uVar25") () ")"))) (; ";"))) (expression_statement "*(undefined1 *)((int)param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x11)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x11)" (( "(") (binary_expression "(int)param_1 + 0x11" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";")) (} "}")))) (expression_statement "iVar29 = -1;" (assignment_expression "iVar29 = -1" (identifier "iVar29") (= "=") (number_literal "-1")) (; ";")) (expression_statement "cVar1 = '\x01';" (assignment_expression "cVar1 = '\x01'" (identifier "cVar1") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "local_b8 = *local_d8;" (assignment_expression "local_b8 = *local_d8" (identifier "local_b8") (= "=") (pointer_expression "*local_d8" (* "*") (identifier "local_d8"))) (; ";")) (expression_statement "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);" (assignment_expression "uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (identifier "uVar34") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar27 + 0x10) + local_d4 * 0x10)" (( "(") (binary_expression "*(int *)(iVar27 + 0x10) + local_d4 * 0x10" (pointer_expression "*(int *)(iVar27 + 0x10)" (* "*") (cast_expression "(int *)(iVar27 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x10)" (( "(") (binary_expression "iVar27 + 0x10" (identifier "iVar27") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "local_d4 * 0x10" (identifier "local_d4") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (expression_statement "local_ac = local_e4;" (assignment_expression "local_ac = local_e4" (identifier "local_ac") (= "=") (identifier "local_e4")) (; ";")) (expression_statement "iVar15 = unaff_EDI + 0x18a8f;" (assignment_expression "iVar15 = unaff_EDI + 0x18a8f" (identifier "iVar15") (= "=") (binary_expression "unaff_EDI + 0x18a8f" (identifier "unaff_EDI") (+ "+") (number_literal "0x18a8f"))) (; ";")) (labeled_statement "LAB_0009197f:\n              iVar10 = FUN_0003c520(iVar15,uVar34);" (statement_identifier "LAB_0009197f") (: ":") (expression_statement "iVar10 = FUN_0003c520(iVar15,uVar34);" (assignment_expression "iVar10 = FUN_0003c520(iVar15,uVar34)" (identifier "iVar10") (= "=") (call_expression "FUN_0003c520(iVar15,uVar34)" (identifier "FUN_0003c520") (argument_list "(iVar15,uVar34)" (( "(") (identifier "iVar15") (, ",") (identifier "uVar34") () ")")))) (; ";"))) (if_statement "if (iVar10 == 1) goto LAB_00091be9;" (if "if") (parenthesized_expression "(iVar10 == 1)" (( "(") (binary_expression "iVar10 == 1" (identifier "iVar10") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";"))) (if_statement "if (iVar10 == 2) {\n                puVar11[iVar29] = 0xffffffff;\n              }" (if "if") (parenthesized_expression "(iVar10 == 2)" (( "(") (binary_expression "iVar10 == 2" (identifier "iVar10") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                puVar11[iVar29] = 0xffffffff;\n              }" ({ "{") (expression_statement "puVar11[iVar29] = 0xffffffff;" (assignment_expression "puVar11[iVar29] = 0xffffffff" (subscript_expression "puVar11[iVar29]" (identifier "puVar11") ([ "[") (identifier "iVar29") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" (identifier "local_e4") (= "=") (binary_expression "local_e4 + 1" (identifier "local_e4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_d8 = local_d8 + 4;" (assignment_expression "local_d8 = local_d8 + 4" (identifier "local_d8") (= "=") (binary_expression "local_d8 + 4" (identifier "local_d8") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)local_e4 < (int)*extraout_ECX)" (( "(") (binary_expression "(int)local_e4 < (int)*extraout_ECX" (cast_expression "(int)local_e4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e4")) (< "<") (cast_expression "(int)*extraout_ECX" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")))) () ")")) (; ";")) (} "}")))) (expression_statement "bVar26 = local_6e + cVar1;" (assignment_expression "bVar26 = local_6e + cVar1" (identifier "bVar26") (= "=") (binary_expression "local_6e + cVar1" (identifier "local_6e") (+ "+") (identifier "cVar1"))) (; ";")) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" (if "if") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);\n          }" ({ "{") (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (do_statement "do {\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            } while (bVar31);" (do "do") (compound_statement "{\n              if (sVar7 < 1) break;\n              bVar31 = false;\n              iVar10 = 0;\n              do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);\n            }" ({ "{") (if_statement "if (sVar7 < 1) break;" (if "if") (parenthesized_expression "(sVar7 < 1)" (( "(") (binary_expression "sVar7 < 1" (identifier "sVar7") (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" (identifier "bVar31") (= "=") (false "false")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              } while (iVar10 < sVar7);" (do "do") (compound_statement "{\n                if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }\n                iVar10 = iVar10 + 1;\n              }" ({ "{") (if_statement "if (((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" (if "if") (parenthesized_expression "(((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0))" (( "(") (binary_expression "((int)puVar11[iVar10] < 0) &&\n                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" (parenthesized_expression "((int)puVar11[iVar10] < 0)" (( "(") (binary_expression "(int)puVar11[iVar10] < 0" (cast_expression "(int)puVar11[iVar10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar11[iVar10]" (identifier "puVar11") ([ "[") (identifier "iVar10") (] "]"))) (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)" (( "(") (binary_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60)" (( "(") (binary_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60" (pointer_expression "*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" (* "*") (cast_expression "(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8[1] + iVar10 * 0x14 + 0x10)" (( "(") (binary_expression "piVar8[1] + iVar10 * 0x14 + 0x10" (binary_expression "piVar8[1] + iVar10 * 0x14" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar10 * 0x14" (identifier "iVar10") (* "*") (number_literal "0x14"))) (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                  iVar29 = FUN_00028fd0();\n                  if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }\n                  sVar7 = *(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (expression_statement "iVar29 = FUN_00028fd0();" (assignment_expression "iVar29 = FUN_00028fd0()" (identifier "iVar29") (= "=") (call_expression "FUN_00028fd0()" (identifier "FUN_00028fd0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar29 != 0) {\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" (if "if") (parenthesized_expression "(iVar29 != 0)" (( "(") (binary_expression "iVar29 != 0" (identifier "iVar29") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    puVar11[iVar10] = 99999;\n                    bVar31 = true;\n                  }" ({ "{") (expression_statement "puVar11[iVar10] = 99999;" (assignment_expression "puVar11[iVar10] = 99999" (subscript_expression "puVar11[iVar10]" (identifier "puVar11") ([ "[") (identifier "iVar10") (] "]")) (= "=") (number_literal "99999")) (; ";")) (expression_statement "bVar31 = true;" (assignment_expression "bVar31 = true" (identifier "bVar31") (= "=") (true "true")) (; ";")) (} "}"))) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 < sVar7)" (( "(") (binary_expression "iVar10 < sVar7" (identifier "iVar10") (< "<") (identifier "sVar7")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (; ";")) (} "}"))) (expression_statement "iVar10 = piVar8[0xe];" (assignment_expression "iVar10 = piVar8[0xe]" (identifier "iVar10") (= "=") (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "extraout_EDX[0xf] = -(uint)(iVar10 != 0);" (assignment_expression "extraout_EDX[0xf] = -(uint)(iVar10 != 0)" (subscript_expression "extraout_EDX[0xf]" (identifier "extraout_EDX") ([ "[") (number_literal "0xf") (] "]")) (= "=") (unary_expression "-(uint)(iVar10 != 0)" (- "-") (call_expression "(uint)(iVar10 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "piVar14 = (int *)(uint)bVar26;" (assignment_expression "piVar14 = (int *)(uint)bVar26" (identifier "piVar14") (= "=") (cast_expression "(int *)(uint)bVar26" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar26" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar26")))) (; ";")) (expression_statement "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);" (assignment_expression "extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0)" (subscript_expression "extraout_EDX[0x10]" (identifier "extraout_EDX") ([ "[") (number_literal "0x10") (] "]")) (= "=") (unary_expression "-(uint)((iVar10 != 0) != 0)" (- "-") (call_expression "(uint)((iVar10 != 0) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((iVar10 != 0) != 0)" (( "(") (binary_expression "(iVar10 != 0) != 0" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "iVar10 = FUN_0002a330(piVar14);" (assignment_expression "iVar10 = FUN_0002a330(piVar14)" (identifier "iVar10") (= "=") (call_expression "FUN_0002a330(piVar14)" (identifier "FUN_0002a330") (argument_list "(piVar14)" (( "(") (identifier "piVar14") () ")")))) (; ";")) (if_statement "if (param_3 == 5) {\n            local_4c = 1;\n          }" (if "if") (parenthesized_expression "(param_3 == 5)" (( "(") (binary_expression "param_3 == 5" (identifier "param_3") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n            local_4c = 1;\n          }" ({ "{") (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar29 = piVar8[2];" (assignment_expression "iVar29 = piVar8[2]" (identifier "iVar29") (= "=") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_98 = piVar23;" (assignment_expression "local_98 = piVar23" (identifier "local_98") (= "=") (identifier "piVar23")) (; ";")) (if_statement "if (iVar29 != 0) {\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" (if "if") (parenthesized_expression "(iVar29 != 0)" (( "(") (binary_expression "iVar29 != 0" (identifier "iVar29") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            local_fc = (int *)0x0;\n            do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);\n            local_98 = piVar23 + (int)local_fc;\n          }" ({ "{") (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" (identifier "local_fc") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            } while (iVar29 != 0);" (do "do") (compound_statement "{\n              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }\n              iVar29 = *(int *)(iVar29 + 0x14);\n              piVar23[(int)local_fc] = iVar15;\n              local_fc = (int *)((int)local_fc + 1);\n            }" ({ "{") (if_statement "if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }\n              else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" (if "if") (parenthesized_expression "(((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))))" (( "(") (binary_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||\n                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" (parenthesized_expression "((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0))" (( "(") (binary_expression "(local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)" (parenthesized_expression "(local_e0 == iVar29)" (( "(") (binary_expression "local_e0 == iVar29" (identifier "local_e0") (== "==") (identifier "iVar29")) () ")")) (|| "||") (parenthesized_expression "(1 < iVar10 || bVar26 != 0)" (( "(") (binary_expression "1 < iVar10 || bVar26 != 0" (binary_expression "1 < iVar10" (number_literal "1") (< "<") (identifier "iVar10")) (|| "||") (binary_expression "bVar26 != 0" (identifier "bVar26") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))" (( "(") (parenthesized_expression "(*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0))" (( "(") (binary_expression "*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)" (binary_expression "*(int *)(iVar29 + 0x24) != 0" (pointer_expression "*(int *)(iVar29 + 0x24)" (* "*") (cast_expression "(int *)(iVar29 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x24)" (( "(") (binary_expression "iVar29 + 0x24" (identifier "iVar29") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar15 = FUN_00028fd0(), iVar15 != 0)" (( "(") (comma_expression "iVar15 = FUN_00028fd0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00028fd0()" (identifier "iVar15") (= "=") (call_expression "FUN_00028fd0()" (identifier "FUN_00028fd0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                iVar15 = param_1[0xb] + 1;\n                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\nLAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;\n              }" ({ "{") (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" (identifier "iVar15") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar29 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x34)" (( "(") (binary_expression "iVar29 + 0x34" (identifier "iVar29") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (identifier "iVar15"))) (; ";")) (labeled_statement "LAB_00091b52:\n                if (iVar15 == 0) goto LAB_00091b56;" (statement_identifier "LAB_00091b52") (: ":") (if_statement "if (iVar15 == 0) goto LAB_00091b56;" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091b56;" (goto "goto") (statement_identifier "LAB_00091b56") (; ";")))) (} "}")) (else_clause "else {\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" (else "else") (compound_statement "{\n                iVar15 = 0;\n                if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }\nLAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;\n                iVar15 = 0;\n              }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(short *)(iVar29 + 0x32) != 0) {\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" (if "if") (parenthesized_expression "(*(short *)(iVar29 + 0x32) != 0)" (( "(") (binary_expression "*(short *)(iVar29 + 0x32) != 0" (pointer_expression "*(short *)(iVar29 + 0x32)" (* "*") (cast_expression "(short *)(iVar29 + 0x32)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x32)" (( "(") (binary_expression "iVar29 + 0x32" (identifier "iVar29") (+ "+") (number_literal "0x32")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));\n                }" ({ "{") (do_statement "do {\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));" (do "do") (compound_statement "{\n                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);\n                    if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }\n                    if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }\n                    iVar15 = iVar15 + 1;\n                  }" ({ "{") (expression_statement "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);" (assignment_expression "sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" (* "*") (cast_expression "(short *)(*(int *)(iVar29 + 4) + iVar15 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar29 + 4) + iVar15 * 2)" (( "(") (binary_expression "*(int *)(iVar29 + 4) + iVar15 * 2" (pointer_expression "*(int *)(iVar29 + 4)" (* "*") (cast_expression "(int *)(iVar29 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 4)" (( "(") (binary_expression "iVar29 + 4" (identifier "iVar29") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar15 * 2" (identifier "iVar15") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (sVar7 < 0) {\n                      uVar25 = FUN_00028fd0();\n                    }\n                    else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" (if "if") (parenthesized_expression "(sVar7 < 0)" (( "(") (binary_expression "sVar7 < 0" (identifier "sVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      uVar25 = FUN_00028fd0();\n                    }" ({ "{") (expression_statement "uVar25 = FUN_00028fd0();" (assignment_expression "uVar25 = FUN_00028fd0()" (identifier "uVar25") (= "=") (call_expression "FUN_00028fd0()" (identifier "FUN_00028fd0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" (else "else") (compound_statement "{\n                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;\n                    }" ({ "{") (expression_statement "uVar25 = (uint)~puVar11[sVar7] >> 0x1f;" (assignment_expression "uVar25 = (uint)~puVar11[sVar7] >> 0x1f" (identifier "uVar25") (= "=") (binary_expression "(uint)~puVar11[sVar7] >> 0x1f" (cast_expression "(uint)~puVar11[sVar7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (unary_expression "~puVar11[sVar7]" (~ "~") (subscript_expression "puVar11[sVar7]" (identifier "puVar11") ([ "[") (identifier "sVar7") (] "]")))) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")))) (if_statement "if (uVar25 != 0) {\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" (if "if") (parenthesized_expression "(uVar25 != 0)" (( "(") (binary_expression "uVar25 != 0" (identifier "uVar25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar15 = param_1[0xb] + 1;\n                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;\n                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }\n                      goto LAB_00091b52;\n                    }" ({ "{") (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" (identifier "iVar15") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;" (assignment_expression "param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "(uint)*(ushort *)(iVar29 + 0x34) + iVar15" (binary_expression "(uint)*(ushort *)(iVar29 + 0x34)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar29 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x34)" (( "(") (binary_expression "iVar29 + 0x34" (identifier "iVar29") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (identifier "iVar15"))) (; ";")) (if_statement "if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {\n                        local_4c = 1;\n                      }" (if "if") (parenthesized_expression "((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05'))" (( "(") (binary_expression "(param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')" (parenthesized_expression "(param_3 == 0xb)" (( "(") (binary_expression "param_3 == 0xb" (identifier "param_3") (== "==") (number_literal "0xb")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar29 + 0x36) == '\x05')" (( "(") (binary_expression "*(char *)(iVar29 + 0x36) == '\x05'" (pointer_expression "*(char *)(iVar29 + 0x36)" (* "*") (cast_expression "(char *)(iVar29 + 0x36)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x36)" (( "(") (binary_expression "iVar29 + 0x36" (identifier "iVar29") (+ "+") (number_literal "0x36")) () ")")))) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                        local_4c = 1;\n                      }" ({ "{") (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (} "}"))) (goto_statement "goto LAB_00091b52;" (goto "goto") (statement_identifier "LAB_00091b52") (; ";")) (} "}"))) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32))" (( "(") (binary_expression "iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32)" (identifier "iVar15") (< "<") (binary_expression "(int)(uint)*(ushort *)(iVar29 + 0x32)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(iVar29 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x32)" (( "(") (binary_expression "iVar29 + 0x32" (identifier "iVar29") (+ "+") (number_literal "0x32")) () ")"))))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00091b56:\n                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" (statement_identifier "LAB_00091b56") (: ":") (expression_statement "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + (int)local_fc + 1)" (* "*") (cast_expression "(undefined1 *)((int)piVar18 + (int)local_fc + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar18 + (int)local_fc + 1)" (( "(") (binary_expression "(int)piVar18 + (int)local_fc + 1" (binary_expression "(int)piVar18 + (int)local_fc" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (+ "+") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "iVar29 = *(int *)(iVar29 + 0x14);" (assignment_expression "iVar29 = *(int *)(iVar29 + 0x14)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(iVar29 + 0x14)" (* "*") (cast_expression "(int *)(iVar29 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x14)" (( "(") (binary_expression "iVar29 + 0x14" (identifier "iVar29") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar23[(int)local_fc] = iVar15;" (assignment_expression "piVar23[(int)local_fc] = iVar15" (subscript_expression "piVar23[(int)local_fc]" (identifier "piVar23") ([ "[") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc")) (] "]")) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "local_fc = (int *)((int)local_fc + 1);" (assignment_expression "local_fc = (int *)((int)local_fc + 1)" (identifier "local_fc") (= "=") (cast_expression "(int *)((int)local_fc + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_fc + 1)" (( "(") (binary_expression "(int)local_fc + 1" (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar29 != 0)" (( "(") (binary_expression "iVar29 != 0" (identifier "iVar29") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_98 = piVar23 + (int)local_fc;" (assignment_expression "local_98 = piVar23 + (int)local_fc" (identifier "local_98") (= "=") (binary_expression "piVar23 + (int)local_fc" (identifier "piVar23") (+ "+") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc")))) (; ";")) (} "}"))) (expression_statement "iVar29 = param_1[0xb];" (assignment_expression "iVar29 = param_1[0xb]" (identifier "iVar29") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "param_1[0xb] = iVar29 + 1;" (assignment_expression "param_1[0xb] = iVar29 + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_98 = iVar29 + 1;" (assignment_expression "*local_98 = iVar29 + 1" (pointer_expression "*local_98" (* "*") (identifier "local_98")) (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_4c != 0) {\n            memset(piVar18,1,__n);\n          }" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            memset(piVar18,1,__n);\n          }" ({ "{") (expression_statement "memset(piVar18,1,__n);" (call_expression "memset(piVar18,1,__n)" (identifier "memset") (argument_list "(piVar18,1,__n)" (( "(") (identifier "piVar18") (, ",") (number_literal "1") (, ",") (identifier "__n") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)param_1 + 0x12) == '\0') {\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" (* "*") (cast_expression "(char *)((int)param_1 + 0x12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x12)" (( "(") (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x12")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;\n          }" ({ "{") (expression_statement "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;" (assignment_expression "*(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" (* "*") (cast_expression "(byte *)((int)local_e8 + 0x8e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_e8 + 0x8e)" (( "(") (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e8")) (+ "+") (number_literal "0x8e")) () ")")))) (= "=") (binary_expression "*(byte *)((int)local_e8 + 0x8e) | 0x10" (pointer_expression "*(byte *)((int)local_e8 + 0x8e)" (* "*") (cast_expression "(byte *)((int)local_e8 + 0x8e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_e8 + 0x8e)" (( "(") (binary_expression "(int)local_e8 + 0x8e" (cast_expression "(int)local_e8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e8")) (+ "+") (number_literal "0x8e")) () ")")))) (| "|") (number_literal "0x10"))) (; ";")) (} "}"))) (expression_statement "bVar31 = iVar10 != 0;" (assignment_expression "bVar31 = iVar10 != 0" (identifier "bVar31") (= "=") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" (identifier "FUN_0006dd90") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" (identifier "iVar29") (= "=") (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (if_statement "if (iVar29 == 0) {\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }\n          else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" (if "if") (parenthesized_expression "(iVar29 == 0)" (( "(") (binary_expression "iVar29 == 0" (identifier "iVar29") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            local_84 = *local_98;\n            local_74 = param_1[0xb];\n            local_fc = (int *)(local_74 + 1);\n            param_1[0xb] = (int)local_fc;\n            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }\n            local_94 = param_1[0xb] + 1;\n            uVar25 = param_1[0xb] + (int)piVar30;\n            param_1[0xb] = uVar25;\n          }" ({ "{") (expression_statement "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar30") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (expression_statement "local_84 = *local_98;" (assignment_expression "local_84 = *local_98" (identifier "local_84") (= "=") (pointer_expression "*local_98" (* "*") (identifier "local_98"))) (; ";")) (expression_statement "local_74 = param_1[0xb];" (assignment_expression "local_74 = param_1[0xb]" (identifier "local_74") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "local_fc = (int *)(local_74 + 1);" (assignment_expression "local_fc = (int *)(local_74 + 1)" (identifier "local_fc") (= "=") (cast_expression "(int *)(local_74 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_74 + 1)" (( "(") (binary_expression "local_74 + 1" (identifier "local_74") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_1[0xb] = (int)local_fc;" (assignment_expression "param_1[0xb] = (int)local_fc" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc"))) (; ";")) (if_statement "if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }\n            else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" (if "if") (parenthesized_expression "((iVar9 != 0 || local_6e != '\0') || (bVar31))" (( "(") (binary_expression "(iVar9 != 0 || local_6e != '\0') || (bVar31)" (parenthesized_expression "(iVar9 != 0 || local_6e != '\0')" (( "(") (binary_expression "iVar9 != 0 || local_6e != '\0'" (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_6e != '\0'" (identifier "local_6e") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (|| "||") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")"))) () ")")) (compound_statement "{\n              local_74 = local_74 + 2;\n              param_1[0xb] = (int)local_fc + (int)piVar30;\n              if (!bVar31) goto joined_r0x00091d94;\nLAB_00091d96:\n              local_d4 = param_1[0xb] + 1;\n              param_1[0xb] = local_d4;\n            }" ({ "{") (expression_statement "local_74 = local_74 + 2;" (assignment_expression "local_74 = local_74 + 2" (identifier "local_74") (= "=") (binary_expression "local_74 + 2" (identifier "local_74") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "param_1[0xb] = (int)local_fc + (int)piVar30;" (assignment_expression "param_1[0xb] = (int)local_fc + (int)piVar30" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "(int)local_fc + (int)piVar30" (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc")) (+ "+") (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")))) (; ";")) (if_statement "if (!bVar31) goto joined_r0x00091d94;" (if "if") (parenthesized_expression "(!bVar31)" (( "(") (unary_expression "!bVar31" (! "!") (identifier "bVar31")) () ")")) (goto_statement "goto joined_r0x00091d94;" (goto "goto") (statement_identifier "joined_r0x00091d94") (; ";"))) (labeled_statement "LAB_00091d96:\n              local_d4 = param_1[0xb] + 1;" (statement_identifier "LAB_00091d96") (: ":") (expression_statement "local_d4 = param_1[0xb] + 1;" (assignment_expression "local_d4 = param_1[0xb] + 1" (identifier "local_d4") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_1[0xb] = local_d4;" (assignment_expression "param_1[0xb] = local_d4" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_d4")) (; ";")) (} "}")) (else_clause "else {\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" (else "else") (compound_statement "{\n              local_74 = 0;\njoined_r0x00091d94:\n              local_d4 = (int)local_fc;\n              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;\n            }" ({ "{") (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (labeled_statement "joined_r0x00091d94:\n              local_d4 = (int)local_fc;" (statement_identifier "joined_r0x00091d94") (: ":") (expression_statement "local_d4 = (int)local_fc;" (assignment_expression "local_d4 = (int)local_fc" (identifier "local_d4") (= "=") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc"))) (; ";"))) (if_statement "if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;" (if "if") (parenthesized_expression "(bVar26 != 0 || iVar9 != 0)" (( "(") (binary_expression "bVar26 != 0 || iVar9 != 0" (binary_expression "bVar26 != 0" (identifier "bVar26") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00091d96;" (goto "goto") (statement_identifier "LAB_00091d96") (; ";"))) (} "}")))) (expression_statement "local_94 = param_1[0xb] + 1;" (assignment_expression "local_94 = param_1[0xb] + 1" (identifier "local_94") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar25 = param_1[0xb] + (int)piVar30;" (assignment_expression "uVar25 = param_1[0xb] + (int)piVar30" (identifier "uVar25") (= "=") (binary_expression "param_1[0xb] + (int)piVar30" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")))) (; ";")) (expression_statement "param_1[0xb] = uVar25;" (assignment_expression "param_1[0xb] = uVar25" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "uVar25")) (; ";")) (} "}")) (else_clause "else {\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" (else "else") (compound_statement "{\n            local_84 = 0;\n            local_74 = 0;\n            local_94 = 0;\n            local_d4 = 0;\n            local_fc = (int *)0x0;\n            uVar25 = extraout_EDX_00;\n            piVar30 = piVar8;\n          }" ({ "{") (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" (identifier "local_d4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_fc = (int *)0x0;" (assignment_expression "local_fc = (int *)0x0" (identifier "local_fc") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar25 = extraout_EDX_00;" (assignment_expression "uVar25 = extraout_EDX_00" (identifier "uVar25") (= "=") (identifier "extraout_EDX_00")) (; ";")) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" (identifier "piVar30") (= "=") (identifier "piVar8")) (; ";")) (} "}")))) (if_statement "if (piVar20 == (int *)0x0) {\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }\n          else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            if (local_100 == 0) goto LAB_00091e0a;\n            bVar5 = false;\n            iVar15 = 0;\n          }" ({ "{") (if_statement "if (local_100 == 0) goto LAB_00091e0a;" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091e0a;" (goto "goto") (statement_identifier "LAB_00091e0a") (; ";"))) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" (else "else") (compound_statement "{\n            iVar15 = param_1[0x3d];\n            bVar5 = false;\n            param_1[0x3d] = *piVar8;\n            uVar25 = local_100;\n            piVar30 = piVar8;\n            local_48 = iVar15;\n            local_44 = param_1;\n            if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }\n          }" ({ "{") (expression_statement "iVar15 = param_1[0x3d];" (assignment_expression "iVar15 = param_1[0x3d]" (identifier "iVar15") (= "=") (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]"))) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "param_1[0x3d] = *piVar8;" (assignment_expression "param_1[0x3d] = *piVar8" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "uVar25 = local_100;" (assignment_expression "uVar25 = local_100" (identifier "uVar25") (= "=") (identifier "local_100")) (; ";")) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" (identifier "piVar30") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "local_48 = iVar15;" (assignment_expression "local_48 = iVar15" (identifier "local_48") (= "=") (identifier "iVar15")) (; ";")) (expression_statement "local_44 = param_1;" (assignment_expression "local_44 = param_1" (identifier "local_44") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (local_100 == 0) {\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00083b40(param_2,local_dc,iVar29,iVar29);\nLAB_00091e0a:\n              uVar32 = FUN_0003c9d0();\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              if ((int)uVar32 != 0) goto LAB_00091be9;\n              bVar5 = true;\n              iVar29 = piVar8[0xe];\n              iVar15 = extraout_ECX_00;\n            }" ({ "{") (expression_statement "FUN_00083b40(param_2,local_dc,iVar29,iVar29);" (call_expression "FUN_00083b40(param_2,local_dc,iVar29,iVar29)" (identifier "FUN_00083b40") (argument_list "(param_2,local_dc,iVar29,iVar29)" (( "(") (identifier "param_2") (, ",") (identifier "local_dc") (, ",") (identifier "iVar29") (, ",") (identifier "iVar29") () ")"))) (; ";")) (labeled_statement "LAB_00091e0a:\n              uVar32 = FUN_0003c9d0();" (statement_identifier "LAB_00091e0a") (: ":") (expression_statement "uVar32 = FUN_0003c9d0();" (assignment_expression "uVar32 = FUN_0003c9d0()" (identifier "uVar32") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" (identifier "uVar25") (= "=") (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((int)uVar32 != 0) goto LAB_00091be9;" (if "if") (parenthesized_expression "((int)uVar32 != 0)" (( "(") (binary_expression "(int)uVar32 != 0" (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";"))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (expression_statement "iVar29 = piVar8[0xe];" (assignment_expression "iVar29 = piVar8[0xe]" (identifier "iVar29") (= "=") (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_00;" (assignment_expression "iVar15 = extraout_ECX_00" (identifier "iVar15") (= "=") (identifier "extraout_ECX_00")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar29 == 0) {\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }\n          else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" (if "if") (parenthesized_expression "(iVar29 == 0)" (( "(") (binary_expression "iVar29 == 0" (identifier "iVar29") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            local_9c = 0;\n            iVar29 = param_1[0xe] + -1;\n            param_1[0xe] = iVar29;\n            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }\n            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }\nLAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }\n            piVar30 = piVar8;\n            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);\n            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n            piVar16 = piVar8;\n            if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }\n            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }\n            if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }\n            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);\n            if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }\n            FUN_00031430();\n            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }\n            if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }\n          }" ({ "{") (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar29 = param_1[0xe] + -1;" (assignment_expression "iVar29 = param_1[0xe] + -1" (identifier "iVar29") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xe] = iVar29;" (assignment_expression "param_1[0xe] = iVar29" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar29")) (; ";")) (if_statement "if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" (if "if") (parenthesized_expression "(((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0))" (( "(") (binary_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)" (parenthesized_expression "((*(byte *)(iVar27 + 0x20) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar27 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar27 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(iVar27 + 0x20) & 1" (pointer_expression "*(byte *)(iVar27 + 0x20)" (* "*") (cast_expression "(byte *)(iVar27 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x20)" (( "(") (binary_expression "iVar27 + 0x20" (identifier "iVar27") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_9c = 0, param_1[0x1e] == 0)" (( "(") (comma_expression "local_9c = 0, param_1[0x1e] == 0" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (, ",") (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }\n            }" ({ "{") (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }\n              else {\n                local_9c = 0;\n              }" (if "if") (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0))" (( "(") (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" (* "*") (cast_expression "(char *)((int)param_1 + 0x12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x12)" (( "(") (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x12")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(param_4 == (int *)0x0)" (( "(") (binary_expression "param_4 == (int *)0x0" (identifier "param_4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n                local_9c = param_1[0xb] + 1;\n                param_1[0xb] = local_9c;\n                FUN_000315c0(local_9c,0,piVar30,piVar30);\n                iVar15 = extraout_ECX_10;\n                uVar25 = extraout_EDX_06;\n              }" ({ "{") (expression_statement "local_9c = param_1[0xb] + 1;" (assignment_expression "local_9c = param_1[0xb] + 1" (identifier "local_9c") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = local_9c;" (assignment_expression "param_1[0xb] = local_9c" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "FUN_000315c0(local_9c,0,piVar30,piVar30);" (call_expression "FUN_000315c0(local_9c,0,piVar30,piVar30)" (identifier "FUN_000315c0") (argument_list "(local_9c,0,piVar30,piVar30)" (( "(") (identifier "local_9c") (, ",") (number_literal "0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_10;" (assignment_expression "iVar15 = extraout_ECX_10" (identifier "iVar15") (= "=") (identifier "extraout_ECX_10")) (; ";")) (expression_statement "uVar25 = extraout_EDX_06;" (assignment_expression "uVar25 = extraout_EDX_06" (identifier "uVar25") (= "=") (identifier "extraout_EDX_06")) (; ";")) (} "}")) (else_clause "else {\n                local_9c = 0;\n              }" (else "else") (compound_statement "{\n                local_9c = 0;\n              }" ({ "{") (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }\n            else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" (if "if") (parenthesized_expression "((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0))" (( "(") (binary_expression "(local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)" (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              iVar27 = 0;\n              FUN_000315c0(local_84,local_fc,iVar15,iVar15);\n              local_8c = 0;\n              if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }\n              local_f0 = 0;\n              local_a4 = 0;\nLAB_00093044:\n              uVar34 = 0x1004;\n              if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }\n              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);\n              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);\n              iVar15 = (int)uVar32;\n              if (iVar15 == 0) goto LAB_00091be9;\n              local_64 = *(int **)(iVar15 + 0x14);\n              local_78 = *(int **)(iVar15 + 0x18);\n              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);\n              bVar6 = *(byte *)(iVar15 + 0x30) & 1;\n              piVar30 = (int *)(local_e4 - 1);\n              iVar15 = extraout_ECX_11;\n              iVar13 = iVar27;\n              if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }\n              piVar17 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }\n              *(undefined1 *)(piVar17 + 5) = 1;\n              uVar22 = piVar8[9];\n              uVar25 = uVar22 & 0x80;\n              if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }\n              if (uVar25 != 0) goto LAB_00091f32;\n              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);\n              iVar15 = extraout_ECX_12;\n              if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }\n              local_c4 = 0;\n              iVar13 = local_8c;\n              local_98 = (int *)iVar27;\nLAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }\n              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n              if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }\n              piVar17 = (int *)uVar32;\n              if (local_e4 != 0) goto LAB_00093182;\nLAB_000932c3:\n              piVar30 = local_e8;\n              if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }\n              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);\n              FUN_000315c0(local_f0,local_fc);\n              local_8c = 0;\nLAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;\n            }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000315c0(local_84,local_fc,iVar15,iVar15);" (call_expression "FUN_000315c0(local_84,local_fc,iVar15,iVar15)" (identifier "FUN_000315c0") (argument_list "(local_84,local_fc,iVar15,iVar15)" (( "(") (identifier "local_84") (, ",") (identifier "local_fc") (, ",") (identifier "iVar15") (, ",") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 != (int *)0x0) {\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" (if "if") (parenthesized_expression "(param_4 != (int *)0x0)" (( "(") (binary_expression "param_4 != (int *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                local_a4 = 0;\nLAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);\n                local_f0 = 0;\n                bVar6 = 0;\n                local_e4 = 1;\n                uVar22 = piVar8[9];\n                iVar15 = extraout_ECX_01;\n                uVar25 = extraout_EDX_01;\n                iVar13 = iVar27;\nLAB_00091f2a:\n                iVar27 = iVar13;\n                if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }\n                goto LAB_0009244d;\n              }" ({ "{") (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" (identifier "local_a4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00091ee2:\n                FUN_00075fd0(param_1,param_2,iVar29,0x10);" (statement_identifier "LAB_00091ee2") (: ":") (expression_statement "FUN_00075fd0(param_1,param_2,iVar29,0x10);" (call_expression "FUN_00075fd0(param_1,param_2,iVar29,0x10)" (identifier "FUN_00075fd0") (argument_list "(param_1,param_2,iVar29,0x10)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar29") (, ",") (number_literal "0x10") () ")"))) (; ";"))) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" (identifier "local_f0") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" (identifier "bVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" (identifier "uVar22") (= "=") (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_01;" (assignment_expression "iVar15 = extraout_ECX_01" (identifier "iVar15") (= "=") (identifier "extraout_ECX_01")) (; ";")) (expression_statement "uVar25 = extraout_EDX_01;" (assignment_expression "uVar25 = extraout_EDX_01" (identifier "uVar25") (= "=") (identifier "extraout_EDX_01")) (; ";")) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" (identifier "iVar13") (= "=") (identifier "iVar27")) (; ";")) (labeled_statement "LAB_00091f2a:\n                iVar27 = iVar13;" (statement_identifier "LAB_00091f2a") (: ":") (expression_statement "iVar27 = iVar13;" (assignment_expression "iVar27 = iVar13" (identifier "iVar27") (= "=") (identifier "iVar13")) (; ";"))) (if_statement "if ((uVar22 & 0x80) == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }\n                else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" (if "if") (parenthesized_expression "((uVar22 & 0x80) == 0)" (( "(") (binary_expression "(uVar22 & 0x80) == 0" (parenthesized_expression "(uVar22 & 0x80)" (( "(") (binary_expression "uVar22 & 0x80" (identifier "uVar22") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  local_c4 = 0;\n                  iVar15 = extraout_ECX_18;\n                  uVar25 = extraout_EDX_07;\n                  iVar27 = local_8c;\n                  local_98 = (int *)iVar13;\n                }" ({ "{") (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" (identifier "FUN_000315c0") (argument_list "(local_fc,0,uVar22,uVar22)" (( "(") (identifier "local_fc") (, ",") (number_literal "0") (, ",") (identifier "uVar22") (, ",") (identifier "uVar22") () ")"))) (; ";")) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" (identifier "local_c4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = extraout_ECX_18;" (assignment_expression "iVar15 = extraout_ECX_18" (identifier "iVar15") (= "=") (identifier "extraout_ECX_18")) (; ";")) (expression_statement "uVar25 = extraout_EDX_07;" (assignment_expression "uVar25 = extraout_EDX_07" (identifier "uVar25") (= "=") (identifier "extraout_EDX_07")) (; ";")) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" (identifier "iVar27") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "local_98 = (int *)iVar13;" (assignment_expression "local_98 = (int *)iVar13" (identifier "local_98") (= "=") (cast_expression "(int *)iVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar13"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" (else "else") (compound_statement "{\nLAB_00091f32:\n                  local_c4 = (int)local_a4;\n                  if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }\n                  local_98 = (int *)iVar27;\n                  local_c8 = local_c4;\n                  if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }\n                }" ({ "{") (labeled_statement "LAB_00091f32:\n                  local_c4 = (int)local_a4;" (statement_identifier "LAB_00091f32") (: ":") (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" (identifier "local_c4") (= "=") (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4"))) (; ";"))) (if_statement "if (0 < local_c4) {\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" (if "if") (parenthesized_expression "(0 < local_c4)" (( "(") (binary_expression "0 < local_c4" (number_literal "0") (< "<") (identifier "local_c4")) () ")")) (compound_statement "{\nLAB_00091f43:\n                    local_98 = (int *)0x0;\n                    local_68 = iVar27;\n                    do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);\n                  }" ({ "{") (labeled_statement "LAB_00091f43:\n                    local_98 = (int *)0x0;" (statement_identifier "LAB_00091f43") (: ":") (expression_statement "local_98 = (int *)0x0;" (assignment_expression "local_98 = (int *)0x0" (identifier "local_98") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "local_68 = iVar27;" (assignment_expression "local_68 = iVar27" (identifier "local_68") (= "=") (identifier "iVar27")) (; ";")) (do_statement "do {\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    } while ((int *)(local_c4 * 2) != local_98);" (do "do") (compound_statement "{\n                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;\n                      local_98 = (int *)((int)local_98 + 2);\n                      local_68 = local_68 + 1;\n                      iVar15 = extraout_ECX_02;\n                      uVar25 = extraout_EDX_02;\n                    }" ({ "{") (expression_statement "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)\n                      ;" (call_expression "FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" (identifier "FUN_00077cb0") (argument_list "((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)" (( "(") (cast_expression "(int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(int *)(local_e0 + 4) + (int)local_98)" (* "*") (cast_expression "(short *)(*(int *)(local_e0 + 4) + (int)local_98)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_e0 + 4) + (int)local_98)" (( "(") (binary_expression "*(int *)(local_e0 + 4) + (int)local_98" (pointer_expression "*(int *)(local_e0 + 4)" (* "*") (cast_expression "(int *)(local_e0 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_e0 + 4)" (( "(") (binary_expression "local_e0 + 4" (identifier "local_e0") (+ "+") (number_literal "4")) () ")")))) (+ "+") (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98"))) () ")"))))) (, ",") (identifier "local_68") () ")"))) (; ";")) (expression_statement "local_98 = (int *)((int)local_98 + 2);" (assignment_expression "local_98 = (int *)((int)local_98 + 2)" (identifier "local_98") (= "=") (cast_expression "(int *)((int)local_98 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_98 + 2)" (( "(") (binary_expression "(int)local_98 + 2" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" (identifier "local_68") (= "=") (binary_expression "local_68 + 1" (identifier "local_68") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_02;" (assignment_expression "iVar15 = extraout_ECX_02" (identifier "iVar15") (= "=") (identifier "extraout_ECX_02")) (; ";")) (expression_statement "uVar25 = extraout_EDX_02;" (assignment_expression "uVar25 = extraout_EDX_02" (identifier "uVar25") (= "=") (identifier "extraout_EDX_02")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)(local_c4 * 2) != local_98)" (( "(") (binary_expression "(int *)(local_c4 * 2) != local_98" (cast_expression "(int *)(local_c4 * 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_c4 * 2)" (( "(") (binary_expression "local_c4 * 2" (identifier "local_c4") (* "*") (number_literal "2")) () ")"))) (!= "!=") (identifier "local_98")) () ")")) (; ";")) (} "}"))) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" (identifier "local_98") (= "=") (cast_expression "(int *)iVar27" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar27"))) (; ";")) (expression_statement "local_c8 = local_c4;" (assignment_expression "local_c8 = local_c4" (identifier "local_c8") (= "=") (identifier "local_c4")) (; ";")) (if_statement "if (local_e4 == 0) {\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }\n                  else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" (if "if") (parenthesized_expression "(local_e4 == 0)" (( "(") (binary_expression "local_e4 == 0" (identifier "local_e4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00092c5d:\n                    uVar34 = FUN_0002e150();\n                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);\n                    FUN_00032090(local_c8);\n                    FUN_000316b0(local_8c,local_98,local_c8);\n                    local_c4 = 0;\n                    local_e4 = 0;\n                    iVar15 = extraout_ECX_04;\n                    uVar25 = extraout_EDX_05;\n                    iVar27 = local_8c;\n                  }" ({ "{") (labeled_statement "LAB_00092c5d:\n                    uVar34 = FUN_0002e150();" (statement_identifier "LAB_00092c5d") (: ":") (expression_statement "uVar34 = FUN_0002e150();" (assignment_expression "uVar34 = FUN_0002e150()" (identifier "uVar34") (= "=") (call_expression "FUN_0002e150()" (identifier "FUN_0002e150") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "FUN_000315c0(local_c8,local_8c,uVar34,uVar34);" (call_expression "FUN_000315c0(local_c8,local_8c,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(local_c8,local_8c,uVar34,uVar34)" (( "(") (identifier "local_c8") (, ",") (identifier "local_8c") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))) (; ";")) (expression_statement "FUN_00032090(local_c8);" (call_expression "FUN_00032090(local_c8)" (identifier "FUN_00032090") (argument_list "(local_c8)" (( "(") (identifier "local_c8") () ")"))) (; ";")) (expression_statement "FUN_000316b0(local_8c,local_98,local_c8);" (call_expression "FUN_000316b0(local_8c,local_98,local_c8)" (identifier "FUN_000316b0") (argument_list "(local_8c,local_98,local_c8)" (( "(") (identifier "local_8c") (, ",") (identifier "local_98") (, ",") (identifier "local_c8") () ")"))) (; ";")) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" (identifier "local_c4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = extraout_ECX_04;" (assignment_expression "iVar15 = extraout_ECX_04" (identifier "iVar15") (= "=") (identifier "extraout_ECX_04")) (; ";")) (expression_statement "uVar25 = extraout_EDX_05;" (assignment_expression "uVar25 = extraout_EDX_05" (identifier "uVar25") (= "=") (identifier "extraout_EDX_05")) (; ";")) (expression_statement "iVar27 = local_8c;" (assignment_expression "iVar27 = local_8c" (identifier "iVar27") (= "=") (identifier "local_8c")) (; ";")) (} "}")) (else_clause "else if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" (else "else") (if_statement "if (local_f0 != 0) {\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" (if "if") (parenthesized_expression "(local_f0 != 0)" (( "(") (binary_expression "local_f0 != 0" (identifier "local_f0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_0002b350();\n                    iVar15 = extraout_ECX_03;\n                    uVar25 = extraout_EDX_03;\n                  }" ({ "{") (expression_statement "FUN_0002b350();" (call_expression "FUN_0002b350()" (identifier "FUN_0002b350") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_03;" (assignment_expression "iVar15 = extraout_ECX_03" (identifier "iVar15") (= "=") (identifier "extraout_ECX_03")) (; ";")) (expression_statement "uVar25 = extraout_EDX_03;" (assignment_expression "uVar25 = extraout_EDX_03" (identifier "uVar25") (= "=") (identifier "extraout_EDX_03")) (; ";")) (} "}"))))) (} "}")))) (goto_statement "goto LAB_0009244d;" (goto "goto") (statement_identifier "LAB_0009244d") (; ";")) (} "}"))) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" (identifier "local_f0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" (identifier "local_a4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00093044:\n              uVar34 = 0x1004;" (statement_identifier "LAB_00093044") (: ":") (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" (identifier "uVar34") (= "=") (number_literal "0x1004")) (; ";"))) (if_statement "if ((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))) {\n                uVar34 = 0x1004;\n              }" (if "if") (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))))" (( "(") (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') &&\n                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" (* "*") (cast_expression "(char *)((int)param_1 + 0x12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x12)" (( "(") (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x12")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)))" (( "(") (parenthesized_expression "(((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0))" (( "(") (binary_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||\n                  (uVar34 = 0x100c, bVar26 != 0)" (parenthesized_expression "((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0))" (( "(") (binary_expression "(iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)" (parenthesized_expression "(iVar9 != 0 || (iVar10 != 0))" (( "(") (binary_expression "iVar9 != 0 || (iVar10 != 0)" (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar34 = 0x100c, bVar26 != 0)" (( "(") (comma_expression "uVar34 = 0x100c, bVar26 != 0" (assignment_expression "uVar34 = 0x100c" (identifier "uVar34") (= "=") (number_literal "0x100c")) (, ",") (binary_expression "bVar26 != 0" (identifier "bVar26") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                uVar34 = 0x1004;\n              }" ({ "{") (expression_statement "uVar34 = 0x1004;" (assignment_expression "uVar34 = 0x1004" (identifier "uVar34") (= "=") (number_literal "0x1004")) (; ";")) (} "}"))) (expression_statement "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);" (assignment_expression "uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0)" (identifier "uVar32") (= "=") (call_expression "FUN_0007d3c0(0,0,uVar34,local_c0)" (identifier "FUN_0007d3c0") (argument_list "(0,0,uVar34,local_c0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar34") (, ",") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "uVar25 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar25 = (uint)((ulonglong)uVar32 >> 0x20)" (identifier "uVar25") (= "=") (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar15 = (int)uVar32;" (assignment_expression "iVar15 = (int)uVar32" (identifier "iVar15") (= "=") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32"))) (; ";")) (if_statement "if (iVar15 == 0) goto LAB_00091be9;" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";"))) (expression_statement "local_64 = *(int **)(iVar15 + 0x14);" (assignment_expression "local_64 = *(int **)(iVar15 + 0x14)" (identifier "local_64") (= "=") (pointer_expression "*(int **)(iVar15 + 0x14)" (* "*") (cast_expression "(int **)(iVar15 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x14)" (( "(") (binary_expression "iVar15 + 0x14" (identifier "iVar15") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_78 = *(int **)(iVar15 + 0x18);" (assignment_expression "local_78 = *(int **)(iVar15 + 0x18)" (identifier "local_78") (= "=") (pointer_expression "*(int **)(iVar15 + 0x18)" (* "*") (cast_expression "(int **)(iVar15 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x18)" (( "(") (binary_expression "iVar15 + 0x18" (identifier "iVar15") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_e4 = (uint)*(byte *)(iVar15 + 0x2e);" (assignment_expression "local_e4 = (uint)*(byte *)(iVar15 + 0x2e)" (identifier "local_e4") (= "=") (binary_expression "(uint)*(byte *)(iVar15 + 0x2e)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar15 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2e)" (( "(") (binary_expression "iVar15 + 0x2e" (identifier "iVar15") (+ "+") (number_literal "0x2e")) () ")"))))) (; ";")) (expression_statement "bVar6 = *(byte *)(iVar15 + 0x30) & 1;" (assignment_expression "bVar6 = *(byte *)(iVar15 + 0x30) & 1" (identifier "bVar6") (= "=") (binary_expression "*(byte *)(iVar15 + 0x30) & 1" (pointer_expression "*(byte *)(iVar15 + 0x30)" (* "*") (cast_expression "(byte *)(iVar15 + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x30)" (( "(") (binary_expression "iVar15 + 0x30" (identifier "iVar15") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "1"))) (; ";")) (expression_statement "piVar30 = (int *)(local_e4 - 1);" (assignment_expression "piVar30 = (int *)(local_e4 - 1)" (identifier "piVar30") (= "=") (cast_expression "(int *)(local_e4 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_e4 - 1)" (( "(") (binary_expression "local_e4 - 1" (identifier "local_e4") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar15 = extraout_ECX_11;" (assignment_expression "iVar15 = extraout_ECX_11" (identifier "iVar15") (= "=") (identifier "extraout_ECX_11")) (; ";")) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" (identifier "iVar13") (= "=") (identifier "iVar27")) (; ";")) (if_statement "if (piVar30 == (int *)0x0) {\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" (if "if") (parenthesized_expression "(piVar30 == (int *)0x0)" (( "(") (binary_expression "piVar30 == (int *)0x0" (identifier "piVar30") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                uVar22 = piVar8[9];\n                goto LAB_00091f2a;\n              }" ({ "{") (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" (identifier "uVar22") (= "=") (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (goto_statement "goto LAB_00091f2a;" (goto "goto") (statement_identifier "LAB_00091f2a") (; ";")) (} "}"))) (expression_statement "piVar17 = (int *)param_1[0x1d];" (assignment_expression "piVar17 = (int *)param_1[0x1d]" (identifier "piVar17") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar17 = param_1;\n              }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                piVar17 = param_1;\n              }" ({ "{") (expression_statement "piVar17 = param_1;" (assignment_expression "piVar17 = param_1" (identifier "piVar17") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar17 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar17 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar17 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar17 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17 + 5)" (( "(") (binary_expression "piVar17 + 5" (identifier "piVar17") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar22 = piVar8[9];" (assignment_expression "uVar22 = piVar8[9]" (identifier "uVar22") (= "=") (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "uVar25 = uVar22 & 0x80;" (assignment_expression "uVar25 = uVar22 & 0x80" (identifier "uVar25") (= "=") (binary_expression "uVar22 & 0x80" (identifier "uVar22") (& "&") (number_literal "0x80"))) (; ";")) (if_statement "if (local_e4 == 2) {\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" (if "if") (parenthesized_expression "(local_e4 == 2)" (( "(") (binary_expression "local_e4 == 2" (identifier "local_e4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;\n                if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }\n                local_c8 = (uint)local_a4;\n                local_e4 = 0;\n                local_98 = (int *)iVar27;\n                local_c4 = local_c8;\n                if (0 < (int)local_c8) goto LAB_00091f43;\n                goto LAB_00092c5d;\n              }" ({ "{") (if_statement "if ((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   ) goto LAB_00091f2a;" (if "if") (parenthesized_expression "((((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')\n                   )" (( "(") (binary_expression "(((int)local_78 < 0) || (local_dc == local_78)) ||\n                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" (parenthesized_expression "(((int)local_78 < 0) || (local_dc == local_78))" (( "(") (binary_expression "((int)local_78 < 0) || (local_dc == local_78)" (parenthesized_expression "((int)local_78 < 0)" (( "(") (binary_expression "(int)local_78 < 0" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_dc == local_78)" (( "(") (binary_expression "local_dc == local_78" (identifier "local_dc") (== "==") (identifier "local_78")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')" (( "(") (comma_expression "iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0'" (assignment_expression "iVar15 = (int)local_78 - (int)piVar16" (identifier "iVar15") (= "=") (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (- "-") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")))) (, ",") (binary_expression "*(char *)((int)piVar18 + iVar15) == '\0'" (pointer_expression "*(char *)((int)piVar18 + iVar15)" (* "*") (cast_expression "(char *)((int)piVar18 + iVar15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar18 + iVar15)" (( "(") (binary_expression "(int)piVar18 + iVar15" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (+ "+") (identifier "iVar15")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (goto_statement "goto LAB_00091f2a;" (goto "goto") (statement_identifier "LAB_00091f2a") (; ";"))) (if_statement "if (uVar25 == 0) {\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" (if "if") (parenthesized_expression "(uVar25 == 0)" (( "(") (binary_expression "uVar25 == 0" (identifier "uVar25") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(local_fc,0,uVar22,uVar22);\n                  iVar15 = extraout_ECX_14;\n                  goto LAB_000931ef;\n                }" ({ "{") (expression_statement "FUN_000315c0(local_fc,0,uVar22,uVar22);" (call_expression "FUN_000315c0(local_fc,0,uVar22,uVar22)" (identifier "FUN_000315c0") (argument_list "(local_fc,0,uVar22,uVar22)" (( "(") (identifier "local_fc") (, ",") (number_literal "0") (, ",") (identifier "uVar22") (, ",") (identifier "uVar22") () ")"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_14;" (assignment_expression "iVar15 = extraout_ECX_14" (identifier "iVar15") (= "=") (identifier "extraout_ECX_14")) (; ";")) (goto_statement "goto LAB_000931ef;" (goto "goto") (statement_identifier "LAB_000931ef") (; ";")) (} "}"))) (expression_statement "local_c8 = (uint)local_a4;" (assignment_expression "local_c8 = (uint)local_a4" (identifier "local_c8") (= "=") (cast_expression "(uint)local_a4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_a4"))) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" (identifier "local_98") (= "=") (cast_expression "(int *)iVar27" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar27"))) (; ";")) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" (identifier "local_c4") (= "=") (identifier "local_c8")) (; ";")) (if_statement "if (0 < (int)local_c8) goto LAB_00091f43;" (if "if") (parenthesized_expression "(0 < (int)local_c8)" (( "(") (binary_expression "0 < (int)local_c8" (number_literal "0") (< "<") (cast_expression "(int)local_c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c8"))) () ")")) (goto_statement "goto LAB_00091f43;" (goto "goto") (statement_identifier "LAB_00091f43") (; ";"))) (goto_statement "goto LAB_00092c5d;" (goto "goto") (statement_identifier "LAB_00092c5d") (; ";")) (} "}"))) (if_statement "if (uVar25 != 0) goto LAB_00091f32;" (if "if") (parenthesized_expression "(uVar25 != 0)" (( "(") (binary_expression "uVar25 != 0" (identifier "uVar25") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091f32;" (goto "goto") (statement_identifier "LAB_00091f32") (; ";"))) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30)" (identifier "uVar32") (= "=") (call_expression "FUN_000315c0(local_fc,0,piVar30,piVar30)" (identifier "FUN_000315c0") (argument_list "(local_fc,0,piVar30,piVar30)" (( "(") (identifier "local_fc") (, ",") (number_literal "0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")")))) (; ";")) (expression_statement "iVar15 = extraout_ECX_12;" (assignment_expression "iVar15 = extraout_ECX_12" (identifier "iVar15") (= "=") (identifier "extraout_ECX_12")) (; ";")) (if_statement "if (local_e4 == 0) {\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" (if "if") (parenthesized_expression "(local_e4 == 0)" (( "(") (binary_expression "local_e4 == 0" (identifier "local_e4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000931ef:\n                iVar13 = param_1[0xb];\n                param_1[0xb] = iVar13 + 1;\n                *local_98 = iVar13 + 1;\n                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);\n                local_e4 = 0;\n                iVar15 = extraout_ECX_15;\n                piVar30 = local_98;\n              }" ({ "{") (labeled_statement "LAB_000931ef:\n                iVar13 = param_1[0xb];" (statement_identifier "LAB_000931ef") (: ":") (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" (identifier "iVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";"))) (expression_statement "param_1[0xb] = iVar13 + 1;" (assignment_expression "param_1[0xb] = iVar13 + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_98 = iVar13 + 1;" (assignment_expression "*local_98 = iVar13 + 1" (pointer_expression "*local_98" (* "*") (identifier "local_98")) (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);" (assignment_expression "uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15)" (identifier "uVar32") (= "=") (call_expression "FUN_000315c0(local_fc,0,iVar15,iVar15)" (identifier "FUN_000315c0") (argument_list "(local_fc,0,iVar15,iVar15)" (( "(") (identifier "local_fc") (, ",") (number_literal "0") (, ",") (identifier "iVar15") (, ",") (identifier "iVar15") () ")")))) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = extraout_ECX_15;" (assignment_expression "iVar15 = extraout_ECX_15" (identifier "iVar15") (= "=") (identifier "extraout_ECX_15")) (; ";")) (expression_statement "piVar30 = local_98;" (assignment_expression "piVar30 = local_98" (identifier "piVar30") (= "=") (identifier "local_98")) (; ";")) (} "}"))) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" (identifier "local_c4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = local_8c;" (assignment_expression "iVar13 = local_8c" (identifier "iVar13") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" (identifier "local_98") (= "=") (cast_expression "(int *)iVar27" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar27"))) (; ";")) (labeled_statement "LAB_0009314f:\n              if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" (statement_identifier "LAB_0009314f") (: ":") (if_statement "if ((local_e4 != 2) && (bVar5)) {\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" (if "if") (parenthesized_expression "((local_e4 != 2) && (bVar5))" (( "(") (binary_expression "(local_e4 != 2) && (bVar5)" (parenthesized_expression "(local_e4 != 2)" (( "(") (binary_expression "local_e4 != 2" (identifier "local_e4") (!= "!=") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")"))) () ")")) (compound_statement "{\n                uVar32 = FUN_00043f00();\n                iVar15 = extraout_ECX_13;\n              }" ({ "{") (expression_statement "uVar32 = FUN_00043f00();" (assignment_expression "uVar32 = FUN_00043f00()" (identifier "uVar32") (= "=") (call_expression "FUN_00043f00()" (identifier "FUN_00043f00") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar15 = extraout_ECX_13;" (assignment_expression "iVar15 = extraout_ECX_13" (identifier "iVar15") (= "=") (identifier "extraout_ECX_13")) (; ";")) (} "}")))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" (identifier "uVar34") (= "=") (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }\n                piVar30 = local_64;\n                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }\nLAB_00093182:\n                local_f0 = iVar29;\n                if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }\n                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);\n                local_8c = 0;\n                goto LAB_0009246c;\n              }" ({ "{") (if_statement "if (local_e4 == 0) {\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }\n                else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" (if "if") (parenthesized_expression "(local_e4 == 0)" (( "(") (binary_expression "local_e4 == 0" (identifier "local_e4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  piVar17 = piVar8;\n                  if (piVar8[0xe] != 0) goto LAB_000932c3;\nLAB_00093245:\n                  iVar27 = 0;\nLAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);\nLAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }\n                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                  piVar17 = (int *)uVar32;\n                  if (local_e4 == 0) goto LAB_000932c3;\n                }" ({ "{") (expression_statement "piVar17 = piVar8;" (assignment_expression "piVar17 = piVar8" (identifier "piVar17") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (piVar8[0xe] != 0) goto LAB_000932c3;" (if "if") (parenthesized_expression "(piVar8[0xe] != 0)" (( "(") (binary_expression "piVar8[0xe] != 0" (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000932c3;" (goto "goto") (statement_identifier "LAB_000932c3") (; ";"))) (labeled_statement "LAB_00093245:\n                  iVar27 = 0;" (statement_identifier "LAB_00093245") (: ":") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00093247:\n                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" (statement_identifier "LAB_00093247") (: ":") (expression_statement "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);" (assignment_expression "uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0)" (identifier "uVar32") (= "=") (call_expression "FUN_00017bea(0,piVar16,piVar18,0,0)" (identifier "FUN_00017bea") (argument_list "(0,piVar16,piVar18,0,0)" (( "(") (number_literal "0") (, ",") (identifier "piVar16") (, ",") (identifier "piVar18") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";"))) (labeled_statement "LAB_0009326e:\n                  if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" (statement_identifier "LAB_0009326e") (: ":") (if_statement "if (iVar27 != 0) {\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar15 = local_e8[0x1a] + -1;\n                    if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }\n                  }" ({ "{") (expression_statement "iVar15 = local_e8[0x1a] + -1;" (assignment_expression "iVar15 = local_e8[0x1a] + -1" (identifier "iVar15") (= "=") (binary_expression "local_e8[0x1a] + -1" (subscript_expression "local_e8[0x1a]" (identifier "local_e8") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar15 == iVar27) {\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }\n                    else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" (if "if") (parenthesized_expression "(iVar15 == iVar27)" (( "(") (binary_expression "iVar15 == iVar27" (identifier "iVar15") (== "==") (identifier "iVar27")) () ")")) (compound_statement "{\n                      local_e8[0x1a] = iVar27;\n                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);\n                    }" ({ "{") (expression_statement "local_e8[0x1a] = iVar27;" (assignment_expression "local_e8[0x1a] = iVar27" (subscript_expression "local_e8[0x1a]" (identifier "local_e8") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (identifier "iVar27")) (; ";")) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" (identifier "uVar32") (= "=") (call_expression "CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)uVar32 >> 0x20),local_e8)" (( "(") (cast_expression "(int)((ulonglong)uVar32 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (identifier "local_e8") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" (else "else") (compound_statement "{\n                      if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }\n                      iVar27 = *local_e8;\n                      local_f0 = unaff_EDI + 0x4e0b5;\n                      if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }\n                      *(int *)(local_f0 + 8) = local_e8[0x1a];\n                      uVar32 = CONCAT44(iVar27,local_f0);\n                    }" ({ "{") (if_statement "if (-1 < iVar27) {\n                        iVar15 = iVar27;\n                      }" (if "if") (parenthesized_expression "(-1 < iVar27)" (( "(") (binary_expression "-1 < iVar27" (number_literal "-1") (< "<") (identifier "iVar27")) () ")")) (compound_statement "{\n                        iVar15 = iVar27;\n                      }" ({ "{") (expression_statement "iVar15 = iVar27;" (assignment_expression "iVar15 = iVar27" (identifier "iVar15") (= "=") (identifier "iVar27")) (; ";")) (} "}"))) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" (identifier "iVar27") (= "=") (pointer_expression "*local_e8" (* "*") (identifier "local_e8"))) (; ";")) (expression_statement "local_f0 = unaff_EDI + 0x4e0b5;" (assignment_expression "local_f0 = unaff_EDI + 0x4e0b5" (identifier "local_f0") (= "=") (binary_expression "unaff_EDI + 0x4e0b5" (identifier "unaff_EDI") (+ "+") (number_literal "0x4e0b5"))) (; ";")) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" (if "if") (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" (* "*") (cast_expression "(char *)(iVar27 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x4d)" (( "(") (binary_expression "iVar27 + 0x4d" (identifier "iVar27") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        local_f0 = iVar15 * 0x14 + local_e8[0x19];\n                      }" ({ "{") (expression_statement "local_f0 = iVar15 * 0x14 + local_e8[0x19];" (assignment_expression "local_f0 = iVar15 * 0x14 + local_e8[0x19]" (identifier "local_f0") (= "=") (binary_expression "iVar15 * 0x14 + local_e8[0x19]" (binary_expression "iVar15 * 0x14" (identifier "iVar15") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "local_e8[0x19]" (identifier "local_e8") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "*(int *)(local_f0 + 8) = local_e8[0x1a];" (assignment_expression "*(int *)(local_f0 + 8) = local_e8[0x1a]" (pointer_expression "*(int *)(local_f0 + 8)" (* "*") (cast_expression "(int *)(local_f0 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_f0 + 8)" (( "(") (binary_expression "local_f0 + 8" (identifier "local_f0") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "local_e8[0x1a]" (identifier "local_e8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "uVar32 = CONCAT44(iVar27,local_f0);" (assignment_expression "uVar32 = CONCAT44(iVar27,local_f0)" (identifier "uVar32") (= "=") (call_expression "CONCAT44(iVar27,local_f0)" (identifier "CONCAT44") (argument_list "(iVar27,local_f0)" (( "(") (identifier "iVar27") (, ",") (identifier "local_f0") () ")")))) (; ";")) (} "}")))) (} "}")))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" (identifier "uVar34") (= "=") (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" (identifier "piVar17") (= "=") (cast_expression "(int *)uVar32" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar32"))) (; ";")) (if_statement "if (local_e4 == 0) goto LAB_000932c3;" (if "if") (parenthesized_expression "(local_e4 == 0)" (( "(") (binary_expression "local_e4 == 0" (identifier "local_e4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000932c3;" (goto "goto") (statement_identifier "LAB_000932c3") (; ";"))) (} "}")) (else_clause "else {\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" (else "else") (compound_statement "{\n                  if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }\n                  if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }\n                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }\n                  if (piVar8[0xe] == 0) goto LAB_00093245;\n                }" ({ "{") (if_statement "if (-1 < (int)local_64) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" (if "if") (parenthesized_expression "(-1 < (int)local_64)" (( "(") (binary_expression "-1 < (int)local_64" (number_literal "-1") (< "<") (cast_expression "(int)local_64" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_64"))) () ")")) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;\n                  }" ({ "{") (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" (* "*") (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar18 + ((int)local_64 - (int)piVar16))" (( "(") (binary_expression "(int)piVar18 + ((int)local_64 - (int)piVar16)" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (+ "+") (parenthesized_expression "((int)local_64 - (int)piVar16)" (( "(") (binary_expression "(int)local_64 - (int)piVar16" (cast_expression "(int)local_64" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_64")) (- "-") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16"))) () ")"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (-1 < (int)local_78) {\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" (if "if") (parenthesized_expression "(-1 < (int)local_78)" (( "(") (binary_expression "-1 < (int)local_78" (number_literal "-1") (< "<") (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78"))) () ")")) (compound_statement "{\n                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;\n                  }" ({ "{") (expression_statement "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;" (assignment_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0" (pointer_expression "*(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" (* "*") (cast_expression "(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar18 + ((int)local_78 - (int)piVar16))" (( "(") (binary_expression "(int)piVar18 + ((int)local_78 - (int)piVar16)" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (+ "+") (parenthesized_expression "((int)local_78 - (int)piVar16)" (( "(") (binary_expression "(int)local_78 - (int)piVar16" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (- "-") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16"))) () ")"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" (if "if") (parenthesized_expression "((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f)))" (( "(") (binary_expression "(local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" (parenthesized_expression "(local_e4 == 2)" (( "(") (binary_expression "local_e4 == 2" (identifier "local_e4") (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(0 < local_90 + ((int)~(uint)local_78 >> 0x1f))" (( "(") (binary_expression "0 < local_90 + ((int)~(uint)local_78 >> 0x1f)" (number_literal "0") (< "<") (binary_expression "local_90 + ((int)~(uint)local_78 >> 0x1f)" (identifier "local_90") (+ "+") (parenthesized_expression "((int)~(uint)local_78 >> 0x1f)" (( "(") (binary_expression "(int)~(uint)local_78 >> 0x1f" (cast_expression "(int)~(uint)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "~(uint)local_78" (~ "~") (cast_expression "(uint)local_78" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_78")))) (>> ">>") (number_literal "0x1f")) () ")")))) () ")"))) () ")")) (compound_statement "{\n                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);\n                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);\n                    iVar27 = (int)uVar33;\n                    if (piVar8[0xe] == 0) goto LAB_00093247;\n                    goto LAB_0009326e;\n                  }" ({ "{") (expression_statement "uVar33 = FUN_000315c0(0,0,iVar15,iVar15);" (assignment_expression "uVar33 = FUN_000315c0(0,0,iVar15,iVar15)" (identifier "uVar33") (= "=") (call_expression "FUN_000315c0(0,0,iVar15,iVar15)" (identifier "FUN_000315c0") (argument_list "(0,0,iVar15,iVar15)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "iVar15") (, ",") (identifier "iVar15") () ")")))) (; ";")) (expression_statement "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);" (assignment_expression "uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" (identifier "uVar32") (= "=") (call_expression "CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)uVar33 >> 0x20),piVar8)" (( "(") (cast_expression "(int)((ulonglong)uVar33 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar33 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar33")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (identifier "piVar8") () ")")))) (; ";")) (expression_statement "iVar27 = (int)uVar33;" (assignment_expression "iVar27 = (int)uVar33" (identifier "iVar27") (= "=") (cast_expression "(int)uVar33" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar33"))) (; ";")) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093247;" (if "if") (parenthesized_expression "(piVar8[0xe] == 0)" (( "(") (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00093247;" (goto "goto") (statement_identifier "LAB_00093247") (; ";"))) (goto_statement "goto LAB_0009326e;" (goto "goto") (statement_identifier "LAB_0009326e") (; ";")) (} "}"))) (if_statement "if (piVar8[0xe] == 0) goto LAB_00093245;" (if "if") (parenthesized_expression "(piVar8[0xe] == 0)" (( "(") (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00093245;" (goto "goto") (statement_identifier "LAB_00093245") (; ";"))) (} "}")))) (expression_statement "piVar30 = local_64;" (assignment_expression "piVar30 = local_64" (identifier "piVar30") (= "=") (identifier "local_64")) (; ";")) (if_statement "if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" (if "if") (parenthesized_expression "((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78))" (( "(") (binary_expression "(local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)" (parenthesized_expression "(local_dc != local_64)" (( "(") (binary_expression "local_dc != local_64" (identifier "local_dc") (!= "!=") (identifier "local_64")) () ")")) (&& "&&") (parenthesized_expression "(piVar30 = local_78, local_dc != local_78)" (( "(") (comma_expression "piVar30 = local_78, local_dc != local_78" (assignment_expression "piVar30 = local_78" (identifier "piVar30") (= "=") (identifier "local_78")) (, ",") (binary_expression "local_dc != local_78" (identifier "local_dc") (!= "!=") (identifier "local_78"))) () ")"))) () ")")) (compound_statement "{\n                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);\n                }" ({ "{") (expression_statement "FUN_000316b0(iVar29,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(iVar29,iVar13,local_c4,uVar34)" (identifier "FUN_000316b0") (argument_list "(iVar29,iVar13,local_c4,uVar34)" (( "(") (identifier "iVar29") (, ",") (identifier "iVar13") (, ",") (identifier "local_c4") (, ",") (identifier "uVar34") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00093182:\n                local_f0 = iVar29;" (statement_identifier "LAB_00093182") (: ":") (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" (identifier "local_f0") (= "=") (identifier "iVar29")) (; ";"))) (if_statement "if (local_e4 != 1) {\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" (if "if") (parenthesized_expression "(local_e4 != 1)" (( "(") (binary_expression "local_e4 != 1" (identifier "local_e4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                  iVar27 = param_1[0xe];\n                  param_1[0xe] = iVar27 + -1;\n                  local_f0 = iVar27 + -1;\n                }" ({ "{") (expression_statement "iVar27 = param_1[0xe];" (assignment_expression "iVar27 = param_1[0xe]" (identifier "iVar27") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "param_1[0xe] = iVar27 + -1;" (assignment_expression "param_1[0xe] = iVar27 + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_f0 = iVar27 + -1;" (assignment_expression "local_f0 = iVar27 + -1" (identifier "local_f0") (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);" (assignment_expression "iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0)" (identifier "iVar29") (= "=") (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" (identifier "FUN_000315c0") (argument_list "(iVar29,0,local_f0,local_f0)" (( "(") (identifier "iVar29") (, ",") (number_literal "0") (, ",") (identifier "local_f0") (, ",") (identifier "local_f0") () ")")))) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0009246c;" (goto "goto") (statement_identifier "LAB_0009246c") (; ";")) (} "}"))) (expression_statement "piVar17 = (int *)uVar32;" (assignment_expression "piVar17 = (int *)uVar32" (identifier "piVar17") (= "=") (cast_expression "(int *)uVar32" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar32"))) (; ";")) (if_statement "if (local_e4 != 0) goto LAB_00093182;" (if "if") (parenthesized_expression "(local_e4 != 0)" (( "(") (binary_expression "local_e4 != 0" (identifier "local_e4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00093182;" (goto "goto") (statement_identifier "LAB_00093182") (; ";"))) (labeled_statement "LAB_000932c3:\n              piVar30 = local_e8;" (statement_identifier "LAB_000932c3") (: ":") (expression_statement "piVar30 = local_e8;" (assignment_expression "piVar30 = local_e8" (identifier "piVar30") (= "=") (identifier "local_e8")) (; ";"))) (if_statement "if ((local_e0 != 0) || (local_100 != 0)) {\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" (if "if") (parenthesized_expression "((local_e0 != 0) || (local_100 != 0))" (( "(") (binary_expression "(local_e0 != 0) || (local_100 != 0)" (parenthesized_expression "(local_e0 != 0)" (( "(") (binary_expression "local_e0 != 0" (identifier "local_e0") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_100 != 0)" (( "(") (binary_expression "local_100 != 0" (identifier "local_100") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                local_f0 = param_1[0xe] + -1;\n                param_1[0xe] = local_f0;\n                FUN_000315c0(iVar29,0,local_f0,local_f0);\n                iVar29 = local_e8[0x1a];\n                local_8c = iVar29;\n                if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }\n                if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }\n                if (cVar1 == '\0') goto LAB_000924ae;\n                goto LAB_0009342d;\n              }" ({ "{") (expression_statement "local_f0 = param_1[0xe] + -1;" (assignment_expression "local_f0 = param_1[0xe] + -1" (identifier "local_f0") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xe] = local_f0;" (assignment_expression "param_1[0xe] = local_f0" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_f0")) (; ";")) (expression_statement "FUN_000315c0(iVar29,0,local_f0,local_f0);" (call_expression "FUN_000315c0(iVar29,0,local_f0,local_f0)" (identifier "FUN_000315c0") (argument_list "(iVar29,0,local_f0,local_f0)" (( "(") (identifier "iVar29") (, ",") (number_literal "0") (, ",") (identifier "local_f0") (, ",") (identifier "local_f0") () ")"))) (; ";")) (expression_statement "iVar29 = local_e8[0x1a];" (assignment_expression "iVar29 = local_e8[0x1a]" (identifier "iVar29") (= "=") (subscript_expression "local_e8[0x1a]" (identifier "local_e8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "local_8c = iVar29;" (assignment_expression "local_8c = iVar29" (identifier "local_8c") (= "=") (identifier "iVar29")) (; ";")) (if_statement "if (local_100 == 0) {\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(iVar13,0,local_e8,local_e8);\n                  FUN_000316b0(local_f0,iVar13,0);\n                  goto LAB_00093326;\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar13,0,local_e8,local_e8);" (call_expression "FUN_000315c0(iVar13,0,local_e8,local_e8)" (identifier "FUN_000315c0") (argument_list "(iVar13,0,local_e8,local_e8)" (( "(") (identifier "iVar13") (, ",") (number_literal "0") (, ",") (identifier "local_e8") (, ",") (identifier "local_e8") () ")"))) (; ";")) (expression_statement "FUN_000316b0(local_f0,iVar13,0);" (call_expression "FUN_000316b0(local_f0,iVar13,0)" (identifier "FUN_000316b0") (argument_list "(local_f0,iVar13,0)" (( "(") (identifier "local_f0") (, ",") (identifier "iVar13") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_00093326;" (goto "goto") (statement_identifier "LAB_00093326") (; ";")) (} "}"))) (if_statement "if (piVar20 == (int *)0x0) {\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }\n                  goto LAB_0009246c;\n                }" ({ "{") (if_statement "if (local_e0 == 0) {\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }\n                  else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" (if "if") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_000315c0(local_fc,0,iVar29,iVar29);\n                    iVar29 = FUN_000315c0(local_f0,local_fc);\n                  }" ({ "{") (expression_statement "FUN_000315c0(local_fc,0,iVar29,iVar29);" (call_expression "FUN_000315c0(local_fc,0,iVar29,iVar29)" (identifier "FUN_000315c0") (argument_list "(local_fc,0,iVar29,iVar29)" (( "(") (identifier "local_fc") (, ",") (number_literal "0") (, ",") (identifier "iVar29") (, ",") (identifier "iVar29") () ")"))) (; ";")) (expression_statement "iVar29 = FUN_000315c0(local_f0,local_fc);" (assignment_expression "iVar29 = FUN_000315c0(local_f0,local_fc)" (identifier "iVar29") (= "=") (call_expression "FUN_000315c0(local_f0,local_fc)" (identifier "FUN_000315c0") (argument_list "(local_f0,local_fc)" (( "(") (identifier "local_f0") (, ",") (identifier "local_fc") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" (else "else") (compound_statement "{\n                    iVar29 = (int)local_a4;\n                    iVar27 = iVar29;\n                    uVar34 = extraout_ECX_16;\n                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }\n                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);\n                  }" ({ "{") (expression_statement "iVar29 = (int)local_a4;" (assignment_expression "iVar29 = (int)local_a4" (identifier "iVar29") (= "=") (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4"))) (; ";")) (expression_statement "iVar27 = iVar29;" (assignment_expression "iVar27 = iVar29" (identifier "iVar27") (= "=") (identifier "iVar29")) (; ";")) (expression_statement "uVar34 = extraout_ECX_16;" (assignment_expression "uVar34 = extraout_ECX_16" (identifier "uVar34") (= "=") (identifier "extraout_ECX_16")) (; ";")) (for_statement "for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;\n                        piVar30 = (int *)((int)piVar30 + 1)) {\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" (for "for") (( "(") (assignment_expression "piVar30 = (int *)0x0" (identifier "piVar30") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (binary_expression "(int)piVar30 < iVar29" (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")) (< "<") (identifier "iVar29")) (; ";") (assignment_expression "piVar30 = (int *)((int)piVar30 + 1)" (identifier "piVar30") (= "=") (cast_expression "(int *)((int)piVar30 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar30 + 1)" (( "(") (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")) (+ "+") (number_literal "1")) () ")")))) () ")") (compound_statement "{\n                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);\n                      uVar34 = extraout_ECX_17;\n                    }" ({ "{") (expression_statement "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);" (assignment_expression "iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" (identifier "iVar27") (= "=") (call_expression "FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" (identifier "FUN_000315c0") (argument_list "(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27)" (( "(") (identifier "piVar30") (, ",") (binary_expression "(int)local_98 + (int)piVar30" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (+ "+") (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30"))) (, ",") (identifier "iVar27") (, ",") (identifier "iVar27") () ")")))) (; ";")) (expression_statement "uVar34 = extraout_ECX_17;" (assignment_expression "uVar34 = extraout_ECX_17" (identifier "uVar34") (= "=") (identifier "extraout_ECX_17")) (; ";")) (} "}"))) (expression_statement "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);" (assignment_expression "iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34)" (identifier "iVar29") (= "=") (call_expression "FUN_000316b0(local_f0,local_98,iVar29,uVar34)" (identifier "FUN_000316b0") (argument_list "(local_f0,local_98,iVar29,uVar34)" (( "(") (identifier "local_f0") (, ",") (identifier "local_98") (, ",") (identifier "iVar29") (, ",") (identifier "uVar34") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_0009246c;" (goto "goto") (statement_identifier "LAB_0009246c") (; ";")) (} "}"))) (if_statement "if (cVar1 == '\0') goto LAB_000924ae;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000924ae;" (goto "goto") (statement_identifier "LAB_000924ae") (; ";"))) (goto_statement "goto LAB_0009342d;" (goto "goto") (statement_identifier "LAB_0009342d") (; ";")) (} "}"))) (expression_statement "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);" (assignment_expression "local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" (identifier "local_f0") (= "=") (call_expression "FUN_000315c0(iVar29,local_fc,piVar17,piVar17)" (identifier "FUN_000315c0") (argument_list "(iVar29,local_fc,piVar17,piVar17)" (( "(") (identifier "iVar29") (, ",") (identifier "local_fc") (, ",") (identifier "piVar17") (, ",") (identifier "piVar17") () ")")))) (; ";")) (expression_statement "FUN_000315c0(local_f0,local_fc);" (call_expression "FUN_000315c0(local_f0,local_fc)" (identifier "FUN_000315c0") (argument_list "(local_f0,local_fc)" (( "(") (identifier "local_f0") (, ",") (identifier "local_fc") () ")"))) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00093326:\n              if (cVar1 != '\0') goto LAB_0009247e;" (statement_identifier "LAB_00093326") (: ":") (if_statement "if (cVar1 != '\0') goto LAB_0009247e;" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0009247e;" (goto "goto") (statement_identifier "LAB_0009247e") (; ";")))) (} "}")) (else_clause "else {\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" (else "else") (compound_statement "{\n              if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }\n              local_c4 = (int)local_a4;\n              iVar13 = param_1[0xb];\n              iVar27 = iVar13 + 1;\n              local_8c = local_100 + 1 + iVar13 + local_c4;\n              param_1[0xb] = local_8c;\n              if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;\n              local_e4 = 0;\n              bVar6 = 1;\n              piVar30 = (int *)param_1[0x1d];\n              if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }\n              *(undefined1 *)(piVar30 + 5) = 1;\n              local_98 = (int *)iVar27;\nLAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);\n              local_8c = 0;\n              piVar30 = param_4;\n              iVar13 = iVar27;\n              local_f0 = iVar29;\n              if (param_4 == (int *)0x0) goto LAB_0009314f;\nLAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }\n            }" ({ "{") (if_statement "if (local_e0 == 0) {\n                local_a4 = 0;\n              }\n              else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" (if "if") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_a4 = 0;\n              }" ({ "{") (expression_statement "local_a4 = 0;" (assignment_expression "local_a4 = 0" (identifier "local_a4") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" (else "else") (compound_statement "{\n                local_a4 = *(short *)(local_e0 + 0x32);\n              }" ({ "{") (expression_statement "local_a4 = *(short *)(local_e0 + 0x32);" (assignment_expression "local_a4 = *(short *)(local_e0 + 0x32)" (identifier "local_a4") (= "=") (pointer_expression "*(short *)(local_e0 + 0x32)" (* "*") (cast_expression "(short *)(local_e0 + 0x32)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_e0 + 0x32)" (( "(") (binary_expression "local_e0 + 0x32" (identifier "local_e0") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_c4 = (int)local_a4;" (assignment_expression "local_c4 = (int)local_a4" (identifier "local_c4") (= "=") (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4"))) (; ";")) (expression_statement "iVar13 = param_1[0xb];" (assignment_expression "iVar13 = param_1[0xb]" (identifier "iVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar27 = iVar13 + 1;" (assignment_expression "iVar27 = iVar13 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_8c = local_100 + 1 + iVar13 + local_c4;" (assignment_expression "local_8c = local_100 + 1 + iVar13 + local_c4" (identifier "local_8c") (= "=") (binary_expression "local_100 + 1 + iVar13 + local_c4" (binary_expression "local_100 + 1 + iVar13" (binary_expression "local_100 + 1" (identifier "local_100") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar13")) (+ "+") (identifier "local_c4"))) (; ";")) (expression_statement "param_1[0xb] = local_8c;" (assignment_expression "param_1[0xb] = local_8c" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_8c")) (; ";")) (if_statement "if (param_4 == (int *)0x0) {\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }\n              else if (local_100 == 0) goto LAB_00091ee2;" (if "if") (parenthesized_expression "(param_4 == (int *)0x0)" (( "(") (binary_expression "param_4 == (int *)0x0" (identifier "param_4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                iVar15 = local_c4 + local_100 + iVar15;\n                piVar30 = (int *)param_1[10];\n                iVar21 = (int)piVar30 + 1;\n                param_1[10] = iVar21;\n                if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }\n                if (local_100 == 0) goto LAB_00093044;\n                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);\n                iVar15 = extraout_ECX_19;\n                uVar25 = extraout_EDX_08;\n                if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }\n              }" ({ "{") (if_statement "if (piVar20 == (int *)0x0) {\n                  iVar15 = 0;\n                }\n                else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  iVar15 = 0;\n                }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" (else "else") (compound_statement "{\n                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (expression_statement "iVar15 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar15 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar15") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (} "}")))) (expression_statement "iVar15 = local_c4 + local_100 + iVar15;" (assignment_expression "iVar15 = local_c4 + local_100 + iVar15" (identifier "iVar15") (= "=") (binary_expression "local_c4 + local_100 + iVar15" (binary_expression "local_c4 + local_100" (identifier "local_c4") (+ "+") (identifier "local_100")) (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "piVar30 = (int *)param_1[10];" (assignment_expression "piVar30 = (int *)param_1[10]" (identifier "piVar30") (= "=") (cast_expression "(int *)param_1[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "iVar21 = (int)piVar30 + 1;" (assignment_expression "iVar21 = (int)piVar30 + 1" (identifier "iVar21") (= "=") (binary_expression "(int)piVar30 + 1" (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[10] = iVar21;" (assignment_expression "param_1[10] = iVar21" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (local_e0 == 0) {\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }\n                else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" (if "if") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);\n                  local_f0 = iVar13;\n                }" ({ "{") (expression_statement "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);" (assignment_expression "iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21)" (identifier "iVar13") (= "=") (call_expression "FUN_000315c0(iVar15,0,iVar21,iVar21)" (identifier "FUN_000315c0") (argument_list "(iVar15,0,iVar21,iVar21)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") (, ",") (identifier "iVar21") (, ",") (identifier "iVar21") () ")")))) (; ";")) (expression_statement "local_f0 = iVar13;" (assignment_expression "local_f0 = iVar13" (identifier "local_f0") (= "=") (identifier "iVar13")) (; ";")) (} "}")) (else_clause "else {\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" (else "else") (compound_statement "{\n                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);\n                  local_f0 = FUN_000315c0(iVar15,0);\n                  iVar13 = FUN_0004b310();\n                  if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21)" (identifier "FUN_000315c0") (argument_list "(iVar27,iVar13 + local_c4,iVar21,iVar21)" (( "(") (identifier "iVar27") (, ",") (binary_expression "iVar13 + local_c4" (identifier "iVar13") (+ "+") (identifier "local_c4")) (, ",") (identifier "iVar21") (, ",") (identifier "iVar21") () ")"))) (; ";")) (expression_statement "local_f0 = FUN_000315c0(iVar15,0);" (assignment_expression "local_f0 = FUN_000315c0(iVar15,0)" (identifier "local_f0") (= "=") (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar13 = FUN_0004b310();" (assignment_expression "iVar13 = FUN_0004b310()" (identifier "iVar13") (= "=") (call_expression "FUN_0004b310()" (identifier "FUN_0004b310") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) {\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    *(short *)(iVar13 + 8) = (short)iVar15;\n                    iVar13 = FUN_0002b210();\n                  }" ({ "{") (expression_statement "*(short *)(iVar13 + 8) = (short)iVar15;" (assignment_expression "*(short *)(iVar13 + 8) = (short)iVar15" (pointer_expression "*(short *)(iVar13 + 8)" (* "*") (cast_expression "(short *)(iVar13 + 8)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 8)" (( "(") (binary_expression "iVar13 + 8" (identifier "iVar13") (+ "+") (number_literal "8")) () ")")))) (= "=") (cast_expression "(short)iVar15" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar15"))) (; ";")) (expression_statement "iVar13 = FUN_0002b210();" (assignment_expression "iVar13 = FUN_0002b210()" (identifier "iVar13") (= "=") (call_expression "FUN_0002b210()" (identifier "FUN_0002b210") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_100 == 0) goto LAB_00093044;" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00093044;" (goto "goto") (statement_identifier "LAB_00093044") (; ";"))) (expression_statement "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);" (call_expression "FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13)" (identifier "FUN_0001addf") (argument_list "(extraout_ECX,extraout_EDX,param_2,iVar13)" (( "(") (identifier "extraout_ECX") (, ",") (identifier "extraout_EDX") (, ",") (identifier "param_2") (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "iVar15 = extraout_ECX_19;" (assignment_expression "iVar15 = extraout_ECX_19" (identifier "iVar15") (= "=") (identifier "extraout_ECX_19")) (; ";")) (expression_statement "uVar25 = extraout_EDX_08;" (assignment_expression "uVar25 = extraout_EDX_08" (identifier "uVar25") (= "=") (identifier "extraout_EDX_08")) (; ";")) (if_statement "if (piVar20 != (int *)0x0) {\n                  local_dc = piVar30;\n                }" (if "if") (parenthesized_expression "(piVar20 != (int *)0x0)" (( "(") (binary_expression "piVar20 != (int *)0x0" (identifier "piVar20") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_dc = piVar30;\n                }" ({ "{") (expression_statement "local_dc = piVar30;" (assignment_expression "local_dc = piVar30" (identifier "local_dc") (= "=") (identifier "piVar30")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (local_100 == 0) goto LAB_00091ee2;" (else "else") (if_statement "if (local_100 == 0) goto LAB_00091ee2;" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091ee2;" (goto "goto") (statement_identifier "LAB_00091ee2") (; ";"))))) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" (identifier "bVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar30 = (int *)param_1[0x1d];" (assignment_expression "piVar30 = (int *)param_1[0x1d]" (identifier "piVar30") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                piVar30 = param_1;\n              }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                piVar30 = param_1;\n              }" ({ "{") (expression_statement "piVar30 = param_1;" (assignment_expression "piVar30 = param_1" (identifier "piVar30") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar30 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar30 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar30 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar30 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar30 + 5)" (( "(") (binary_expression "piVar30 + 5" (identifier "piVar30") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_98 = (int *)iVar27;" (assignment_expression "local_98 = (int *)iVar27" (identifier "local_98") (= "=") (cast_expression "(int *)iVar27" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar27"))) (; ";")) (labeled_statement "LAB_0009244d:\n              uVar32 = CONCAT44(uVar25,iVar29);" (statement_identifier "LAB_0009244d") (: ":") (expression_statement "uVar32 = CONCAT44(uVar25,iVar29);" (assignment_expression "uVar32 = CONCAT44(uVar25,iVar29)" (identifier "uVar32") (= "=") (call_expression "CONCAT44(uVar25,iVar29)" (identifier "CONCAT44") (argument_list "(uVar25,iVar29)" (( "(") (identifier "uVar25") (, ",") (identifier "iVar29") () ")")))) (; ";"))) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar30 = param_4;" (assignment_expression "piVar30 = param_4" (identifier "piVar30") (= "=") (identifier "param_4")) (; ";")) (expression_statement "iVar13 = iVar27;" (assignment_expression "iVar13 = iVar27" (identifier "iVar13") (= "=") (identifier "iVar27")) (; ";")) (expression_statement "local_f0 = iVar29;" (assignment_expression "local_f0 = iVar29" (identifier "local_f0") (= "=") (identifier "iVar29")) (; ";")) (if_statement "if (param_4 == (int *)0x0) goto LAB_0009314f;" (if "if") (parenthesized_expression "(param_4 == (int *)0x0)" (( "(") (binary_expression "param_4 == (int *)0x0" (identifier "param_4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009314f;" (goto "goto") (statement_identifier "LAB_0009314f") (; ";"))) (labeled_statement "LAB_0009246c:\n              if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" (statement_identifier "LAB_0009246c") (: ":") (if_statement "if (cVar1 != '\0') {\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }\n                FUN_000315c0(0,0,piVar30,piVar30);\n              }" ({ "{") (if_statement "if (local_100 == 0) {\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }\n                else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }\n                }" ({ "{") (labeled_statement "LAB_0009247e:\n                  if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" (statement_identifier "LAB_0009247e") (: ":") (if_statement "if (param_1[2] != 0) {\n                    FUN_00077ad0();\n                  }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_00077ad0();\n                  }" ({ "{") (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" (identifier "FUN_00077ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" (else "else") (compound_statement "{\nLAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);\n                }" ({ "{") (labeled_statement "LAB_0009342d:\n                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" (statement_identifier "LAB_0009342d") (: ":") (expression_statement "FUN_000315c0(local_ac,local_d4,iVar29,iVar29);" (call_expression "FUN_000315c0(local_ac,local_d4,iVar29,iVar29)" (identifier "FUN_000315c0") (argument_list "(local_ac,local_d4,iVar29,iVar29)" (( "(") (identifier "local_ac") (, ",") (identifier "local_d4") (, ",") (identifier "iVar29") (, ",") (identifier "iVar29") () ")"))) (; ";"))) (} "}")))) (expression_statement "FUN_000315c0(0,0,piVar30,piVar30);" (call_expression "FUN_000315c0(0,0,piVar30,piVar30)" (identifier "FUN_000315c0") (argument_list "(0,0,piVar30,piVar30)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000924ae:\n            if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" (statement_identifier "LAB_000924ae") (: ":") (if_statement "if ((local_6e != '\0') || (bVar31)) {\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }\n            else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" (if "if") (parenthesized_expression "((local_6e != '\0') || (bVar31))" (( "(") (binary_expression "(local_6e != '\0') || (bVar31)" (parenthesized_expression "(local_6e != '\0')" (( "(") (binary_expression "local_6e != '\0'" (identifier "local_6e") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")"))) () ")")) (compound_statement "{\n              local_c8 = 0;\n              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }\nLAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }\n              if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }\n            }" ({ "{") (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" (identifier "local_c8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {\n                local_c8 = FUN_00017857();\n              }" (if "if") (parenthesized_expression "((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0))" (( "(") (binary_expression "(iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" (( "(") (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" (* "*") (cast_expression "(byte *)(*param_1 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x1d)" (( "(") (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                local_c8 = FUN_00017857();\n              }" ({ "{") (expression_statement "local_c8 = FUN_00017857();" (assignment_expression "local_c8 = FUN_00017857()" (identifier "local_c8") (= "=") (call_expression "FUN_00017857()" (identifier "FUN_00017857") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_000924dd:\n              uVar25 = FUN_00096110(0,3,piVar8,param_3);" (statement_identifier "LAB_000924dd") (: ":") (expression_statement "uVar25 = FUN_00096110(0,3,piVar8,param_3);" (assignment_expression "uVar25 = FUN_00096110(0,3,piVar8,param_3)" (identifier "uVar25") (= "=") (call_expression "FUN_00096110(0,3,piVar8,param_3)" (identifier "FUN_00096110") (argument_list "(0,3,piVar8,param_3)" (( "(") (number_literal "0") (, ",") (number_literal "3") (, ",") (identifier "piVar8") (, ",") (identifier "param_3") () ")")))) (; ";"))) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" (identifier "piVar16") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" (if "if") (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" (( "(") (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" (number_literal "0") (< "<") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);\n              }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                } while (iVar27 < (int)piVar16);" (do "do") (compound_statement "{\n                  sVar7 = (short)iVar27;\n                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }\n                  if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                  iVar27 = iVar27 + 1;\n                }" ({ "{") (expression_statement "sVar7 = (short)iVar27;" (assignment_expression "sVar7 = (short)iVar27" (identifier "sVar7") (= "=") (cast_expression "(short)iVar27" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar27"))) (; ";")) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {\n                    sVar7 = FUN_0002a110();\n                  }" (if "if") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x20) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x20" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    sVar7 = FUN_0002a110();\n                  }" ({ "{") (expression_statement "sVar7 = FUN_0002a110();" (assignment_expression "sVar7 = FUN_0002a110()" (identifier "sVar7") (= "=") (call_expression "FUN_0002a110()" (identifier "FUN_0002a110") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))\n                  {\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }\n                  else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" (if "if") (parenthesized_expression "(((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))" (( "(") (binary_expression "((uVar25 | local_c8) == 0xffffffff) ||\n                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" (parenthesized_expression "((uVar25 | local_c8) == 0xffffffff)" (( "(") (binary_expression "(uVar25 | local_c8) == 0xffffffff" (parenthesized_expression "(uVar25 | local_c8)" (( "(") (binary_expression "uVar25 | local_c8" (identifier "uVar25") (| "|") (identifier "local_c8")) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (|| "||") (parenthesized_expression "(((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)))" (( "(") (parenthesized_expression "((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))" (( "(") (binary_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))\n                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" (parenthesized_expression "(iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))" (( "(") (binary_expression "iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" (binary_expression "iVar27 < 0x20" (identifier "iVar27") (< "<") (number_literal "0x20")) (&& "&&") (parenthesized_expression "(((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0)" (( "(") (binary_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0" (parenthesized_expression "((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f))" (( "(") (binary_expression "(uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)" (parenthesized_expression "(uVar25 | local_c8)" (( "(") (binary_expression "uVar25 | local_c8" (identifier "uVar25") (| "|") (identifier "local_c8")) () ")")) (& "&") (binary_expression "1 << ((byte)iVar27 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)iVar27 & 0x1f)" (( "(") (binary_expression "(byte)iVar27 & 0x1f" (cast_expression "(byte)iVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar27")) (& "&") (number_literal "0x1f")) () ")")))) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0)" (( "(") (comma_expression "iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0" (assignment_expression "iVar9 = piVar8[1] + iVar27 * 0x14" (identifier "iVar9") (= "=") (binary_expression "piVar8[1] + iVar27 * 0x14" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar27 * 0x14" (identifier "iVar27") (* "*") (number_literal "0x14")))) (, ",") (binary_expression "(*(byte *)(iVar9 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 1)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x10) & 1" (pointer_expression "*(byte *)(iVar9 + 0x10)" (* "*") (cast_expression "(byte *)(iVar9 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                    FUN_00077cb0(iVar27,sVar7 + local_74);\n                  }" ({ "{") (expression_statement "FUN_00077cb0(iVar27,sVar7 + local_74);" (call_expression "FUN_00077cb0(iVar27,sVar7 + local_74)" (identifier "FUN_00077cb0") (argument_list "(iVar27,sVar7 + local_74)" (( "(") (identifier "iVar27") (, ",") (binary_expression "sVar7 + local_74" (identifier "sVar7") (+ "+") (identifier "local_74")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" (else "else") (compound_statement "{\n                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);\n                  }" ({ "{") (expression_statement "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);" (call_expression "FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9)" (identifier "FUN_000315c0") (argument_list "(sVar7 + local_74,0,iVar9,iVar9)" (( "(") (binary_expression "sVar7 + local_74" (identifier "sVar7") (+ "+") (identifier "local_74")) (, ",") (number_literal "0") (, ",") (identifier "iVar9") (, ",") (identifier "iVar9") () ")"))) (; ";")) (} "}")))) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar16") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 < (int)piVar16)" (( "(") (binary_expression "iVar27 < (int)piVar16" (identifier "iVar27") (< "<") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((cVar1 == '\0') && (local_e0 == 0)) {\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" (if "if") (parenthesized_expression "((cVar1 == '\0') && (local_e0 == 0))" (( "(") (binary_expression "(cVar1 == '\0') && (local_e0 == 0)" (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                FUN_000315c0(local_d4,0,piVar16,piVar16);\n              }" ({ "{") (expression_statement "FUN_000315c0(local_d4,0,piVar16,piVar16);" (call_expression "FUN_000315c0(local_d4,0,piVar16,piVar16)" (identifier "FUN_000315c0") (argument_list "(local_d4,0,piVar16,piVar16)" (( "(") (identifier "local_d4") (, ",") (number_literal "0") (, ",") (identifier "piVar16") (, ",") (identifier "piVar16") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" (else "else") (compound_statement "{\n              local_c8 = 0;\n              if (iVar9 != 0) goto LAB_000924dd;\n            }" ({ "{") (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" (identifier "local_c8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_000924dd;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000924dd;" (goto "goto") (statement_identifier "LAB_000924dd") (; ";"))) (} "}"))))) (expression_statement "piVar30 = piVar8;" (assignment_expression "piVar30 = piVar8" (identifier "piVar30") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);" (assignment_expression "piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3)" (identifier "piVar17") (= "=") (cast_expression "(int *)FUN_00096110(1,1,piVar8,param_3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00096110(1,1,piVar8,param_3)" (identifier "FUN_00096110") (argument_list "(1,1,piVar8,param_3)" (( "(") (number_literal "1") (, ",") (number_literal "1") (, ",") (identifier "piVar8") (, ",") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" (identifier "piVar16") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (0 < (int)piVar18) {\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" (if "if") (parenthesized_expression "(0 < (int)piVar18)" (( "(") (binary_expression "0 < (int)piVar18" (number_literal "0") (< "<") (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18"))) () ")")) (compound_statement "{\n              piVar16 = (int *)0x0;\n              iVar27 = local_94;\n              do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);\n            }" ({ "{") (expression_statement "piVar16 = (int *)0x0;" (assignment_expression "piVar16 = (int *)0x0" (identifier "piVar16") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar27 = local_94;" (assignment_expression "iVar27 = local_94" (identifier "iVar27") (= "=") (identifier "local_94")) (; ";")) (do_statement "do {\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              } while ((int)piVar16 < (int)piVar18);" (do "do") (compound_statement "{\n                if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }\n                piVar16 = (int *)((int)piVar16 + 1);\n                iVar27 = iVar27 + 1;\n              }" ({ "{") (if_statement "if ((int *)(int)(short)piVar8[10] == piVar16) {\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" (if "if") (parenthesized_expression "((int *)(int)(short)piVar8[10] == piVar16)" (( "(") (binary_expression "(int *)(int)(short)piVar8[10] == piVar16" (cast_expression "(int *)(int)(short)piVar8[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(short)piVar8[10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)piVar8[10]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "piVar8[10]" (identifier "piVar8") ([ "[") (number_literal "10") (] "]"))))) (== "==") (identifier "piVar16")) () ")")) (compound_statement "{\nLAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);\n                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (labeled_statement "LAB_000926a2:\n                  FUN_000315c0(iVar27,0,piVar30);" (statement_identifier "LAB_000926a2") (: ":") (expression_statement "FUN_000315c0(iVar27,0,piVar30);" (call_expression "FUN_000315c0(iVar27,0,piVar30)" (identifier "FUN_000315c0") (argument_list "(iVar27,0,piVar30)" (( "(") (identifier "iVar27") (, ",") (number_literal "0") (, ",") (identifier "piVar30") () ")"))) (; ";"))) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (} "}")) (else_clause "else {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" (else "else") (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }\n                }" ({ "{") (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (* "*") (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (( "(") (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]"))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" (if "if") (parenthesized_expression "((uVar2 & 0x60) == 0)" (( "(") (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" (( "(") (binary_expression "uVar2 & 0x60" (identifier "uVar2") (& "&") (number_literal "0x60")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" ({ "{") (if_statement "if ((int)puVar11[(int)piVar16] < 0) {\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }\n                    else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" (if "if") (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" (( "(") (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar11[(int)piVar16]" (identifier "puVar11") ([ "[") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (] "]"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      piVar19 = piVar18;\n                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;\n                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);\n                      bVar6 = 0;\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      piVar30 = piVar19;\n                    }" ({ "{") (expression_statement "piVar19 = piVar18;" (assignment_expression "piVar19 = piVar18" (identifier "piVar19") (= "=") (identifier "piVar18")) (; ";")) (if_statement "if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))\n                      goto LAB_000926a2;" (if "if") (parenthesized_expression "((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))" (( "(") (binary_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&\n                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" (parenthesized_expression "(((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20))" (( "(") (binary_expression "((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)" (parenthesized_expression "((local_50[0] & 1) != 0)" (( "(") (binary_expression "(local_50[0] & 1) != 0" (parenthesized_expression "(local_50[0] & 1)" (( "(") (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((int)piVar16 < 0x20)" (( "(") (binary_expression "(int)piVar16 < 0x20" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (< "<") (number_literal "0x20")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0)" (( "(") (comma_expression "piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (assignment_expression "piVar19 = piVar17" (identifier "piVar19") (= "=") (identifier "piVar17")) (, ",") (binary_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1)" (( "(") (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1" (binary_expression "(uint)piVar17 >> ((uint)piVar16 & 0x1f)" (cast_expression "(uint)piVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar17")) (>> ">>") (parenthesized_expression "((uint)piVar16 & 0x1f)" (( "(") (binary_expression "(uint)piVar16 & 0x1f" (cast_expression "(uint)piVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar16")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000926a2;" (goto "goto") (statement_identifier "LAB_000926a2") (; ";"))) (expression_statement "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);" (call_expression "FUN_00077cb0(piVar16,iVar27,piVar19,piVar19)" (identifier "FUN_00077cb0") (argument_list "(piVar16,iVar27,piVar19,piVar19)" (( "(") (identifier "piVar16") (, ",") (identifier "iVar27") (, ",") (identifier "piVar19") (, ",") (identifier "piVar19") () ")"))) (; ";")) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" (identifier "bVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (expression_statement "piVar30 = piVar19;" (assignment_expression "piVar30 = piVar19" (identifier "piVar30") (= "=") (identifier "piVar19")) (; ";")) (} "}")) (else_clause "else if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" (else "else") (if_statement "if (local_100 == 0) {\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }\n                    else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" (if "if") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }\n                    }" ({ "{") (if_statement "if (param_1[2] != 0) {\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        FUN_00077ad0();\n                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                      }" ({ "{") (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" (identifier "FUN_00077ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" (else "else") (compound_statement "{\n                      if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }\n                      piVar30 = piVar20;\n                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);\n                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                    }" ({ "{") (if_statement "if (piVar20 == (int *)0x0) {\n                        piVar18 = (int *)(int)local_a4;\n                      }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                        piVar18 = (int *)(int)local_a4;\n                      }" ({ "{") (expression_statement "piVar18 = (int *)(int)local_a4;" (assignment_expression "piVar18 = (int *)(int)local_a4" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)local_a4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4")))) (; ";")) (} "}"))) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" (identifier "piVar30") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);" (call_expression "FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" (identifier "FUN_000315c0") (argument_list "(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20)" (( "(") (binary_expression "puVar11[(int)piVar16] + (int)piVar18" (subscript_expression "puVar11[(int)piVar16]" (identifier "puVar11") ([ "[") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (] "]")) (+ "+") (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18"))) (, ",") (identifier "iVar27") (, ",") (identifier "piVar20") (, ",") (identifier "piVar20") () ")"))) (; ";")) (expression_statement "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar18") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" (else "else") (compound_statement "{\n                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);\n                  }" ({ "{") (expression_statement "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);" (assignment_expression "iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" (identifier "iVar27") (= "=") (binary_expression "iVar27 + -1 + (uint)((uVar2 & 0x20) == 0)" (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)((uVar2 & 0x20) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar2 & 0x20) == 0)" (( "(") (binary_expression "(uVar2 & 0x20) == 0" (parenthesized_expression "(uVar2 & 0x20)" (( "(") (binary_expression "uVar2 & 0x20" (identifier "uVar2") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (} "}")))) (} "}")))) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" (identifier "piVar16") (= "=") (cast_expression "(int *)((int)piVar16 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 + 1)" (( "(") (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)piVar16 < (int)piVar18)" (( "(") (binary_expression "(int)piVar16 < (int)piVar18" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (< "<") (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n              FUN_00018629();\n            }" (if "if") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00018629();\n            }" ({ "{") (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" (identifier "FUN_00018629") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((local_50[0] & 1) == 0) {\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }\n            else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" (if "if") (parenthesized_expression "((local_50[0] & 1) == 0)" (( "(") (binary_expression "(local_50[0] & 1) == 0" (parenthesized_expression "(local_50[0] & 1)" (( "(") (binary_expression "local_50[0] & 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }\n            }" ({ "{") (if_statement "if (piVar20 == (int *)0x0) {\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);\n                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);\n                bVar31 = bVar26 != 0;\n                piVar16 = (int *)(uint)bVar31;\n                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }\n                if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }\n                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);\n                piVar20 = extraout_ECX_07;\n                if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }\n                if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }\n                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);\n                if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }\n              }" ({ "{") (labeled_statement "LAB_00092d63:\n                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" (statement_identifier "LAB_00092d63") (: ":") (expression_statement "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);" (assignment_expression "uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" (identifier "uVar32") (= "=") (call_expression "FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" (identifier "FUN_0001b7d8") (argument_list "(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,\n                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16)" (( "(") (identifier "local_dc") (, ",") (identifier "local_c0") (, ",") (identifier "local_d4") (, ",") (identifier "local_fc") (, ",") (identifier "piVar14") (, ",") (binary_expression "param_3 & 0xff" (identifier "param_3") (& "&") (number_literal "0xff")) (, ",") (identifier "local_f0") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "puVar11") (, ",") (number_literal "0") (, ",") (identifier "piVar16") (, ",") (identifier "piVar16") () ")")))) (; ";"))) (expression_statement "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20)" (identifier "uVar34") (= "=") (call_expression "(undefined4)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar31 = bVar26 != 0;" (assignment_expression "bVar31 = bVar26 != 0" (identifier "bVar31") (= "=") (binary_expression "bVar26 != 0" (identifier "bVar26") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "piVar16 = (int *)(uint)bVar31;" (assignment_expression "piVar16 = (int *)(uint)bVar31" (identifier "piVar16") (= "=") (cast_expression "(int *)(uint)bVar31" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar31" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar31")))) (; ";")) (if_statement "if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" (if "if") (parenthesized_expression "((local_4c != 0) || (piVar20 = piVar16, bVar31))" (( "(") (binary_expression "(local_4c != 0) || (piVar20 = piVar16, bVar31)" (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar20 = piVar16, bVar31)" (( "(") (comma_expression "piVar20 = piVar16, bVar31" (assignment_expression "piVar20 = piVar16" (identifier "piVar20") (= "=") (identifier "piVar16")) (, ",") (identifier "bVar31")) () ")"))) () ")")) (compound_statement "{\n                  if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }\n                }" ({ "{") (if_statement "if (local_e0 == 0) {\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }\n                  else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" (if "if") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                  }" ({ "{") (expression_statement "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (assignment_expression "piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" (identifier "piVar20") (= "=") (cast_expression "(int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(local_f0,local_fc,uVar34,uVar34)" (( "(") (identifier "local_f0") (, ",") (identifier "local_fc") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" (else "else") (compound_statement "{\n                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);\n                  }" ({ "{") (expression_statement "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);" (assignment_expression "piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" (identifier "piVar20") (= "=") (cast_expression "(int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06)" (identifier "FUN_000316b0") (argument_list "(local_f0,iVar13,local_c4,extraout_ECX_06)" (( "(") (identifier "local_f0") (, ",") (identifier "iVar13") (, ",") (identifier "local_c4") (, ",") (identifier "extraout_ECX_06") () ")"))))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (iVar10 != 0) {\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);\n                }" ({ "{") (expression_statement "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);" (assignment_expression "piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" (identifier "piVar20") (= "=") (cast_expression "(int *)FUN_0001b07a(0,puVar11,piVar14,piVar20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001b07a(0,puVar11,piVar14,piVar20)" (identifier "FUN_0001b07a") (argument_list "(0,puVar11,piVar14,piVar20)" (( "(") (number_literal "0") (, ",") (identifier "puVar11") (, ",") (identifier "piVar14") (, ",") (identifier "piVar20") () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);" (assignment_expression "uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" (identifier "uVar32") (= "=") (call_expression "FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20)" (identifier "FUN_0001a8f2") (argument_list "(local_c0,piVar23,0xffffffff,piVar20)" (( "(") (identifier "local_c0") (, ",") (identifier "piVar23") (, ",") (number_literal "0xffffffff") (, ",") (identifier "piVar20") () ")")))) (; ";")) (expression_statement "piVar20 = extraout_ECX_07;" (assignment_expression "piVar20 = extraout_ECX_07" (identifier "piVar20") (= "=") (identifier "extraout_ECX_07")) (; ";")) (if_statement "if (bVar6 != 0) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" (if "if") (parenthesized_expression "(bVar6 != 0)" (( "(") (binary_expression "bVar6 != 0" (identifier "bVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_08;\n                }" ({ "{") (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" (identifier "uVar32") (= "=") (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" (identifier "FUN_000315c0") (argument_list "(0,0,(int)uVar32,(int)uVar32)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) (, ",") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) () ")")))) (; ";")) (expression_statement "piVar20 = extraout_ECX_08;" (assignment_expression "piVar20 = extraout_ECX_08" (identifier "piVar20") (= "=") (identifier "extraout_ECX_08")) (; ";")) (} "}"))) (if_statement "if ((1 < iVar10) || (bVar31)) {\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" (if "if") (parenthesized_expression "((1 < iVar10) || (bVar31))" (( "(") (binary_expression "(1 < iVar10) || (bVar31)" (parenthesized_expression "(1 < iVar10)" (( "(") (binary_expression "1 < iVar10" (number_literal "1") (< "<") (identifier "iVar10")) () ")")) (|| "||") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")"))) () ")")) (compound_statement "{\n                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);\n                  piVar20 = extraout_ECX_09;\n                }" ({ "{") (expression_statement "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);" (assignment_expression "uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" (identifier "uVar32") (= "=") (call_expression "FUN_000315c0(0,0,(int)uVar32,(int)uVar32)" (identifier "FUN_000315c0") (argument_list "(0,0,(int)uVar32,(int)uVar32)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) (, ",") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) () ")")))) (; ";")) (expression_statement "piVar20 = extraout_ECX_09;" (assignment_expression "piVar20 = extraout_ECX_09" (identifier "piVar20") (= "=") (identifier "extraout_ECX_09")) (; ";")) (} "}"))) (expression_statement "piVar30 = (int *)((ulonglong)uVar32 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar32 >> 0x20)" (identifier "piVar30") (= "=") (cast_expression "(int *)((ulonglong)uVar32 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar32 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar32")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (iVar10 == 0) {\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }\n                else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                }" ({ "{") (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" (if "if") (parenthesized_expression "(local_e4 == 2)" (( "(") (binary_expression "local_e4 == 2" (identifier "local_e4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                    uVar34 = 6;\n                  }" ({ "{") (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" (identifier "uVar34") (= "=") (number_literal "6")) (; ";")) (} "}")) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" (else "else") (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar20;\n                  }" ({ "{") (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" (identifier "uVar34") (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar30 = piVar20;" (assignment_expression "piVar30 = piVar20" (identifier "piVar30") (= "=") (identifier "piVar20")) (; ";")) (} "}")))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" (identifier "FUN_00016ec8") (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" (( "(") (identifier "local_c0") (, ",") (identifier "local_d4") (, ",") (identifier "piVar23") (, ",") (identifier "uVar34") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" (else "else") (compound_statement "{\n                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);\n                  if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }\n                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);\n                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }\n                }" ({ "{") (expression_statement "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);" (assignment_expression "piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" (identifier "piVar30") (= "=") (cast_expression "(int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32)" (identifier "FUN_0001b07a") (argument_list "(local_d4,puVar11,piVar14,(int)uVar32)" (( "(") (identifier "local_d4") (, ",") (identifier "puVar11") (, ",") (identifier "piVar14") (, ",") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32")) () ")"))))) (; ";")) (if_statement "if (local_e4 == 2) {\n                    uVar34 = 6;\n                  }\n                  else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" (if "if") (parenthesized_expression "(local_e4 == 2)" (( "(") (binary_expression "local_e4 == 2" (identifier "local_e4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                    uVar34 = 6;\n                  }" ({ "{") (expression_statement "uVar34 = 6;" (assignment_expression "uVar34 = 6" (identifier "uVar34") (= "=") (number_literal "6")) (; ";")) (} "}")) (else_clause "else {\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" (else "else") (compound_statement "{\n                    uVar34 = 4;\n                    piVar30 = piVar16;\n                  }" ({ "{") (expression_statement "uVar34 = 4;" (assignment_expression "uVar34 = 4" (identifier "uVar34") (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" (identifier "piVar30") (= "=") (identifier "piVar16")) (; ";")) (} "}")))) (expression_statement "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);" (call_expression "FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" (identifier "FUN_00016ec8") (argument_list "(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30)" (( "(") (identifier "local_c0") (, ",") (identifier "local_d4") (, ",") (identifier "piVar23") (, ",") (identifier "uVar34") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")"))) (; ";")) (if_statement "if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" (if "if") (parenthesized_expression "((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(*param_1 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x1d) & 0x40)" (( "(") (binary_expression "*(byte *)(*param_1 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*param_1 + 0x1d)" (* "*") (cast_expression "(byte *)(*param_1 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x1d)" (( "(") (binary_expression "*param_1 + 0x1d" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);\n                    piVar30 = piVar14;\n                  }" ({ "{") (expression_statement "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);" (call_expression "FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1)" (identifier "FUN_0001cbe8") (argument_list "(local_fc,puVar11,piVar14,*param_1)" (( "(") (identifier "local_fc") (, ",") (identifier "puVar11") (, ",") (identifier "piVar14") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "piVar30 = piVar14;" (assignment_expression "piVar30 = piVar14" (identifier "piVar30") (= "=") (identifier "piVar14")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" (else "else") (compound_statement "{\n              piVar30 = (int *)FUN_00032360();\n              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;\n              piVar16 = piVar8;\n              if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }\n            }" ({ "{") (expression_statement "piVar30 = (int *)FUN_00032360();" (assignment_expression "piVar30 = (int *)FUN_00032360()" (identifier "piVar30") (= "=") (cast_expression "(int *)FUN_00032360()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00032360()" (identifier "FUN_00032360") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)\n              ;" (assignment_expression "uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" (identifier "uVar34") (= "=") (call_expression "FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" (identifier "FUN_00096280") (argument_list "(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)" (( "(") (identifier "extraout_ECX") (, ",") (number_literal "1") (, ",") (identifier "piVar8") (, ",") (identifier "local_fc") (, ",") (identifier "param_3") (, ",") (identifier "local_f0") (, ",") (identifier "piVar30") (, ",") (identifier "piVar30") () ")")))) (; ";")) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" (identifier "piVar16") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (piVar20 == (int *)0x0) {\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }\n                local_ec = local_94;\n                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }\n                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }\n                goto LAB_00092d63;\n              }" ({ "{") (if_statement "if (local_e0 == 0) {\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }\n                else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" (if "if") (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);\n                }" ({ "{") (expression_statement "FUN_000315c0(local_f0,local_fc,uVar34,uVar34);" (call_expression "FUN_000315c0(local_f0,local_fc,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(local_f0,local_fc,uVar34,uVar34)" (( "(") (identifier "local_f0") (, ",") (identifier "local_fc") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" (else "else") (compound_statement "{\n                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);\n                }" ({ "{") (expression_statement "FUN_000316b0(local_f0,iVar13,local_c4,uVar34);" (call_expression "FUN_000316b0(local_f0,iVar13,local_c4,uVar34)" (identifier "FUN_000316b0") (argument_list "(local_f0,iVar13,local_c4,uVar34)" (( "(") (identifier "local_f0") (, ",") (identifier "iVar13") (, ",") (identifier "local_c4") (, ",") (identifier "uVar34") () ")"))) (; ";")) (} "}")))) (expression_statement "local_ec = local_94;" (assignment_expression "local_ec = local_94" (identifier "local_ec") (= "=") (identifier "local_94")) (; ";")) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar27") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (for_statement "for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;\n                    piVar16 = (int *)((int)piVar16 + 1)) {\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" (for "for") (( "(") (assignment_expression "piVar16 = (int *)0x0" (identifier "piVar16") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (binary_expression "(int)piVar16 < iVar27" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (< "<") (identifier "iVar27")) (; ";") (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" (identifier "piVar16") (= "=") (cast_expression "(int *)((int)piVar16 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 + 1)" (( "(") (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "1")) () ")")))) () ")") (compound_statement "{\n                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);\n                  if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }\n                  local_ec = local_ec + 1;\n                }" ({ "{") (expression_statement "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);" (assignment_expression "uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (* "*") (cast_expression "(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 * 0x14 + piVar8[1] + 0x10)" (( "(") (binary_expression "(int)piVar16 * 0x14 + piVar8[1] + 0x10" (binary_expression "(int)piVar16 * 0x14 + piVar8[1]" (binary_expression "(int)piVar16 * 0x14" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]"))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((uVar2 & 0x60) == 0) {\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }\n                  else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" (if "if") (parenthesized_expression "((uVar2 & 0x60) == 0)" (( "(") (binary_expression "(uVar2 & 0x60) == 0" (parenthesized_expression "(uVar2 & 0x60)" (( "(") (binary_expression "uVar2 & 0x60" (identifier "uVar2") (& "&") (number_literal "0x60")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }\n                  }" ({ "{") (if_statement "if (((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])) {\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" (if "if") (parenthesized_expression "(((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10]))" (( "(") (binary_expression "((int)puVar11[(int)piVar16] < 0) &&\n                       (piVar16 != (int *)(int)(short)piVar8[10])" (parenthesized_expression "((int)puVar11[(int)piVar16] < 0)" (( "(") (binary_expression "(int)puVar11[(int)piVar16] < 0" (cast_expression "(int)puVar11[(int)piVar16]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar11[(int)piVar16]" (identifier "puVar11") ([ "[") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (] "]"))) (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar16 != (int *)(int)(short)piVar8[10])" (( "(") (binary_expression "piVar16 != (int *)(int)(short)piVar8[10]" (identifier "piVar16") (!= "!=") (cast_expression "(int *)(int)(short)piVar8[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(short)piVar8[10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)piVar8[10]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "piVar8[10]" (identifier "piVar8") ([ "[") (number_literal "10") (] "]")))))) () ")"))) () ")")) (compound_statement "{\n                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);\n                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);\n                    }" ({ "{") (expression_statement "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);" (call_expression "FUN_00077cb0(piVar16,local_ec,iVar27,iVar27)" (identifier "FUN_00077cb0") (argument_list "(piVar16,local_ec,iVar27,iVar27)" (( "(") (identifier "piVar16") (, ",") (identifier "local_ec") (, ",") (identifier "iVar27") (, ",") (identifier "iVar27") () ")"))) (; ";")) (expression_statement "iVar27 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar27 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar27") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" (else "else") (compound_statement "{\n                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);\n                  }" ({ "{") (expression_statement "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);" (assignment_expression "local_ec = local_ec - (uint)((uVar2 & 0x20) != 0)" (identifier "local_ec") (= "=") (binary_expression "local_ec - (uint)((uVar2 & 0x20) != 0)" (identifier "local_ec") (- "-") (call_expression "(uint)((uVar2 & 0x20) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar2 & 0x20) != 0)" (( "(") (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" (( "(") (binary_expression "uVar2 & 0x20" (identifier "uVar2") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_ec = local_ec + 1;" (assignment_expression "local_ec = local_ec + 1" (identifier "local_ec") (= "=") (binary_expression "local_ec + 1" (identifier "local_ec") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {\n                  FUN_00018629();\n                }" (if "if") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x60) != 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x60) != 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x60)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x60" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00018629();\n                }" ({ "{") (expression_statement "FUN_00018629();" (call_expression "FUN_00018629()" (identifier "FUN_00018629") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00092d63;" (goto "goto") (statement_identifier "LAB_00092d63") (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" (if "if") (parenthesized_expression "(local_9c != 0)" (( "(") (binary_expression "local_9c != 0" (identifier "local_9c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_000315c0(1,0,piVar16,piVar16);\n              piVar30 = piVar16;\n            }" ({ "{") (expression_statement "FUN_000315c0(1,0,piVar16,piVar16);" (call_expression "FUN_000315c0(1,0,piVar16,piVar16)" (identifier "FUN_000315c0") (argument_list "(1,0,piVar16,piVar16)" (( "(") (number_literal "1") (, ",") (number_literal "0") (, ",") (identifier "piVar16") (, ",") (identifier "piVar16") () ")"))) (; ";")) (expression_statement "piVar30 = piVar16;" (assignment_expression "piVar30 = piVar16" (identifier "piVar30") (= "=") (identifier "piVar16")) (; ";")) (} "}"))) (expression_statement "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);" (call_expression "FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" (identifier "FUN_00096280") (argument_list "(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30)" (( "(") (identifier "extraout_ECX") (, ",") (number_literal "2") (, ",") (identifier "piVar8") (, ",") (identifier "local_fc") (, ",") (identifier "param_3") (, ",") (identifier "local_f0") (, ",") (identifier "piVar30") () ")"))) (; ";")) (if_statement "if (local_e4 != 1) {\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" (if "if") (parenthesized_expression "(local_e4 != 1)" (( "(") (binary_expression "local_e4 != 1" (identifier "local_e4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n              if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }\n            }" ({ "{") (if_statement "if (local_e4 == 2) {\n                FUN_00031430();\n                FUN_00043f00();\n              }\n              else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" (if "if") (parenthesized_expression "(local_e4 == 2)" (( "(") (binary_expression "local_e4 == 2" (identifier "local_e4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                FUN_00031430();\n                FUN_00043f00();\n              }" ({ "{") (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" (identifier "FUN_00043f00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" (else "else") (if_statement "if ((local_e0 == 0) && (local_100 == 0)) {\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }\n              else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" (if "if") (parenthesized_expression "((local_e0 == 0) && (local_100 == 0))" (( "(") (binary_expression "(local_e0 == 0) && (local_100 == 0)" (parenthesized_expression "(local_e0 == 0)" (( "(") (binary_expression "local_e0 == 0" (identifier "local_e0") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_100 == 0)" (( "(") (binary_expression "local_100 == 0" (identifier "local_100") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);\n              }" ({ "{") (expression_statement "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);" (call_expression "FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04)" (identifier "FUN_000315c0") (argument_list "(local_f0,0,extraout_EDX_04,extraout_EDX_04)" (( "(") (identifier "local_f0") (, ",") (number_literal "0") (, ",") (identifier "extraout_EDX_04") (, ",") (identifier "extraout_EDX_04") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" (else "else") (compound_statement "{\n                FUN_00031430();\n                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);\n              }" ({ "{") (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);" (call_expression "FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05)" (identifier "FUN_000315c0") (argument_list "(local_8c,0,extraout_ECX_05,extraout_ECX_05)" (( "(") (identifier "local_8c") (, ",") (number_literal "0") (, ",") (identifier "extraout_ECX_05") (, ",") (identifier "extraout_ECX_05") () ")"))) (; ";")) (} "}")))))) (} "}"))) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {\n              FUN_00017af1();\n            }" (if "if") (parenthesized_expression "((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0))" (( "(") (binary_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)" (parenthesized_expression "(((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0))" (( "(") (binary_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&\n                (param_4 == (int *)0x0)" (parenthesized_expression "((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0))" (( "(") (binary_expression "(*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)" (parenthesized_expression "(*(char *)((int)param_1 + 0x12) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x12) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x12)" (* "*") (cast_expression "(char *)((int)param_1 + 0x12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x12)" (( "(") (binary_expression "(int)param_1 + 0x12" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x12")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[0x1e] == 0)" (( "(") (binary_expression "param_1[0x1e] == 0" (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_4 == (int *)0x0)" (( "(") (binary_expression "param_4 == (int *)0x0" (identifier "param_4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[0x1c] != 0)" (( "(") (binary_expression "param_1[0x1c] != 0" (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              FUN_00017af1();\n            }" ({ "{") (expression_statement "FUN_00017af1();" (call_expression "FUN_00017af1()" (identifier "FUN_00017af1") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_9c != 0) {\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" (if "if") (parenthesized_expression "(local_9c != 0)" (( "(") (binary_expression "local_9c != 0" (identifier "local_9c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_000315c0(1,0,local_9c,local_9c);\n              FUN_0002ee80();\n              iVar27 = *local_e8;\n              if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }\n            }" ({ "{") (expression_statement "FUN_000315c0(1,0,local_9c,local_9c);" (call_expression "FUN_000315c0(1,0,local_9c,local_9c)" (identifier "FUN_000315c0") (argument_list "(1,0,local_9c,local_9c)" (( "(") (number_literal "1") (, ",") (number_literal "0") (, ",") (identifier "local_9c") (, ",") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "FUN_0002ee80();" (call_expression "FUN_0002ee80()" (identifier "FUN_0002ee80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar27 = *local_e8;" (assignment_expression "iVar27 = *local_e8" (identifier "iVar27") (= "=") (pointer_expression "*local_e8" (* "*") (identifier "local_e8"))) (; ";")) (if_statement "if (*(char *)(iVar27 + 0x4d) == '\0') {\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" (if "if") (parenthesized_expression "(*(char *)(iVar27 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar27 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar27 + 0x4d)" (* "*") (cast_expression "(char *)(iVar27 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x4d)" (( "(") (binary_expression "iVar27 + 0x4d" (identifier "iVar27") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);\n              }" ({ "{") (expression_statement "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);" (call_expression "FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27)" (identifier "FUN_0004ab40") (argument_list "(unaff_EDI + 0x199ff,0,iVar27,iVar27)" (( "(") (binary_expression "unaff_EDI + 0x199ff" (identifier "unaff_EDI") (+ "+") (number_literal "0x199ff")) (, ",") (number_literal "0") (, ",") (identifier "iVar27") (, ",") (identifier "iVar27") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" (else "else") (compound_statement "{\n            piVar20 = (int *)param_1[2];\n            piVar16 = (int *)piVar8[0x10];\n            if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }\n            sVar7 = *(short *)((int)piVar8 + 0x2a);\n            iVar27 = sVar7 + 2;\n            iVar9 = param_1[10] + 1;\n            param_1[10] = iVar9;\n            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);\n            iVar10 = param_1[0xb];\n            iVar9 = iVar10 + 1;\n            iVar29 = iVar27 + iVar10;\n            param_1[0xb] = iVar29;\n            if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }\n            uVar34 = FUN_0002e240();\n            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);\n            FUN_00032090(0xfffffff4);\n            if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }\n            if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }\n            piVar8 = (int *)param_1[0x1d];\n            if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }\n            *(undefined1 *)((int)piVar8 + 0x15) = 1;\n            if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }\n          }" ({ "{") (expression_statement "piVar20 = (int *)param_1[2];" (assignment_expression "piVar20 = (int *)param_1[2]" (identifier "piVar20") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar16 = (int *)piVar8[0x10];" (assignment_expression "piVar16 = (int *)piVar8[0x10]" (identifier "piVar16") (= "=") (cast_expression "(int *)piVar8[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0x10]" (identifier "piVar8") ([ "[") (number_literal "0x10") (] "]")))) (; ";")) (if_statement "if (piVar16 != (int *)0x0) {\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" (if "if") (parenthesized_expression "(piVar16 != (int *)0x0)" (( "(") (binary_expression "piVar16 != (int *)0x0" (identifier "piVar16") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar27 = *piVar16;\n              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }\n            }" ({ "{") (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" (identifier "iVar27") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (while_statement "while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {\n                iVar27 = *piVar16;\n              }" (while "while") (parenthesized_expression "((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)))" (( "(") (parenthesized_expression "(iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))" (( "(") (binary_expression "iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" (binary_expression "iVar27 != *param_1" (identifier "iVar27") (!= "!=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (&& "&&") (parenthesized_expression "(piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0)" (( "(") (comma_expression "piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0" (assignment_expression "piVar16 = (int *)piVar16[6]" (identifier "piVar16") (= "=") (cast_expression "(int *)piVar16[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")))) (, ",") (binary_expression "piVar16 != (int *)0x0" (identifier "piVar16") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) () ")")) (compound_statement "{\n                iVar27 = *piVar16;\n              }" ({ "{") (expression_statement "iVar27 = *piVar16;" (assignment_expression "iVar27 = *piVar16" (identifier "iVar27") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "sVar7 = *(short *)((int)piVar8 + 0x2a);" (assignment_expression "sVar7 = *(short *)((int)piVar8 + 0x2a)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "iVar27 = sVar7 + 2;" (assignment_expression "iVar27 = sVar7 + 2" (identifier "iVar27") (= "=") (binary_expression "sVar7 + 2" (identifier "sVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar9 = param_1[10] + 1;" (assignment_expression "iVar9 = param_1[10] + 1" (identifier "iVar9") (= "=") (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[10] = iVar9;" (assignment_expression "param_1[10] = iVar9" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);" (assignment_expression "local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9)" (identifier "local_f8") (= "=") (call_expression "FUN_000315c0(iVar27,0,iVar9,iVar9)" (identifier "FUN_000315c0") (argument_list "(iVar27,0,iVar9,iVar9)" (( "(") (identifier "iVar27") (, ",") (number_literal "0") (, ",") (identifier "iVar9") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar10 = param_1[0xb];" (assignment_expression "iVar10 = param_1[0xb]" (identifier "iVar10") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar9 = iVar10 + 1;" (assignment_expression "iVar9 = iVar10 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar29 = iVar27 + iVar10;" (assignment_expression "iVar29 = iVar27 + iVar10" (identifier "iVar29") (= "=") (binary_expression "iVar27 + iVar10" (identifier "iVar27") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "param_1[0xb] = iVar29;" (assignment_expression "param_1[0xb] = iVar29" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar29")) (; ";")) (if_statement "if (*extraout_EDX < 2) {\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }\n            else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" (if "if") (parenthesized_expression "(*extraout_EDX < 2)" (( "(") (binary_expression "*extraout_EDX < 2" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              iVar15 = iVar29 + 2;\n              param_1[0xb] = iVar15;\n              iVar13 = FUN_0007d3c0(0,0,4,0);\n              if (iVar13 == 0) goto LAB_00091be9;\n              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }\n              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }\n              cVar1 = *(char *)(iVar13 + 0x2e);\n              if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }\n              uVar34 = FUN_0002b350();\n              FUN_000315c0(0,0,uVar34,uVar34);\n            }" ({ "{") (expression_statement "iVar15 = iVar29 + 2;" (assignment_expression "iVar15 = iVar29 + 2" (identifier "iVar15") (= "=") (binary_expression "iVar29 + 2" (identifier "iVar29") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "param_1[0xb] = iVar15;" (assignment_expression "param_1[0xb] = iVar15" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "iVar13 = FUN_0007d3c0(0,0,4,0);" (assignment_expression "iVar13 = FUN_0007d3c0(0,0,4,0)" (identifier "iVar13") (= "=") (call_expression "FUN_0007d3c0(0,0,4,0)" (identifier "FUN_0007d3c0") (argument_list "(0,0,4,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "4") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_00091be9;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00091be9;" (goto "goto") (statement_identifier "LAB_00091be9") (; ";"))) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar21") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (for_statement "for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" (for "for") (( "(") (assignment_expression "iVar28 = 0" (identifier "iVar28") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar28 < iVar21" (identifier "iVar28") (< "<") (identifier "iVar21")) (; ";") (assignment_expression "iVar28 = iVar28 + 1" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n              }" ({ "{") (if_statement "if ((int)puVar11[iVar28] < 0) {\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" (if "if") (parenthesized_expression "((int)puVar11[iVar28] < 0)" (( "(") (binary_expression "(int)puVar11[iVar28] < 0" (cast_expression "(int)puVar11[iVar28]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar11[iVar28]" (identifier "puVar11") ([ "[") (identifier "iVar28") (] "]"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);\n                  if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);" (call_expression "FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" (identifier "FUN_000315c0") (argument_list "(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21)" (( "(") (identifier "iVar28") (, ",") (binary_expression "iVar10 + 3 + iVar28" (binary_expression "iVar10 + 3" (identifier "iVar10") (+ "+") (number_literal "3")) (+ "+") (identifier "iVar28")) (, ",") (identifier "iVar21") (, ",") (identifier "iVar21") () ")"))) (; ";")) (if_statement "if (0 < piVar20[0x1a]) {\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" (if "if") (parenthesized_expression "(0 < piVar20[0x1a])" (( "(") (binary_expression "0 < piVar20[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;\n                  }" ({ "{") (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (* "*") (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (( "(") (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar20[0x19]" (identifier "piVar20") ([ "[") (number_literal "0x19") (] "]"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar21") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (} "}")) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" (else "else") (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00077ad0();\n                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" (identifier "FUN_00077ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar21 = (int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar8 + 0x2a)" (identifier "iVar21") (= "=") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (} "}"))))) (} "}"))) (if_statement "if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }\n              else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" (if "if") (parenthesized_expression "((*(byte *)(piVar8 + 9) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(piVar8 + 9) & 0x80) == 0" (parenthesized_expression "(*(byte *)(piVar8 + 9) & 0x80)" (( "(") (binary_expression "*(byte *)(piVar8 + 9) & 0x80" (pointer_expression "*(byte *)(piVar8 + 9)" (* "*") (cast_expression "(byte *)(piVar8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 9)" (( "(") (binary_expression "piVar8 + 9" (identifier "piVar8") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);\n                if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }\n              }" ({ "{") (expression_statement "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);" (assignment_expression "uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8)" (identifier "uVar34") (= "=") (call_expression "FUN_000315c0(iVar9,0,piVar8,piVar8)" (identifier "FUN_000315c0") (argument_list "(iVar9,0,piVar8,piVar8)" (( "(") (identifier "iVar9") (, ",") (number_literal "0") (, ",") (identifier "piVar8") (, ",") (identifier "piVar8") () ")")))) (; ";")) (if_statement "if (local_b8 == 0) {\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }\n                else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar10 + 2,0,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(iVar10 + 2,0,uVar34,uVar34)" (( "(") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2")) (, ",") (number_literal "0") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" (else "else") (if_statement "if (param_1[2] != 0) {\n                  FUN_00077ad0();\n                }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00077ad0();\n                }" ({ "{") (expression_statement "FUN_00077ad0();" (call_expression "FUN_00077ad0()" (identifier "FUN_00077ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" (else "else") (compound_statement "{\n                iVar21 = piVar8[2];\n                while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }\n                psVar3 = *(short **)(iVar21 + 4);\n                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);\n                FUN_000315c0(iVar10 + 2,0);\n              }" ({ "{") (expression_statement "iVar21 = piVar8[2];" (assignment_expression "iVar21 = piVar8[2]" (identifier "iVar21") (= "=") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (while_statement "while( true ) {\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }\n                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;\n                  iVar21 = *(int *)(iVar21 + 0x14);\n                }" ({ "{") (if_statement "if (iVar21 == 0) {\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    pcVar4 = (code *)invalidInstructionException();\n                    (*pcVar4)();\n                  }" ({ "{") (expression_statement "pcVar4 = (code *)invalidInstructionException();" (assignment_expression "pcVar4 = (code *)invalidInstructionException()" (identifier "pcVar4") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*pcVar4)();" (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;" (if "if") (parenthesized_expression "((*(byte *)(iVar21 + 0x37) & 3) == 2)" (( "(") (binary_expression "(*(byte *)(iVar21 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar21 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar21 + 0x37) & 3" (pointer_expression "*(byte *)(iVar21 + 0x37)" (* "*") (cast_expression "(byte *)(iVar21 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x37)" (( "(") (binary_expression "iVar21 + 0x37" (identifier "iVar21") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar21 = *(int *)(iVar21 + 0x14);" (assignment_expression "iVar21 = *(int *)(iVar21 + 0x14)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(iVar21 + 0x14)" (* "*") (cast_expression "(int *)(iVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x14)" (( "(") (binary_expression "iVar21 + 0x14" (identifier "iVar21") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (expression_statement "psVar3 = *(short **)(iVar21 + 4);" (assignment_expression "psVar3 = *(short **)(iVar21 + 4)" (identifier "psVar3") (= "=") (pointer_expression "*(short **)(iVar21 + 4)" (* "*") (cast_expression "(short **)(iVar21 + 4)" (( "(") (type_descriptor "short **" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar21 + 4)" (( "(") (binary_expression "iVar21 + 4" (identifier "iVar21") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);" (call_expression "FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3)" (identifier "FUN_000315c0") (argument_list "((int)*psVar3,iVar9,psVar3,psVar3)" (( "(") (cast_expression "(int)*psVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*psVar3" (* "*") (identifier "psVar3"))) (, ",") (identifier "iVar9") (, ",") (identifier "psVar3") (, ",") (identifier "psVar3") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar10 + 2,0);" (call_expression "FUN_000315c0(iVar10 + 2,0)" (identifier "FUN_000315c0") (argument_list "(iVar10 + 2,0)" (( "(") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "cVar1 = *(char *)(iVar13 + 0x2e);" (assignment_expression "cVar1 = *(char *)(iVar13 + 0x2e)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar13 + 0x2e)" (* "*") (cast_expression "(char *)(iVar13 + 0x2e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x2e)" (( "(") (binary_expression "iVar13 + 0x2e" (identifier "iVar13") (+ "+") (number_literal "0x2e")) () ")"))))) (; ";")) (if_statement "if (cVar1 == '\0') {\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                piVar8 = (int *)param_1[0x1d];\n                if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }\n                *(undefined1 *)(piVar8 + 5) = 1;\n                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);\n                FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar29 + 1,iVar15);\n                goto LAB_000922b8;\n              }" ({ "{") (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" (identifier "piVar8") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                  piVar8 = param_1;\n                }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  piVar8 = param_1;\n                }" ({ "{") (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" (identifier "piVar8") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar8 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar8 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar8 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar8 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 5)" (( "(") (binary_expression "piVar8 + 5" (identifier "piVar8") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);" (call_expression "FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8)" (identifier "FUN_000315c0") (argument_list "(iVar27,iVar29 + 1,piVar8,piVar8)" (( "(") (identifier "iVar27") (, ",") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1")) (, ",") (identifier "piVar8") (, ",") (identifier "piVar8") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar29 + 1,iVar15);" (call_expression "FUN_000315c0(iVar29 + 1,iVar15)" (identifier "FUN_000315c0") (argument_list "(iVar29 + 1,iVar15)" (( "(") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1")) (, ",") (identifier "iVar15") () ")"))) (; ";")) (goto_statement "goto LAB_000922b8;" (goto "goto") (statement_identifier "LAB_000922b8") (; ";")) (} "}"))) (expression_statement "uVar34 = FUN_0002b350();" (assignment_expression "uVar34 = FUN_0002b350()" (identifier "uVar34") (= "=") (call_expression "FUN_0002b350()" (identifier "FUN_0002b350") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000315c0(0,0,uVar34,uVar34);" (call_expression "FUN_000315c0(0,0,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(0,0,uVar34,uVar34)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" (else "else") (compound_statement "{\n              if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }\n              iVar10 = FUN_000449c0();\n              piVar16 = piVar8;\n              if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }\n              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);\n              if (iVar10 != 0) {\n                FUN_000433a0();\n              }\nLAB_000922b8:\n              piVar8 = extraout_EDX;\n              if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }\n              piVar16 = piVar8;\n              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);\n              cVar1 = '\0';\n              if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }\n            }" ({ "{") (if_statement "if (local_b8 == 0) {\n                FUN_00047ba0(0);\n              }\n              else {\n                FUN_00052c60(0);\n              }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00047ba0(0);\n              }" ({ "{") (expression_statement "FUN_00047ba0(0);" (call_expression "FUN_00047ba0(0)" (identifier "FUN_00047ba0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                FUN_00052c60(0);\n              }" (else "else") (compound_statement "{\n                FUN_00052c60(0);\n              }" ({ "{") (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" (identifier "FUN_00052c60") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" (identifier "iVar10") (= "=") (call_expression "FUN_000449c0()" (identifier "FUN_000449c0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" (identifier "piVar16") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (0 < *(short *)((int)piVar8 + 0x2a)) {\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" (if "if") (parenthesized_expression "(0 < *(short *)((int)piVar8 + 0x2a))" (( "(") (binary_expression "0 < *(short *)((int)piVar8 + 0x2a)" (number_literal "0") (< "<") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);\n              }" ({ "{") (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" (identifier "iVar29") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                } while (iVar29 < (int)piVar16);" (do "do") (compound_statement "{\n                  if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }\n                  iVar29 = iVar29 + 1;\n                  iVar10 = FUN_000449c0();\n                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);\n                }" ({ "{") (if_statement "if ((int)puVar11[iVar29] < 0) {\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }\n                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" (if "if") (parenthesized_expression "((int)puVar11[iVar29] < 0)" (( "(") (binary_expression "(int)puVar11[iVar29] < 0" (cast_expression "(int)puVar11[iVar29]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar11[iVar29]" (identifier "puVar11") ([ "[") (identifier "iVar29") (] "]"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar10 = FUN_00047ba0(0);\n                    if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }\n                  }" ({ "{") (expression_statement "iVar10 = FUN_00047ba0(0);" (assignment_expression "iVar10 = FUN_00047ba0(0)" (identifier "iVar10") (= "=") (call_expression "FUN_00047ba0(0)" (identifier "FUN_00047ba0") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;\n                    }" ({ "{") (expression_statement "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1;" (assignment_expression "*(short *)(iVar10 + 0x20) = (short)iVar29 + 1" (pointer_expression "*(short *)(iVar10 + 0x20)" (* "*") (cast_expression "(short *)(iVar10 + 0x20)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x20)" (( "(") (binary_expression "iVar10 + 0x20" (identifier "iVar10") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "(short)iVar29 + 1" (cast_expression "(short)iVar29" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar29")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" (else "else") (if_statement "if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {\n                    FUN_00052c60(0);\n                  }" (if "if") (parenthesized_expression "(extraout_ECX[puVar11[iVar29] * 4 + 1] != 0)" (( "(") (binary_expression "extraout_ECX[puVar11[iVar29] * 4 + 1] != 0" (subscript_expression "extraout_ECX[puVar11[iVar29] * 4 + 1]" (identifier "extraout_ECX") ([ "[") (binary_expression "puVar11[iVar29] * 4 + 1" (binary_expression "puVar11[iVar29] * 4" (subscript_expression "puVar11[iVar29]" (identifier "puVar11") ([ "[") (identifier "iVar29") (] "]")) (* "*") (number_literal "4")) (+ "+") (number_literal "1")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_00052c60(0);\n                  }" ({ "{") (expression_statement "FUN_00052c60(0);" (call_expression "FUN_00052c60(0)" (identifier "FUN_00052c60") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}"))))) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" (identifier "iVar29") (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = FUN_000449c0();" (assignment_expression "iVar10 = FUN_000449c0()" (identifier "iVar10") (= "=") (call_expression "FUN_000449c0()" (identifier "FUN_000449c0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);" (assignment_expression "piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a)" (identifier "piVar16") (= "=") (cast_expression "(int *)(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar8 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar8 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x2a)" (( "(") (binary_expression "(int)piVar8 + 0x2a" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x2a")) () ")"))))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar29 < (int)piVar16)" (( "(") (binary_expression "iVar29 < (int)piVar16" (identifier "iVar29") (< "<") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16"))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);" (call_expression "FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16)" (identifier "FUN_0001addf") (argument_list "(iVar10,extraout_EDX,param_2,piVar16)" (( "(") (identifier "iVar10") (, ",") (identifier "extraout_EDX") (, ",") (identifier "param_2") (, ",") (identifier "piVar16") () ")"))) (; ";")) (if_statement "if (iVar10 != 0) {\n                FUN_000433a0();\n              }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_000433a0();\n              }" ({ "{") (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" (identifier "FUN_000433a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_000922b8:\n              piVar8 = extraout_EDX;" (statement_identifier "LAB_000922b8") (: ":") (expression_statement "piVar8 = extraout_EDX;" (assignment_expression "piVar8 = extraout_EDX" (identifier "piVar8") (= "=") (identifier "extraout_EDX")) (; ";"))) (if_statement "if (*extraout_EDX == 1) {\n                piVar8 = (int *)FUN_00043f00();\n              }" (if "if") (parenthesized_expression "(*extraout_EDX == 1)" (( "(") (binary_expression "*extraout_EDX == 1" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                piVar8 = (int *)FUN_00043f00();\n              }" ({ "{") (expression_statement "piVar8 = (int *)FUN_00043f00();" (assignment_expression "piVar8 = (int *)FUN_00043f00()" (identifier "piVar8") (= "=") (cast_expression "(int *)FUN_00043f00()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00043f00()" (identifier "FUN_00043f00") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar16 = piVar8;" (assignment_expression "piVar16 = piVar8" (identifier "piVar16") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "local_f8 = FUN_000315c0(0,0,piVar8,piVar8);" (assignment_expression "local_f8 = FUN_000315c0(0,0,piVar8,piVar8)" (identifier "local_f8") (= "=") (call_expression "FUN_000315c0(0,0,piVar8,piVar8)" (identifier "FUN_000315c0") (argument_list "(0,0,piVar8,piVar8)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar8") (, ",") (identifier "piVar8") () ")")))) (; ";")) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" (identifier "cVar1") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0 < iVar27) {\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" (if "if") (parenthesized_expression "(0 < iVar27)" (( "(") (binary_expression "0 < iVar27" (number_literal "0") (< "<") (identifier "iVar27")) () ")")) (compound_statement "{\n                iVar10 = 0;\n                do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);\n              }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                } while (iVar29 != sVar7 + 2);" (do "do") (compound_statement "{\n                  iVar29 = iVar10 + 1;\n                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);\n                  iVar10 = iVar29;\n                }" ({ "{") (expression_statement "iVar29 = iVar10 + 1;" (assignment_expression "iVar29 = iVar10 + 1" (identifier "iVar29") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);" (call_expression "FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16)" (identifier "FUN_000315c0") (argument_list "(iVar10,iVar9 + iVar10,piVar8,piVar16)" (( "(") (identifier "iVar10") (, ",") (binary_expression "iVar9 + iVar10" (identifier "iVar9") (+ "+") (identifier "iVar10")) (, ",") (identifier "piVar8") (, ",") (identifier "piVar16") () ")"))) (; ";")) (expression_statement "iVar10 = iVar29;" (assignment_expression "iVar10 = iVar29" (identifier "iVar10") (= "=") (identifier "iVar29")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar29 != sVar7 + 2)" (( "(") (binary_expression "iVar29 != sVar7 + 2" (identifier "iVar29") (!= "!=") (binary_expression "sVar7 + 2" (identifier "sVar7") (+ "+") (number_literal "2"))) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar34 = FUN_0002e240();" (assignment_expression "uVar34 = FUN_0002e240()" (identifier "uVar34") (= "=") (call_expression "FUN_0002e240()" (identifier "FUN_0002e240") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000315c0(iVar27,iVar9,uVar34,uVar34);" (call_expression "FUN_000315c0(iVar27,iVar9,uVar34,uVar34)" (identifier "FUN_000315c0") (argument_list "(iVar27,iVar9,uVar34,uVar34)" (( "(") (identifier "iVar27") (, ",") (identifier "iVar9") (, ",") (identifier "uVar34") (, ",") (identifier "uVar34") () ")"))) (; ";")) (expression_statement "FUN_00032090(0xfffffff4);" (call_expression "FUN_00032090(0xfffffff4)" (identifier "FUN_00032090") (argument_list "(0xfffffff4)" (( "(") (number_literal "0xfffffff4") () ")"))) (; ";")) (if_statement "if (param_3 == 0xb) {\n              param_3._0_2_ = 2;\n            }\n            else {\n            }" (if "if") (parenthesized_expression "(param_3 == 0xb)" (( "(") (binary_expression "param_3 == 0xb" (identifier "param_3") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n              param_3._0_2_ = 2;\n            }" ({ "{") (expression_statement "param_3._0_2_ = 2;" (assignment_expression "param_3._0_2_ = 2" (field_expression "param_3._0_2_" (identifier "param_3") (. ".") (field_identifier "_0_2_")) (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n            }" (else "else") (compound_statement "{\n            }" ({ "{") (} "}")))) (if_statement "if (0 < piVar20[0x1a]) {\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" (if "if") (parenthesized_expression "(0 < piVar20[0x1a])" (( "(") (binary_expression "0 < piVar20[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;\n            }" ({ "{") (expression_statement "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;" (assignment_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3" (pointer_expression "*(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (* "*") (cast_expression "(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12)" (( "(") (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12" (binary_expression "piVar20[0x1a] * 0x14 + piVar20[0x19]" (binary_expression "piVar20[0x1a] * 0x14" (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar20[0x19]" (identifier "piVar20") ([ "[") (number_literal "0x19") (] "]"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (cast_expression "(undefined2)param_3" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "param_3"))) (; ";")) (} "}"))) (expression_statement "piVar8 = (int *)param_1[0x1d];" (assignment_expression "piVar8 = (int *)param_1[0x1d]" (identifier "piVar8") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n              piVar8 = param_1;\n            }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              piVar8 = param_1;\n            }" ({ "{") (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" (identifier "piVar8") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)piVar8 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar8 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar8 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)piVar8 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x15)" (( "(") (binary_expression "(int)piVar8 + 0x15" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (cVar1 == '\0') {\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }\n            else {\n              FUN_00043f00();\n            }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              FUN_000315c0(local_f8 + 1,0,param_1,param_1);\n              if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }\n              iVar27 = unaff_EDI + 0x4e0b5;\n              if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }\n              *(int *)(iVar27 + 8) = piVar20[0x1a];\n              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);\n            }" ({ "{") (expression_statement "FUN_000315c0(local_f8 + 1,0,param_1,param_1);" (call_expression "FUN_000315c0(local_f8 + 1,0,param_1,param_1)" (identifier "FUN_000315c0") (argument_list "(local_f8 + 1,0,param_1,param_1)" (( "(") (binary_expression "local_f8 + 1" (identifier "local_f8") (+ "+") (number_literal "1")) (, ",") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (local_f8 < 0) {\n                local_f8 = piVar20[0x1a] + -1;\n              }" (if "if") (parenthesized_expression "(local_f8 < 0)" (( "(") (binary_expression "local_f8 < 0" (identifier "local_f8") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                local_f8 = piVar20[0x1a] + -1;\n              }" ({ "{") (expression_statement "local_f8 = piVar20[0x1a] + -1;" (assignment_expression "local_f8 = piVar20[0x1a] + -1" (identifier "local_f8") (= "=") (binary_expression "piVar20[0x1a] + -1" (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar27 = unaff_EDI + 0x4e0b5;" (assignment_expression "iVar27 = unaff_EDI + 0x4e0b5" (identifier "iVar27") (= "=") (binary_expression "unaff_EDI + 0x4e0b5" (identifier "unaff_EDI") (+ "+") (number_literal "0x4e0b5"))) (; ";")) (if_statement "if (*(char *)(*piVar20 + 0x4d) == '\0') {\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" (if "if") (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar20 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar20 + 0x4d)" (( "(") (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                iVar27 = local_f8 * 0x14 + piVar20[0x19];\n              }" ({ "{") (expression_statement "iVar27 = local_f8 * 0x14 + piVar20[0x19];" (assignment_expression "iVar27 = local_f8 * 0x14 + piVar20[0x19]" (identifier "iVar27") (= "=") (binary_expression "local_f8 * 0x14 + piVar20[0x19]" (binary_expression "local_f8 * 0x14" (identifier "local_f8") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar20[0x19]" (identifier "piVar20") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar27 + 8) = piVar20[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = piVar20[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" (* "*") (cast_expression "(int *)(iVar27 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 8)" (( "(") (binary_expression "iVar27 + 8" (identifier "iVar27") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar20[0x1a]" (identifier "piVar20") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);" (call_expression "FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" (identifier "FUN_000315c0") (argument_list "(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "unaff_EDI + 0x4cae5" (identifier "unaff_EDI") (+ "+") (number_literal "0x4cae5")) (, ",") (binary_expression "unaff_EDI + 0x4cae5" (identifier "unaff_EDI") (+ "+") (number_literal "0x4cae5")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n              FUN_00043f00();\n            }" (else "else") (compound_statement "{\n              FUN_00043f00();\n            }" ({ "{") (expression_statement "FUN_00043f00();" (call_expression "FUN_00043f00()" (identifier "FUN_00043f00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")))) (} "}"))) (labeled_statement "LAB_00091be9:\n        piVar8 = local_44;" (statement_identifier "LAB_00091be9") (: ":") (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" (identifier "piVar8") (= "=") (identifier "local_44")) (; ";"))) (if_statement "if (local_44 != (int *)0x0) {\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" (if "if") (parenthesized_expression "(local_44 != (int *)0x0)" (( "(") (binary_expression "local_44 != (int *)0x0" (identifier "local_44") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          local_44 = (int *)0x0;\n          piVar8[0x3d] = local_48;\n        }" ({ "{") (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" (identifier "local_44") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" (identifier "piVar8") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (identifier "local_48")) (; ";")) (} "}"))) (expression_statement "FUN_00024720();" (call_expression "FUN_00024720()" (identifier "FUN_00024720") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00091598;" (goto "goto") (statement_identifier "LAB_00091598") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "piVar8 = local_44;" (assignment_expression "piVar8 = local_44" (identifier "piVar8") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (local_44 != (int *)0x0) {\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" (if "if") (parenthesized_expression "(local_44 != (int *)0x0)" (( "(") (binary_expression "local_44 != (int *)0x0" (identifier "local_44") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_44 = (int *)0x0;\n    piVar8[0x3d] = local_48;\n  }" ({ "{") (expression_statement "local_44 = (int *)0x0;" (assignment_expression "local_44 = (int *)0x0" (identifier "local_44") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar8[0x3d] = local_48;" (assignment_expression "piVar8[0x3d] = local_48" (subscript_expression "piVar8[0x3d]" (identifier "piVar8") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (identifier "local_48")) (; ";")) (} "}"))) (labeled_statement "LAB_00091598:\n  FUN_00043120();" (statement_identifier "LAB_00091598") (: ":") (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" (identifier "FUN_00043120") (argument_list "()" (( "(") () ")"))) (; ";"))) (if_statement "if (extraout_ECX != (uint *)0x0) {\n    FUN_000433a0();\n  }" (if "if") (parenthesized_expression "(extraout_ECX != (uint *)0x0)" (( "(") (binary_expression "extraout_ECX != (uint *)0x0" (identifier "extraout_ECX") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_000433a0();\n  }" ({ "{") (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" (identifier "FUN_000433a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 != 0) {\n    FUN_000432e0();\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000432e0();\n  }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" (identifier "FUN_000a9ea0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00091b70:\n  iVar29 = iVar29 + 1;" (statement_identifier "LAB_00091b70") (: ":") (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" (identifier "iVar29") (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_fc = local_fc + 5;" (assignment_expression "local_fc = local_fc + 5" (identifier "local_fc") (= "=") (binary_expression "local_fc + 5" (identifier "local_fc") (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (iVar29 == iVar10) goto LAB_00091b82;" (if "if") (parenthesized_expression "(iVar29 == iVar10)" (( "(") (binary_expression "iVar29 == iVar10" (identifier "iVar29") (== "==") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_00091b82;" (goto "goto") (statement_identifier "LAB_00091b82") (; ";"))) (goto_statement "goto LAB_000918f0;" (goto "goto") (statement_identifier "LAB_000918f0") (; ";")) (} "}")))

void __regparm1
function_1(type_1 *pParse,type_2 *var_113,type_3 *var_40,type_4 *var_14,int onError,
             type_3 *pOrderBy,type_4 *pLimit,type_5 *pUpsert)

{
  char *__n;
  int *var_19;
  int var_115;
  type_6 var_54;
  type_7 var_30;
  short sVar4;
  type_8 *var_47;
  type_9 *var_96;
  type_10 *pcVar7;
  char var_36;
  type_11 var_84;
  short var_21;
  type_12 wctrlFlags;
  type_13 *var_4;
  type_14 *var_42;
  int var_8;
  int *var_17;
  int *var_22;
  int var_27;
  char *pcVar14;
  type_15 chngRowid;
  int var_98;
  type_4 *var_106;
  type_3 *var_107;
  type_16 *pOVar17;
  type_17 var_10;
  int p2;
  int var_100;
  type_18 *var_11;
  int *piVar21;
  type_1 *pPVar22;
  type_19 *var_69;
  type_20 *pOrderBy_00;
  type_3 *var_112;
  int p3;
  type_21 var_37;
  type_2 *pSrc;
  type_15 var_28;
  type_11 var_13;
  int var_77;
  int var_99;
  int var_29;
  int var_66;
  type_13 *pTVar30;
  type_13 *pTVar31;
  int var_32;
  int var_2;
  bool var_44;
  bool var_45;
  type_4 *pEVar34;
  char *zArg1;
  type_6 **dupFlags;
  char *pcVar35;
  type_6 **ppuVar36;
  type_4 *in_stack_fffffee4;
  int *in_stack_fffffee8;
  type_9 *var_97;
  type_9 *db;
  int var_25;
  type_13 *local_fc;
  type_19 *local_f8;
  type_19 *var_58;
  int var_89;
  type_20 *var_23;
  type_22 *var_95;
  type_18 *var_12;
  type_4 *var_62;
  type_4 *local_d8;
  type_13 *local_d4;
  type_15 var_76;
  int var_51;
  char *local_c0;
  type_4 *var_101;
  int local_ac;
  type_12 local_a4;
  int var_90;
  type_13 *var_53;
  int local_94;
  type_6 *var_18;
  type_13 *local_8c;
  int local_84;
  type_20 *var_61;
  type_4 *var_63;
  int var_46;
  char var_35;
  type_13 *local_68;
  type_4 *var_67;
  int var_78;
  int var_41;
  type_23 sContext;
  type_24 sNC;
  
  var_1();
  db = pParse->db;
  var_41 = 0;
  sContext.zAuthContext = (char *)0x0;
  sContext.pParse = (type_1 *)0x0;
  var_115 = *(int *)(var_2 + 0x14);
  if ((pParse->nErr != 0) || (db->mallocFailed != '\0')) goto LAB_00091598;
  var_4 = var_3(pParse,pSrc);
  if (var_4 != (type_13 *)0x0) {
    local_d4 = (type_13 *)0xffff8000;
    if (var_4->pSchema != (type_25 *)0x0) {
      local_d4 = (type_13 *)var_5(pParse->db,var_4->pSchema);
    }
    var_42 = var_6(pParse,var_4,0x7f,var_112,&var_78);
    var_47 = var_4->pSelect;
    var_25 = 0;
    if (1 < pSrc->nSrc) {
      var_25 = var_112->nExpr;
    }
    var_8 = var_7(pParse,var_4);
    if ((var_8 == 0) && (var_8 = var_9(pParse,var_4,var_78), var_8 == 0)) {
      pEVar34 = (type_4 *)pParse->nTab;
      local_c0 = &pEVar34->affExpr;
      var_10 = var_4->tabFlags;
      pParse->nTab = (int)local_c0;
      var_11 = var_4->pIndex;
      var_62 = pEVar34;
      if ((var_10 & 0x80) == 0) {
        var_12 = (type_18 *)0x0;
        if (var_11 == (type_18 *)0x0) goto LAB_00091c69;
LAB_00091707:
        var_106 = (type_4 *)local_c0;
        do {
          var_44 = var_12 == var_11;
          var_11 = var_11->pNext;
          if (var_44) {
            var_62 = var_106;
          }
          var_106 = (type_4 *)&var_106->affExpr;
          var_18 = (type_6 *)((int)var_106 + ~(type_15)pEVar34);
        } while (var_11 != (type_18 *)0x0);
        pParse->nTab = (int)var_106;
      }
      else {
        if (var_11 != (type_18 *)0x0) {
          var_13 = var_11->field_0x37;
          var_12 = var_11;
          while (((var_13 & 3) != 2 && (var_12 = var_12->pNext, var_12 != (type_18 *)0x0))) {
            var_13 = var_12->field_0x37;
          }
          goto LAB_00091707;
        }
LAB_00091c69:
        var_12 = (type_18 *)0x0;
        var_18 = (type_6 *)0x0;
      }
      if (var_14 != (type_4 *)0x0) {
        var_62 = (type_4 *)var_14->iTable;
        local_c0 = *(char **)&var_14->iColumn;
        pParse->nTab = (int)pEVar34;
      }
      pSrc->a[0].iCursor = (int)var_62;
      pcVar35 = (char *)0x91792;
      var_17 = (int *)var_15(db,var_16(in_stack_fffffee8,in_stack_fffffee4));
      if (var_17 != (int *)0x0) {
        var_19 = var_17 + var_4->nCol;
        __n = (char *)(var_18 + 1);
        piVar21 = var_19 + (int)__n;
        zArg1 = __n;
        var_20(piVar21,1,(size_t)__n);
        var_18[(int)piVar21 + 1] = '\0';
        var_21 = var_4->nCol;
        if (0 < var_21) {
          var_22 = var_17;
          do {
            *var_22 = -1;
            var_22 = var_22 + 1;
          } while (var_17 + var_21 != var_22);
        }
        sNC.pNext = (type_24 *)0x0;
        sNC.nRef = 0;
        sNC.nErr = 0;
        sNC.pWinSelect = (type_8 *)0x0;
        sNC.ncFlags = 0x200;
        sNC.uNC.pEList = (type_3 *)var_14;
        var_23 = (type_20 *)pParse->pVdbe;
        sNC.pParse = pParse;
        sNC.pSrcList = pSrc;
        if (var_23 == (type_20 *)0x0) {
          pcVar35 = (char *)0x92007;
          var_23 = (type_20 *)var_24(pParse);
          if (var_23 != (type_20 *)0x0) goto LAB_00091862;
        }
        else {
LAB_00091862:
          var_36 = '\0';
          if (var_112->nExpr < 1) {
            var_35 = '\0';
            local_ac = -1;
            var_101 = (type_4 *)0x0;
          }
          else {
            var_35 = '\0';
            var_95 = (type_22 *)0x0;
            local_ac = -1;
            var_101 = (type_4 *)0x0;
            local_d8 = (type_4 *)var_112->a;
            do {
              if (var_25 == 0) {
                pcVar35 = (char *)0x91be1;
                var_8 = var_26(&sNC,*(type_4 **)&local_d8->op);
                if (var_8 != 0) goto LAB_00091be9;
              }
              var_8 = (int)var_4->nCol;
              pcVar14 = (char *)local_d8->flags;
              if (0 < var_8) {
                var_29 = 0;
                local_fc = (type_13 *)var_4->aCol;
LAB_000918f0:
                pPVar22 = (type_1 *)local_fc->zName;
                var_27 = 0;
                do {
                  var_28 = (type_15)*(type_11 *)((int)&pPVar22->db + var_27);
                  if (var_28 == (type_11)pcVar14[var_27]) {
                    if (var_28 == 0) {
                      if (var_4->iPKey == var_29) {
                        var_36 = '\x01';
                        var_101 = *(type_4 **)&local_d8->op;
                        local_ac = (int)var_95;
LAB_00091c26:
                        var_17[var_29] = (int)var_95;
                        if (var_8 <= var_29) break;
                      }
                      else {
                        var_30 = *(type_7 *)&local_fc->pFKey;
                        if ((var_12 == (type_18 *)0x0) || ((var_30 & 1) == 0)) {
                          if ((var_30 & 0x60) == 0) goto LAB_00091c26;
                          var_31(pParse,(char *)(var_32 + 0x1c67d),pPVar22,(type_15)var_30);
                          goto LAB_00091be9;
                        }
                        var_17[var_29] = (int)var_95;
                        if (var_8 <= var_29) goto LAB_00092075;
                        var_35 = '\x01';
                      }
                      pcVar14 = db->aDb[(int)local_d4].zDbSName;
                      goto LAB_0009197f;
                    }
                  }
                  else if (*(char *)(var_32 + 0x23b65 + var_28) !=
                           *(char *)(var_32 + 0x23b65 + (type_15)(type_11)pcVar14[var_27]))
                  goto LAB_00091b70;
                  var_27 = var_27 + 1;
                } while( true );
              }
LAB_00091b82:
              if (var_12 != (type_18 *)0x0) {
LAB_00092075:
                var_31(pParse,(char *)(var_32 + 0x199ec),pcVar14);
                pParse->checkSchema = '\x01';
                goto LAB_00091be9;
              }
              pcVar35 = (char *)0x91b95;
              var_8 = var_33(pcVar14);
              if (var_8 == 0) goto LAB_00092075;
              var_29 = -1;
              var_36 = '\x01';
              var_101 = *(type_4 **)&local_d8->op;
              pcVar14 = db->aDb[(int)local_d4].zDbSName;
              local_ac = (int)var_95;
              pPVar22 = (type_1 *)(var_32 + 0x18a8f);
LAB_0009197f:
              var_8 = var_34(pPVar22,(int)pcVar14,zArg1,pcVar35,(char *)in_stack_fffffee4
                                       );
              if (var_8 == 1) goto LAB_00091be9;
              if (var_8 == 2) {
                var_17[var_29] = -1;
              }
              var_95 = (type_22 *)((int)var_95 + 1);
              local_d8 = (type_4 *)((int)local_d8 + 0x10);
            } while ((int)var_95 < var_112->nExpr);
          }
          var_13 = var_35 + var_36;
          if ((var_4->tabFlags & 0x60) != 0) {
            var_37 = var_4->nCol;
            do {
              if (var_37 < 1) break;
              var_44 = false;
              var_8 = 0;
              do {
                if ((var_17[var_8] < 0) && ((var_4->aCol[var_8].colFlags & 0x60) != 0)) {
                  var_29 = var_38
                                     (in_stack_fffffee4,in_stack_fffffee8,(int)db);
                  if (var_29 != 0) {
                    var_17[var_8] = 99999;
                    var_44 = true;
                  }
                  var_37 = var_4->nCol;
                }
                var_8 = var_8 + 1;
              } while (var_8 < var_37);
            } while (var_44);
          }
          var_28 = (type_15)(var_4->nModuleArg != 0);
          *(type_15 *)&pSrc->a[0].colUsed = -var_28;
          chngRowid = (type_15)var_13;
          *(type_15 *)((int)&pSrc->a[0].colUsed + 4) = -(type_15)(var_28 != 0);
          var_8 = var_39((type_1 *)pParse->db,var_4,var_17,chngRowid);
          if (var_40 == (type_3 *)0x5) {
            var_41 = 1;
          }
          var_11 = var_4->pIndex;
          var_53 = (type_13 *)var_19;
          if (var_11 != (type_18 *)0x0) {
            local_fc = (type_13 *)0x0;
            do {
              if (((var_12 == var_11) || (1 < var_8 || var_13 != 0)) ||
                 ((var_11->pPartIdxWhere != (type_4 *)0x0 &&
                  (var_29 = var_38
                                      (in_stack_fffffee4,in_stack_fffffee8,(int)db), var_29 != 0))))
              {
                var_29 = pParse->nMem + 1;
                pParse->nMem = (type_15)var_11->nColumn + var_29;
LAB_00091b52:
                if (var_29 == 0) goto LAB_00091b56;
              }
              else {
                var_29 = 0;
                if (var_11->nKeyCol != 0) {
                  do {
                    if (var_11->aiColumn[var_29] < 0) {
                      var_28 = var_38
                                         (in_stack_fffffee4,in_stack_fffffee8,(int)db);
                    }
                    else {
                      var_28 = (type_15)~var_17[var_11->aiColumn[var_29]] >> 0x1f;
                    }
                    if (var_28 != 0) {
                      var_29 = pParse->nMem + 1;
                      pParse->nMem = (type_15)var_11->nColumn + var_29;
                      if ((var_40 == (type_3 *)0xb) && (var_11->onError == '\x05')) {
                        var_41 = 1;
                      }
                      goto LAB_00091b52;
                    }
                    var_29 = var_29 + 1;
                  } while (var_29 < (int)(type_15)var_11->nKeyCol);
                }
LAB_00091b56:
                *(type_26 *)((int)piVar21 + (int)local_fc + 1) = 0;
                var_29 = 0;
              }
              var_11 = var_11->pNext;
              var_19[(int)local_fc] = var_29;
              local_fc = (type_13 *)((int)local_fc + 1);
            } while (var_11 != (type_18 *)0x0);
            var_53 = (type_13 *)(var_19 + (int)local_fc);
          }
          var_29 = pParse->nMem + 1;
          pParse->nMem = var_29;
          *(int *)var_53 = var_29;
          if (var_41 != 0) {
            var_20(piVar21,1,(size_t)__n);
          }
          if (pParse->nested == '\0') {
            *(type_26 *)((int)var_23 + 0x8e) = *(type_26 *)((int)var_23 + 0x8e) | 0x10;
          }
          var_44 = var_42 != (type_14 *)0x0;
          var_45 = var_8 != 0;
          var_43(pParse,(type_15)(var_44 || var_45),(int)local_d4);
          var_29 = var_4->nModuleArg;
          if (var_29 == 0) {
            var_21 = var_4->nCol;
            local_84 = *(int *)var_53;
            var_46 = pParse->nMem;
            local_fc = (type_13 *)(var_46 + 1);
            pParse->nMem = (int)local_fc;
            if ((var_44 || var_35 != '\0') || (var_45)) {
              var_46 = var_46 + 2;
              pParse->nMem = (int)&local_fc->zName + (int)var_21;
              if (!var_45) goto joined_r0x00091d94;
LAB_00091d96:
              local_d4 = (type_13 *)(pParse->nMem + 1);
              pParse->nMem = (int)local_d4;
            }
            else {
              var_46 = 0;
joined_r0x00091d94:
              local_d4 = local_fc;
              if (var_13 != 0 || var_44) goto LAB_00091d96;
            }
            local_94 = pParse->nMem + 1;
            pParse->nMem = pParse->nMem + (int)var_21;
          }
          else {
            local_84 = 0;
            var_46 = 0;
            local_94 = 0;
            local_d4 = (type_13 *)0x0;
            local_fc = (type_13 *)0x0;
          }
          if (var_47 == (type_8 *)0x0) {
            if (var_25 == 0) goto LAB_00091e0a;
            var_44 = false;
          }
          else {
            sContext.zAuthContext = pParse->zAuthContext;
            var_44 = false;
            pParse->zAuthContext = var_4->zName;
            sContext.pParse = pParse;
            if (var_25 == 0) {
              var_48
                        (pParse,var_4,(type_4 *)var_4->pSchema,(type_3 *)var_113,var_62,var_29,
                         (type_13 *)var_29);
LAB_00091e0a:
              var_29 = var_26(&sNC,(type_4 *)var_113);
              if (var_29 != 0) goto LAB_00091be9;
              var_44 = true;
              var_29 = var_4->nModuleArg;
            }
          }
          if (var_29 == 0) {
            var_90 = 0;
            var_29 = pParse->nLabel + -1;
            pParse->nLabel = var_29;
            if (((db->flags & 0x100000000) != 0) &&
               (var_90 = 0, pParse->pTriggerTab == (type_13 *)0x0)) {
              if ((pParse->nested == '\0') && (var_14 == (type_4 *)0x0)) {
                var_90 = pParse->nMem + 1;
                pParse->nMem = var_90;
                var_49((type_19 *)var_23,0x45,0,var_90,0);
              }
              else {
                var_90 = 0;
              }
            }
            if ((var_25 == 0) && ((var_4->tabFlags & 0x80) == 0)) {
              pTVar30 = (type_13 *)0x0;
              var_49((type_19 *)var_23,0x48,0,local_84,(int)local_fc);
              local_8c = (type_13 *)0x0;
              if (var_14 != (type_4 *)0x0) {
                local_a4 = 0;
LAB_00091ee2:
                var_50(pParse,(type_4 *)var_113,var_29,0x10);
                local_d8 = (type_4 *)0x0;
                var_58 = (type_19 *)0x0;
                var_84 = 0;
                var_54 = '\x01';
                var_61 = (type_20 *)0x0;
                var_10 = var_4->tabFlags;
                pTVar31 = pTVar30;
LAB_00091f2a:
                pTVar30 = pTVar31;
                if ((var_10 & 0x80) == 0) {
                  var_49((type_19 *)var_23,0x7f,(int)var_62,(int)local_fc,0);
                  var_51 = 0;
                  pTVar30 = local_8c;
                  var_53 = pTVar31;
                }
                else {
LAB_00091f32:
                  var_51 = (int)(short)local_a4;
                  if (0 < var_51) {
LAB_00091f43:
                    var_53 = (type_13 *)0x0;
                    local_68 = pTVar30;
                    do {
                      var_52
                                ((type_19 *)var_23,var_4,(int)var_62,
                                 (int)*(short *)((int)var_12->aiColumn + (int)var_53),
                                 (int)local_68);
                      var_53 = (type_13 *)((int)var_53 + 2);
                      local_68 = (type_13 *)((int)&local_68->zName + 1);
                    } while ((type_13 *)(var_51 * 2) != var_53);
                  }
                  var_53 = pTVar30;
                  var_76 = var_51;
                  if (var_54 == '\0') {
LAB_00092c5d:
                    pcVar35 = var_55(db,var_12);
                    var_27 = var_49((type_19 *)var_23,0x5b,(int)var_53,var_76,
                                               (int)local_8c);
                    var_56((type_19 *)var_23,var_27,pcVar35,var_76);
                    var_57
                              ((type_19 *)var_23,0x82,(int)local_d8,(int)local_8c,(int)var_53,
                               var_76);
                    var_51 = 0;
                    var_54 = '\0';
                    pTVar30 = local_8c;
                  }
                  else if (var_58 != (type_19 *)0x0) {
                    var_59
                              ((type_19 *)var_23->pParse,(int)((int)var_23 + 100),var_58);
                  }
                }
                goto LAB_0009244d;
              }
              var_58 = (type_19 *)0x0;
              local_d8 = (type_4 *)0x0;
              local_a4 = 0;
LAB_00093044:
              wctrlFlags = 0x1004;
              if ((pParse->nested == '\0') &&
                 ((((var_42 != (type_14 *)0x0 || (var_8 != 0)) || (var_41 != 0)) ||
                  (wctrlFlags = 0x100c, var_13 != 0)))) {
                wctrlFlags = 0x1004;
              }
              var_61 = var_60(pParse,pSrc,(type_4 *)var_113,(type_3 *)0x0,
                                           (type_3 *)0x0,wctrlFlags,(int)local_c0);
              if (var_61 == (type_20 *)0x0) goto LAB_00091be9;
              var_67 = (type_4 *)var_61->aiCurOnePass[0];
              var_63 = (type_4 *)var_61->aiCurOnePass[1];
              var_54 = var_61->eOnePass;
              var_84 = var_61->field_0x30 & 1;
              pTVar31 = pTVar30;
              if (var_54 == '\x01') {
                var_10 = var_4->tabFlags;
                goto LAB_00091f2a;
              }
              pPVar22 = pParse->pToplevel;
              if (pParse->pToplevel == (type_1 *)0x0) {
                pPVar22 = pParse;
              }
              pPVar22->isMultiWrite = '\x01';
              var_10 = var_4->tabFlags;
              if (var_54 == '\x02') {
                if ((((int)var_63 < 0) || (var_62 == var_63)) ||
                   (*(char *)((int)piVar21 + ((int)var_63 - (int)pEVar34)) == '\0'))
                goto LAB_00091f2a;
                if ((var_10 & 0x80) == 0) {
                  var_49((type_19 *)var_23,0x7f,(int)var_62,(int)local_fc,0);
                  goto LAB_000931ef;
                }
                var_76 = (type_15)(short)local_a4;
                var_54 = '\0';
                var_53 = pTVar30;
                var_51 = var_76;
                if (0 < (int)var_76) goto LAB_00091f43;
                goto LAB_00092c5d;
              }
              if ((var_10 & 0x80) != 0) goto LAB_00091f32;
              var_49((type_19 *)var_23,0x7f,(int)var_62,(int)local_fc,0);
              if (var_54 == '\0') {
LAB_000931ef:
                var_27 = pParse->nMem + 1;
                pParse->nMem = var_27;
                *(int *)var_53 = var_27;
                var_49((type_19 *)var_23,0x93,local_84,(int)local_fc,0);
                var_54 = '\0';
              }
              var_51 = 0;
              pTVar31 = local_8c;
              var_53 = pTVar30;
LAB_0009314f:
              if ((var_54 != '\x02') && (var_44)) {
                var_64(var_61);
              }
              if (var_47 == (type_8 *)0x0) {
                if (var_54 == '\0') {
                  if (var_4->nModuleArg != 0) goto LAB_000932c3;
LAB_00093245:
                  var_27 = 0;
LAB_00093247:
                  var_65
                            (pParse,var_4,0x61,'\0',(int)pEVar34,(type_6 *)piVar21,(int *)0x0,(int *)0x0)
                  ;
LAB_0009326e:
                  if (var_27 != 0) {
                    var_66 = *(int *)((int)var_23 + 0x68) + -1;
                    if (var_66 == var_27) {
                      *(int *)((int)var_23 + 0x68) = var_27;
                    }
                    else {
                      if (-1 < var_27) {
                        var_66 = var_27;
                      }
                      var_58 = (type_19 *)(var_32 + 0x4e0b5);
                      if (((type_9 *)var_23->pParse)->mallocFailed == '\0') {
                        var_58 = (type_19 *)(*(type_16 **)((int)var_23 + 100) + var_66);
                      }
                      var_58->pNext = (type_19 *)*(int *)((int)var_23 + 0x68);
                    }
                  }
                  if (var_54 == '\0') goto LAB_000932c3;
                }
                else {
                  if (-1 < (int)var_67) {
                    *(type_26 *)((int)piVar21 + ((int)var_67 - (int)pEVar34)) = 0;
                  }
                  if (-1 < (int)var_63) {
                    *(type_26 *)((int)piVar21 + ((int)var_63 - (int)pEVar34)) = 0;
                  }
                  if ((var_54 == '\x02') && (0 < (int)(var_18 + ((int)~(type_15)var_63 >> 0x1f)))) {
                    var_27 = var_49((type_19 *)var_23,0x11,0,0,0);
                    if (var_4->nModuleArg == 0) goto LAB_00093247;
                    goto LAB_0009326e;
                  }
                  if (var_4->nModuleArg == 0) goto LAB_00093245;
                }
                if ((var_62 != var_67) && (var_62 != var_63)) {
                  var_57
                            ((type_19 *)var_23,0x1d,(int)var_62,var_29,(int)pTVar31,var_51);
                }
LAB_00093182:
                var_58 = (type_19 *)var_29;
                if (var_54 != '\x01') {
                  var_58 = (type_19 *)(pParse->nLabel + -1);
                  pParse->nLabel = (int)var_58;
                }
                pTVar30 = pTVar31;
                if (var_12 == (type_18 *)0x0) {
                  pTVar30 = local_fc;
                }
                var_49((type_19 *)var_23,0x32,(int)pTVar30,var_29,0);
                local_8c = (type_13 *)0x0;
                goto LAB_0009246c;
              }
              if (var_54 != '\0') goto LAB_00093182;
LAB_000932c3:
              if ((var_12 != (type_18 *)0x0) || (var_25 != 0)) {
                var_58 = (type_19 *)(pParse->nLabel + -1);
                pParse->nLabel = (int)var_58;
                var_49((type_19 *)var_23,0x25,(int)local_d8,var_29,0);
                local_8c = *(type_13 **)((int)var_23 + 0x68);
                if (var_25 == 0) {
                  var_49((type_19 *)var_23,0x7e,(int)local_d8,(int)pTVar31,0);
                  var_57
                            ((type_19 *)var_23,0x1d,(int)var_62,(int)var_58,(int)pTVar31,0);
                  goto LAB_00093326;
                }
                if (var_47 == (type_8 *)0x0) {
                  if (var_12 == (type_18 *)0x0) {
                    var_49((type_19 *)var_23,0x7f,(int)local_d8,(int)local_fc,0);
                    var_49((type_19 *)var_23,0x20,(int)var_62,(int)var_58,
                                      (int)local_fc);
                  }
                  else {
                    for (var_27 = 0; var_27 < (short)local_a4; var_27 = var_27 + 1) {
                      var_49((type_19 *)var_23,0x59,(int)local_d8,var_27,
                                        (int)&var_53->zName + var_27);
                    }
                    var_57
                              ((type_19 *)var_23,0x1d,(int)var_62,(int)var_58,(int)var_53,
                               (int)(short)local_a4);
                  }
                  goto LAB_0009246c;
                }
                if (var_36 == '\0') goto LAB_000924ae;
                goto LAB_0009342d;
              }
              var_58 = (type_19 *)var_49((type_19 *)var_23,0x2a,local_84,var_29,
                                                   (int)local_fc);
              var_49((type_19 *)var_23,0x20,(int)var_62,(int)var_58,(int)local_fc);
              local_8c = (type_13 *)0x0;
LAB_00093326:
              if (var_36 != '\0') goto LAB_0009247e;
            }
            else {
              if (var_12 == (type_18 *)0x0) {
                local_a4 = 0;
              }
              else {
                local_a4 = var_12->nKeyCol;
              }
              var_51 = (int)(short)local_a4;
              var_27 = pParse->nMem;
              pTVar30 = (type_13 *)(var_27 + 1);
              local_8c = (type_13 *)(var_25 + 1 + var_27 + var_51);
              pParse->nMem = (int)local_8c;
              if (var_14 == (type_4 *)0x0) {
                if (var_47 == (type_8 *)0x0) {
                  var_66 = 0;
                }
                else {
                  var_66 = (int)var_4->nCol;
                }
                var_66 = var_51 + var_25 + var_66;
                local_d8 = (type_4 *)pParse->nTab;
                pParse->nTab = (int)&local_d8->affExpr;
                if (var_12 == (type_18 *)0x0) {
                  pOrderBy_00 = (type_20 *)
                                var_49((type_19 *)var_23,100,(int)local_d8,var_66,0);
                  var_58 = (type_19 *)pOrderBy_00;
                }
                else {
                  var_49((type_19 *)var_23,0x48,0,(int)pTVar30,var_27 + var_51);
                  var_58 = (type_19 *)var_49((type_19 *)var_23,100,(int)local_d8,var_66,0);
                  var_69 = (type_19 *)var_68(pParse,var_12);
                  pOrderBy_00 = (type_20 *)var_69;
                  if (var_69 != (type_19 *)0x0) {
                    *(type_12 *)&var_69->pNext = (type_12)var_66;
                    pOrderBy_00 = var_23;
                    var_70((type_19 *)var_23,var_69,-9);
                  }
                }
                if (var_25 == 0) goto LAB_00093044;
                var_71(pParse,(int)local_d8,var_12,var_112,pSrc,(type_4 *)var_113,
                                 (type_3 *)pOrderBy_00,in_stack_fffffee4);
                if (var_47 != (type_8 *)0x0) {
                  var_62 = local_d8;
                }
              }
              else {
                if (var_25 == 0) goto LAB_00091ee2;
                local_d8 = (type_4 *)0x0;
              }
              var_54 = '\0';
              var_84 = 1;
              var_61 = (type_20 *)0x0;
              pPVar22 = pParse->pToplevel;
              if (pParse->pToplevel == (type_1 *)0x0) {
                pPVar22 = pParse;
              }
              pPVar22->isMultiWrite = '\x01';
              var_53 = pTVar30;
LAB_0009244d:
              local_8c = (type_13 *)0x0;
              pTVar31 = pTVar30;
              var_58 = (type_19 *)var_29;
              if (var_14 == (type_4 *)0x0) goto LAB_0009314f;
LAB_0009246c:
              if (var_36 != '\0') {
                if (var_25 == 0) {
LAB_0009247e:
                  if (pParse->pVdbe != (type_19 *)0x0) {
                    var_72(pParse,var_101,(int)local_d4);
                  }
                }
                else {
LAB_0009342d:
                  var_49((type_19 *)var_23,0x59,(int)local_d8,local_ac,(int)local_d4);
                }
                var_49((type_19 *)var_23,0xf,(int)local_d4,0,0);
              }
            }
LAB_000924ae:
            if ((var_35 != '\0') || (var_45)) {
              var_76 = 0;
              if ((var_8 != 0) && ((pParse->db->flags & 0x4000) != 0)) {
                var_76 = var_73(pParse,var_4);
              }
LAB_000924dd:
              var_10 = var_74(pParse,var_42,var_112,0,3,var_4,(int)var_40);
              if (0 < var_4->nCol) {
                var_27 = 0;
                do {
                  var_21 = (short)var_27;
                  if ((var_4->tabFlags & 0x20) != 0) {
                    var_21 = var_75(var_4,var_21);
                  }
                  if (((var_10 | var_76) == 0xffffffff) ||
                     (((var_27 < 0x20 && (((var_10 | var_76) & 1 << ((type_11)var_27 & 0x1f)) != 0))
                      || ((var_4->aCol[var_27].colFlags & 1) != 0)))) {
                    var_52
                              ((type_19 *)var_23,var_4,(int)var_62,var_27,var_21 + var_46);
                  }
                  else {
                    var_49((type_19 *)var_23,0x48,0,var_21 + var_46,0);
                  }
                  var_27 = var_27 + 1;
                } while (var_27 < var_4->nCol);
              }
              if ((var_36 == '\0') && (var_12 == (type_18 *)0x0)) {
                var_49((type_19 *)var_23,0x4d,(int)local_fc,(int)local_d4,0);
              }
            }
            else {
              var_76 = 0;
              if (var_42 != (type_14 *)0x0) goto LAB_000924dd;
            }
            var_10 = var_74(pParse,var_42,var_112,1,1,var_4,(int)var_40);
            var_27 = (int)var_4->nCol;
            if (0 < var_27) {
              var_28 = 0;
              var_66 = local_94;
              do {
                if ((int)var_4->iPKey == var_28) {
LAB_000926a2:
                  var_49((type_19 *)var_23,0x48,0,var_66,0);
                  var_27 = (int)var_4->nCol;
                }
                else {
                  var_30 = var_4->aCol[var_28].colFlags;
                  if ((var_30 & 0x60) == 0) {
                    var_77 = var_17[var_28];
                    if (var_77 < 0) {
                      if ((((var_78 & 1U) != 0) && ((int)var_28 < 0x20)) &&
                         ((var_10 >> (var_28 & 0x1f) & 1) == 0)) goto LAB_000926a2;
                      var_52
                                ((type_19 *)var_23,var_4,(int)var_62,var_28,var_66);
                      var_84 = 0;
                      var_27 = (int)var_4->nCol;
                    }
                    else if (var_25 == 0) {
                      if (pParse->pVdbe != (type_19 *)0x0) {
                        var_72(pParse,var_112->a[var_77].pExpr,var_66);
                        var_27 = (int)var_4->nCol;
                      }
                    }
                    else {
                      if (var_47 == (type_8 *)0x0) {
                        var_27 = (int)(short)local_a4;
                      }
                      var_49((type_19 *)var_23,0x59,(int)local_d8,var_77 + var_27,var_66);
                      var_27 = (int)var_4->nCol;
                    }
                  }
                  else {
                    var_66 = var_66 + -1 + (type_15)((var_30 & 0x20) == 0);
                  }
                }
                var_28 = var_28 + 1;
                var_66 = var_66 + 1;
              } while ((int)var_28 < var_27);
            }
            if ((var_4->tabFlags & 0x60) != 0) {
              var_79(pParse,local_94,var_4);
            }
            if ((var_78 & 1U) == 0) {
              if (var_47 == (type_8 *)0x0) {
LAB_00092d63:
                pPVar22 = pParse;
                var_80
                          (pParse,var_4,var_19,(int)var_62,(int)local_c0,(int)local_d4,
                           (int)local_fc,var_13,(type_6)var_40,(int)var_58,&var_41,var_17,
                           (type_5 *)0x0);
                var_44 = var_13 != 0;
                piVar21 = (int *)var_81((int3)((type_15)pPVar22 >> 8),var_44);
                if ((var_41 != 0) || (var_44)) {
                  if (var_12 == (type_18 *)0x0) {
                    piVar21 = (int *)var_49((type_19 *)var_23,0x20,(int)var_62,
                                                       (int)var_58,(int)local_fc);
                  }
                  else {
                    piVar21 = (int *)var_57
                                               ((type_19 *)var_23,0x1d,(int)var_62,(int)var_58,
                                                (int)pTVar31,var_51);
                  }
                }
                if (var_8 != 0) {
                  var_82(pParse,(type_13 *)0x0,(int)var_17,chngRowid,piVar21,
                                 (int)in_stack_fffffee4);
                }
                pPVar22 = pParse;
                var_83(pParse,var_4,(int)var_62,(int)local_c0,var_19,-1);
                if (var_84 != 0) {
                  pPVar22 = (type_1 *)var_49((type_19 *)var_23,0x87,(int)var_62,0,0);
                }
                if ((1 < var_8) || (var_44)) {
                  pPVar22 = (type_1 *)var_49((type_19 *)var_23,0x7a,(int)var_62,0,0);
                }
                if (var_8 == 0) {
                  if (var_54 == '\x02') {
                    var_8 = 6;
                  }
                  else {
                    var_8 = 4;
                  }
                  var_85
                            (pParse,var_4,(int)var_62,(int)local_c0,(int)local_d4,var_19,var_8,0,
                             0);
                }
                else {
                  var_82(pParse,local_d4,(int)var_17,chngRowid,(int *)pPVar22,
                                 (int)in_stack_fffffee4);
                  if (var_54 == '\x02') {
                    var_8 = 6;
                  }
                  else {
                    var_8 = 4;
                  }
                  var_85
                            (pParse,var_4,(int)var_62,(int)local_c0,(int)local_d4,var_19,var_8,0,
                             0);
                  if ((pParse->db->flags & 0x4000) != 0) {
                    var_86(pParse,var_4,var_112,(int)local_fc,var_17,chngRowid);
                  }
                }
              }
            }
            else {
              var_87((type_19 *)var_23,var_4,local_94);
              var_88
                        (pParse,var_42,0x7f,var_112,1,var_4,(int)local_fc,(int)var_40,
                         (int)var_58);
              if (var_47 == (type_8 *)0x0) {
                if (var_12 == (type_18 *)0x0) {
                  var_49((type_19 *)var_23,0x20,(int)var_62,(int)var_58,(int)local_fc)
                  ;
                }
                else {
                  var_57
                            ((type_19 *)var_23,0x1d,(int)var_62,(int)var_58,(int)pTVar31,var_51
                            );
                }
                var_89 = local_94;
                var_66 = (int)var_4->nCol;
                for (var_27 = 0; var_27 < var_66; var_27 = var_27 + 1) {
                  var_30 = var_4->aCol[var_27].colFlags;
                  if ((var_30 & 0x60) == 0) {
                    if ((var_17[var_27] < 0) && (var_27 != var_4->iPKey)) {
                      var_52
                                ((type_19 *)var_23,var_4,(int)var_62,var_27,var_89);
                      var_66 = (int)var_4->nCol;
                    }
                  }
                  else {
                    var_89 = var_89 - (type_15)((var_30 & 0x20) != 0);
                  }
                  var_89 = var_89 + 1;
                }
                if ((var_4->tabFlags & 0x60) != 0) {
                  var_79(pParse,local_94,var_4);
                }
                goto LAB_00092d63;
              }
            }
            if (var_90 != 0) {
              var_49((type_19 *)var_23,0x52,var_90,1,0);
            }
            var_88
                      (pParse,var_42,0x7f,var_112,2,var_4,(int)local_fc,(int)var_40,
                       (int)var_58);
            if (var_54 != '\x01') {
              if (var_54 == '\x02') {
                var_91((type_19 *)var_23,(int)var_58);
                var_64(var_61);
              }
              else if ((var_12 == (type_18 *)0x0) && (var_25 == 0)) {
                var_49((type_19 *)var_23,0xb,0,(int)var_58,0);
              }
              else {
                var_91((type_19 *)var_23,(int)var_58);
                var_49((type_19 *)var_23,5,(int)local_d8,(int)local_8c,0);
              }
            }
            var_91((type_19 *)var_23,var_29);
            if ((((pParse->nested == '\0') && (pParse->pTriggerTab == (type_13 *)0x0)) &&
                (var_14 == (type_4 *)0x0)) && (pParse->pAinc != (type_27 *)0x0)) {
              var_92(pParse);
            }
            if (var_90 != 0) {
              var_49((type_19 *)var_23,0x50,var_90,1,0);
              var_93((type_19 *)var_23,1);
              if (((type_9 *)var_23->pParse)->mallocFailed == '\0') {
                var_94
                          ((type_19 *)var_23,0,0,(char *)(var_32 + 0x199ff),
                           (type_28 *)0x0);
              }
            }
          }
          else {
            var_97 = pParse->db;
            var_69 = pParse->pVdbe;
            var_95 = var_4->pVTable;
            if (var_95 != (type_22 *)0x0) {
              var_96 = var_95->db;
              while ((var_96 != var_97 && (var_95 = var_95->pNext, var_95 != (type_22 *)0x0)))
              {
                var_96 = var_95->db;
              }
            }
            var_27 = pParse->nTab;
            var_21 = var_4->nCol;
            var_8 = var_21 + 2;
            var_66 = pSrc->a[0].iCursor;
            dupFlags = (type_6 **)(var_27 + 1);
            pParse->nTab = (int)dupFlags;
            pEVar34 = (type_4 *)0x0;
            ppuVar36 = dupFlags;
            local_f8 = (type_19 *)var_49(var_69,100,var_27,var_8,0);
            var_77 = pParse->nMem;
            var_29 = var_77 + 1;
            var_98 = var_8 + var_77;
            pParse->nMem = var_98;
            if (pSrc->nSrc < 2) {
              p2 = var_98 + 2;
              pParse->nMem = p2;
              var_23 = var_60(pParse,pSrc,(type_4 *)var_113,(type_3 *)0x0,
                                           (type_3 *)0x0,4,0);
              if (var_23 == (type_20 *)0x0) goto LAB_00091be9;
              var_100 = (int)var_4->nCol;
              for (var_99 = 0; var_99 < var_100; var_99 = var_99 + 1) {
                p3 = var_77 + 3 + var_99;
                if (var_17[var_99] < 0) {
                  var_49(var_69,0xa6,var_66,var_99,p3);
                  if (0 < var_69->nOp) {
                    var_69->aOp[var_69->nOp + -1].p5 = 1;
                  }
                  var_100 = (int)var_4->nCol;
                }
                else if (pParse->pVdbe != (type_19 *)0x0) {
                  var_72(pParse,var_112->a[var_17[var_99]].pExpr,p3);
                  var_100 = (int)var_4->nCol;
                }
              }
              if ((var_4->tabFlags & 0x80) == 0) {
                var_49(var_69,0x7f,var_66,var_29,0);
                if (var_101 == (type_4 *)0x0) {
                  var_49(var_69,0x7f,var_66,var_77 + 2,0);
                }
                else if (pParse->pVdbe != (type_19 *)0x0) {
                  var_72(pParse,var_101,var_77 + 2);
                }
              }
              else {
                var_11 = var_4->pIndex;
                while( true ) {
                  if (var_11 == (type_18 *)0x0) {
                    /* WARNING: Does not return */
                    pcVar7 = (type_10 *)var_102();
                    (*pcVar7)();
                  }
                  if ((var_11->field_0x37 & 3) == 2) break;
                  var_11 = var_11->pNext;
                }
                sVar4 = *var_11->aiColumn;
                var_49(var_69,0xa6,var_66,(int)sVar4,var_29);
                var_49(var_69,0x4e,var_77 + 3 + (int)sVar4,var_77 + 2,0);
              }
              var_54 = var_23->eOnePass;
              if (var_54 == '\0') {
                pPVar22 = pParse->pToplevel;
                if (pParse->pToplevel == (type_1 *)0x0) {
                  pPVar22 = pParse;
                }
                pPVar22->isMultiWrite = '\x01';
                var_49(var_69,0x5b,var_29,var_8,var_98 + 1);
                var_49(var_69,0x78,var_27,p2,0);
                var_49(var_69,0x79,var_27,var_98 + 1,p2);
                goto LAB_000922b8;
              }
              var_59((type_19 *)var_69->db,(int)&var_69->aOp,local_f8);
              var_49(var_69,0x74,var_66,0,0);
            }
            else {
              if (var_101 == (type_4 *)0x0) {
                var_106 = var_103(pParse,0x4b,(type_4 *)0x0,(type_4 *)0x0);
              }
              else {
                var_106 = var_104((type_9 *)0x0,pEVar34,(int)dupFlags,ppuVar36);
              }
              ppuVar36 = (type_6 **)0x9221e;
              var_107 = var_105((type_1 *)pParse->db,(type_3 *)0x0,var_106);
              pTVar30 = var_4;
              if (0 < var_4->nCol) {
                var_66 = 0;
                do {
                  if (var_17[var_66] < 0) {
                    var_106 = var_103(pParse,0x4b,(type_4 *)0x0,(type_4 *)0x0);
                    if (var_106 != (type_4 *)0x0) {
                      var_106->iColumn = (short)var_66 + 1;
                    }
                  }
                  else {
                    var_106 = var_112->a[var_17[var_66]].pExpr;
                    if (var_106 != (type_4 *)0x0) {
                      var_106 = var_104((type_9 *)0x0,pEVar34,(int)dupFlags,ppuVar36);
                    }
                  }
                  var_66 = var_66 + 1;
                  ppuVar36 = (type_6 **)0x92275;
                  var_107 = var_105((type_1 *)pParse->db,var_107,var_106);
                  pTVar30 = (type_13 *)(int)var_4->nCol;
                } while (var_66 < (int)pTVar30);
              }
              var_71(pParse,var_27,(type_18 *)0x0,var_107,pSrc,(type_4 *)var_113,
                               (type_3 *)pTVar30,in_stack_fffffee4);
              var_23 = (type_20 *)0x0;
              if (var_107 != (type_3 *)0x0) {
                var_108(var_97,var_107);
              }
LAB_000922b8:
              if (pSrc->nSrc == 1) {
                var_64(var_23);
              }
              local_f8 = (type_19 *)var_49(var_69,0x25,var_27,0,0);
              var_54 = '\0';
              if (0 < var_8) {
                var_66 = 0;
                do {
                  var_77 = var_66 + 1;
                  var_49(var_69,0x59,var_27,var_66,var_29 + var_66);
                  var_66 = var_77;
                } while (var_77 != var_21 + 2);
              }
            }
            var_109(pParse,var_4);
            var_8 = var_49(var_69,10,0,var_8,var_29);
            var_56(var_69,var_8,(char *)var_95,-0xc);
            if (var_40 == (type_3 *)0xb) {
              var_40._0_2_ = 2;
            }
            else {
            }
            if (0 < var_69->nOp) {
              var_69->aOp[var_69->nOp + -1].p5 = (type_12)var_40;
            }
            pPVar22 = pParse->pToplevel;
            if (pParse->pToplevel == (type_1 *)0x0) {
              pPVar22 = pParse;
            }
            pPVar22->mayAbort = '\x01';
            if (var_54 == '\0') {
              var_49(var_69,5,var_27,(int)((int)&local_f8->db + 1),0);
              if ((int)local_f8 < 0) {
                local_f8 = (type_19 *)(var_69->nOp + -1);
              }
              pOVar17 = (type_16 *)(var_32 + 0x4e0b5);
              if (var_69->db->mallocFailed == '\0') {
                pOVar17 = var_69->aOp + (int)local_f8;
              }
              pOVar17->p2 = var_69->nOp;
              var_49(var_69,0x74,var_27,0,0);
            }
            else {
              var_64(var_23);
            }
          }
        }
LAB_00091be9:
        pPVar22 = sContext.pParse;
        if (sContext.pParse != (type_1 *)0x0) {
          sContext.pParse = (type_1 *)0x0;
          pPVar22->zAuthContext = sContext.zAuthContext;
        }
        var_110(db,var_17);
        goto LAB_00091598;
      }
    }
  }
  pPVar22 = sContext.pParse;
  if (sContext.pParse != (type_1 *)0x0) {
    sContext.pParse = (type_1 *)0x0;
    pPVar22->zAuthContext = sContext.zAuthContext;
  }
LAB_00091598:
  var_97 = db;
  var_111(db,pSrc);
  if (var_112 != (type_3 *)0x0) {
    var_108(db,var_112);
  }
  if (var_113 != (type_2 *)0x0) {
    var_114(var_97,(type_4 *)var_113);
  }
  if (var_115 == *(int *)(var_2 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_116();
LAB_00091b70:
  var_29 = var_29 + 1;
  local_fc = (type_13 *)((int)local_fc + 0x14);
  if (var_29 == var_8) goto LAB_00091b82;
  goto LAB_000918f0;
}


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

void __regparm1 MASKED(int *param_1,int param_2,uint param_3,int *param_4)

{
  size_t __n;
  char cVar1;
  ushort uVar2;
  short *psVar3;
  code *pcVar4;
  bool bVar5;
  byte bVar6;
  short sVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  int *piVar16;
  int *piVar17;
  int *piVar18;
  int *piVar19;
  int *piVar20;
  int iVar21;
  uint *extraout_ECX;
  uint uVar22;
  int extraout_ECX_00;
  int extraout_ECX_01;
  int extraout_ECX_02;
  int extraout_ECX_03;
  int extraout_ECX_04;
  undefined4 extraout_ECX_05;
  undefined4 extraout_ECX_06;
  int *extraout_ECX_07;
  int *extraout_ECX_08;
  int *extraout_ECX_09;
  int extraout_ECX_10;
  int extraout_ECX_11;
  int extraout_ECX_12;
  int extraout_ECX_13;
  int extraout_ECX_14;
  int extraout_ECX_15;
  undefined4 extraout_ECX_16;
  undefined4 extraout_ECX_17;
  int extraout_ECX_18;
  int extraout_ECX_19;
  int *extraout_EDX;
  int *piVar23;
  uint uVar24;
  uint extraout_EDX_00;
  uint uVar25;
  uint extraout_EDX_01;
  uint extraout_EDX_02;
  uint extraout_EDX_03;
  undefined4 extraout_EDX_04;
  uint extraout_EDX_05;
  uint extraout_EDX_06;
  uint extraout_EDX_07;
  uint extraout_EDX_08;
  byte bVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int *piVar30;
  int unaff_EDI;
  int in_GS_OFFSET;
  bool bVar31;
  undefined8 uVar32;
  undefined8 uVar33;
  undefined4 uVar34;
  uint local_100;
  int *local_fc;
  int local_f8;
  int local_f0;
  int local_ec;
  int *local_e8;
  uint local_e4;
  int local_e0;
  int *local_dc;
  uint *local_d8;
  int local_d4;
  uint local_c8;
  int local_c4;
  int *local_c0;
  uint local_b8;
  int local_ac;
  short local_a4;
  int local_9c;
  int *local_98;
  int local_94;
  int local_90;
  int local_8c;
  int local_84;
  int *local_78;
  int local_74;
  char local_6e;
  int local_68;
  int *local_64;
  byte local_50 [4];
  int local_4c;
  int local_48;
  int *local_44;
  int *local_40;
  int *local_3c;
  int *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x9151b;
  FUN_000a94ff();
  iVar27 = *param_1;
  local_4c = 0;
  local_48 = 0;
  local_44 = (int *)0x0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((param_1[9] != 0) || (*(char *)(iVar27 + 0x4d) != '\0')) goto LAB_00091598;
  piVar8 = (int *)FUN_00091200();
  if (piVar8 != (int *)0x0) {
    local_d4 = -0x8000;
    if (piVar8[0x12] != 0) {
      local_d4 = FUN_0002a630();
    }
    iVar9 = FUN_0002add0(extraout_ECX,local_50);
    piVar20 = (int *)piVar8[3];
    local_100 = 0;
    if (1 < *extraout_EDX) {
      local_100 = *extraout_ECX;
    }
    iVar10 = FUN_00083c60();
    if ((iVar10 == 0) && (iVar10 = FUN_0003d4a0(), iVar10 == 0)) {
      piVar16 = (int *)param_1[10];
      local_c0 = (int *)((int)piVar16 + 1);
      bVar26 = *(byte *)(piVar8 + 9);
      param_1[10] = (int)local_c0;
      iVar10 = piVar8[2];
      local_dc = piVar16;
      if ((bVar26 & 0x80) == 0) {
        local_e0 = 0;
        if (iVar10 == 0) goto LAB_00091c69;
LAB_00091707:
        piVar23 = local_c0;
        do {
          bVar31 = local_e0 == iVar10;
          iVar10 = *(int *)(iVar10 + 0x14);
          if (bVar31) {
            local_dc = piVar23;
          }
          piVar23 = (int *)((int)piVar23 + 1);
          local_90 = ~(uint)piVar16 + (int)piVar23;
        } while (iVar10 != 0);
        param_1[10] = (int)piVar23;
      }
      else {
        if (iVar10 != 0) {
          bVar26 = *(byte *)(iVar10 + 0x37);
          local_e0 = iVar10;
          while (((bVar26 & 3) != 2 && (local_e0 = *(int *)(local_e0 + 0x14), local_e0 != 0))) {
            bVar26 = *(byte *)(local_e0 + 0x37);
          }
          goto LAB_00091707;
        }
LAB_00091c69:
        local_e0 = 0;
        local_90 = 0;
      }
      if (param_4 != (int *)0x0) {
        local_dc = (int *)param_4[7];
        local_c0 = (int *)param_4[8];
        param_1[10] = (int)piVar16;
      }
      extraout_EDX[0xc] = (int)local_dc;
      puVar11 = (undefined4 *)FUN_0002e2d0();
      if (puVar11 != (undefined4 *)0x0) {
        piVar23 = puVar11 + *(short *)((int)piVar8 + 0x2a);
        __n = local_90 + 1;
        piVar18 = piVar23 + __n;
        memset(piVar18,1,__n);
        *(undefined1 *)((int)piVar18 + local_90 + 1) = 0;
        sVar7 = *(short *)((int)piVar8 + 0x2a);
        if (0 < sVar7) {
          puVar12 = puVar11;
          do {
            *puVar12 = 0xffffffff;
            puVar12 = puVar12 + 1;
          } while (puVar11 + sVar7 != puVar12);
        }
        local_34 = 0;
        local_30 = 0;
        local_2c = 0;
        local_24 = 0;
        local_28 = 0x200;
        local_38 = param_4;
        local_e8 = (int *)param_1[2];
        local_40 = param_1;
        local_3c = extraout_EDX;
        if ((local_e8 != (int *)0x0) || (local_e8 = (int *)FUN_000318c0(), local_e8 != (int *)0x0))
        {
          cVar1 = '\0';
          if ((int)*extraout_ECX < 1) {
            local_6e = '\0';
            local_ac = -1;
            local_b8 = 0;
          }
          else {
            local_6e = '\0';
            local_e4 = 0;
            local_ac = -1;
            local_b8 = 0;
            local_d8 = extraout_ECX + 1;
            do {
              if ((local_100 == 0) && (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_00091be9;
              iVar10 = (int)*(short *)((int)piVar8 + 0x2a);
              uVar25 = local_d8[1];
              if (0 < iVar10) {
                iVar29 = 0;
                local_fc = (int *)piVar8[1];
LAB_000918f0:
                iVar15 = *local_fc;
                iVar13 = 0;
                do {
                  uVar24 = (uint)*(byte *)(iVar15 + iVar13);
                  uVar22 = (uint)*(byte *)(uVar25 + iVar13);
                  if (uVar24 == uVar22) {
                    if (uVar24 == 0) {
                      if ((short)piVar8[10] == iVar29) {
                        cVar1 = '\x01';
                        local_b8 = *local_d8;
                        local_ac = local_e4;
LAB_00091c26:
                        puVar11[iVar29] = local_e4;
                        if (iVar10 <= iVar29) break;
                      }
                      else {
                        uVar2 = *(ushort *)(local_fc + 4);
                        if ((local_e0 == 0) || ((uVar2 & 1) == 0)) {
                          if ((uVar2 & 0x60) == 0) goto LAB_00091c26;
                          FUN_0003c160(param_1,unaff_EDI + 0x1c67d,iVar15,uVar2);
                          goto LAB_00091be9;
                        }
                        puVar11[iVar29] = local_e4;
                        if (iVar10 <= iVar29) goto LAB_00092075;
                        local_6e = '\x01';
                      }
                      uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);
                      goto LAB_0009197f;
                    }
                  }
                  else if (*(char *)(unaff_EDI + 0x23b65 + uVar24) !=
                           *(char *)(unaff_EDI + 0x23b65 + uVar22)) goto LAB_00091b70;
                  iVar13 = iVar13 + 1;
                } while( true );
              }
LAB_00091b82:
              if ((local_e0 != 0) || (iVar10 = FUN_00029a00(), iVar10 == 0)) {
LAB_00092075:
                FUN_0003c160(param_1,unaff_EDI + 0x199ec,uVar25);
                *(undefined1 *)((int)param_1 + 0x11) = 1;
                goto LAB_00091be9;
              }
              iVar29 = -1;
              cVar1 = '\x01';
              local_b8 = *local_d8;
              uVar34 = *(undefined4 *)(*(int *)(iVar27 + 0x10) + local_d4 * 0x10);
              local_ac = local_e4;
              iVar15 = unaff_EDI + 0x18a8f;
LAB_0009197f:
              iVar10 = FUN_0003c520(iVar15,uVar34);
              if (iVar10 == 1) goto LAB_00091be9;
              if (iVar10 == 2) {
                puVar11[iVar29] = 0xffffffff;
              }
              local_e4 = local_e4 + 1;
              local_d8 = local_d8 + 4;
            } while ((int)local_e4 < (int)*extraout_ECX);
          }
          bVar26 = local_6e + cVar1;
          if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
            sVar7 = *(short *)((int)piVar8 + 0x2a);
            do {
              if (sVar7 < 1) break;
              bVar31 = false;
              iVar10 = 0;
              do {
                if (((int)puVar11[iVar10] < 0) &&
                   ((*(byte *)(piVar8[1] + iVar10 * 0x14 + 0x10) & 0x60) != 0)) {
                  iVar29 = FUN_00028fd0();
                  if (iVar29 != 0) {
                    puVar11[iVar10] = 99999;
                    bVar31 = true;
                  }
                  sVar7 = *(short *)((int)piVar8 + 0x2a);
                }
                iVar10 = iVar10 + 1;
              } while (iVar10 < sVar7);
            } while (bVar31);
          }
          iVar10 = piVar8[0xe];
          extraout_EDX[0xf] = -(uint)(iVar10 != 0);
          piVar14 = (int *)(uint)bVar26;
          extraout_EDX[0x10] = -(uint)((iVar10 != 0) != 0);
          iVar10 = FUN_0002a330(piVar14);
          if (param_3 == 5) {
            local_4c = 1;
          }
          iVar29 = piVar8[2];
          local_98 = piVar23;
          if (iVar29 != 0) {
            local_fc = (int *)0x0;
            do {
              if (((local_e0 == iVar29) || (1 < iVar10 || bVar26 != 0)) ||
                 ((*(int *)(iVar29 + 0x24) != 0 && (iVar15 = FUN_00028fd0(), iVar15 != 0)))) {
                iVar15 = param_1[0xb] + 1;
                param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;
LAB_00091b52:
                if (iVar15 == 0) goto LAB_00091b56;
              }
              else {
                iVar15 = 0;
                if (*(short *)(iVar29 + 0x32) != 0) {
                  do {
                    sVar7 = *(short *)(*(int *)(iVar29 + 4) + iVar15 * 2);
                    if (sVar7 < 0) {
                      uVar25 = FUN_00028fd0();
                    }
                    else {
                      uVar25 = (uint)~puVar11[sVar7] >> 0x1f;
                    }
                    if (uVar25 != 0) {
                      iVar15 = param_1[0xb] + 1;
                      param_1[0xb] = (uint)*(ushort *)(iVar29 + 0x34) + iVar15;
                      if ((param_3 == 0xb) && (*(char *)(iVar29 + 0x36) == '\x05')) {
                        local_4c = 1;
                      }
                      goto LAB_00091b52;
                    }
                    iVar15 = iVar15 + 1;
                  } while (iVar15 < (int)(uint)*(ushort *)(iVar29 + 0x32));
                }
LAB_00091b56:
                *(undefined1 *)((int)piVar18 + (int)local_fc + 1) = 0;
                iVar15 = 0;
              }
              iVar29 = *(int *)(iVar29 + 0x14);
              piVar23[(int)local_fc] = iVar15;
              local_fc = (int *)((int)local_fc + 1);
            } while (iVar29 != 0);
            local_98 = piVar23 + (int)local_fc;
          }
          iVar29 = param_1[0xb];
          param_1[0xb] = iVar29 + 1;
          *local_98 = iVar29 + 1;
          if (local_4c != 0) {
            memset(piVar18,1,__n);
          }
          if (*(char *)((int)param_1 + 0x12) == '\0') {
            *(byte *)((int)local_e8 + 0x8e) = *(byte *)((int)local_e8 + 0x8e) | 0x10;
          }
          bVar31 = iVar10 != 0;
          FUN_0006dd90();
          iVar29 = piVar8[0xe];
          if (iVar29 == 0) {
            piVar30 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
            local_84 = *local_98;
            local_74 = param_1[0xb];
            local_fc = (int *)(local_74 + 1);
            param_1[0xb] = (int)local_fc;
            if ((iVar9 != 0 || local_6e != '\0') || (bVar31)) {
              local_74 = local_74 + 2;
              param_1[0xb] = (int)local_fc + (int)piVar30;
              if (!bVar31) goto joined_r0x00091d94;
LAB_00091d96:
              local_d4 = param_1[0xb] + 1;
              param_1[0xb] = local_d4;
            }
            else {
              local_74 = 0;
joined_r0x00091d94:
              local_d4 = (int)local_fc;
              if (bVar26 != 0 || iVar9 != 0) goto LAB_00091d96;
            }
            local_94 = param_1[0xb] + 1;
            uVar25 = param_1[0xb] + (int)piVar30;
            param_1[0xb] = uVar25;
          }
          else {
            local_84 = 0;
            local_74 = 0;
            local_94 = 0;
            local_d4 = 0;
            local_fc = (int *)0x0;
            uVar25 = extraout_EDX_00;
            piVar30 = piVar8;
          }
          if (piVar20 == (int *)0x0) {
            if (local_100 == 0) goto LAB_00091e0a;
            bVar5 = false;
            iVar15 = 0;
          }
          else {
            iVar15 = param_1[0x3d];
            bVar5 = false;
            param_1[0x3d] = *piVar8;
            uVar25 = local_100;
            piVar30 = piVar8;
            local_48 = iVar15;
            local_44 = param_1;
            if (local_100 == 0) {
              FUN_00083b40(param_2,local_dc,iVar29,iVar29);
LAB_00091e0a:
              uVar32 = FUN_0003c9d0();
              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);
              if ((int)uVar32 != 0) goto LAB_00091be9;
              bVar5 = true;
              iVar29 = piVar8[0xe];
              iVar15 = extraout_ECX_00;
            }
          }
          if (iVar29 == 0) {
            local_9c = 0;
            iVar29 = param_1[0xe] + -1;
            param_1[0xe] = iVar29;
            if (((*(byte *)(iVar27 + 0x20) & 1) != 0) && (local_9c = 0, param_1[0x1e] == 0)) {
              if ((*(char *)((int)param_1 + 0x12) == '\0') && (param_4 == (int *)0x0)) {
                local_9c = param_1[0xb] + 1;
                param_1[0xb] = local_9c;
                FUN_000315c0(local_9c,0,piVar30,piVar30);
                iVar15 = extraout_ECX_10;
                uVar25 = extraout_EDX_06;
              }
              else {
                local_9c = 0;
              }
            }
            if ((local_100 == 0) && ((*(byte *)(piVar8 + 9) & 0x80) == 0)) {
              iVar27 = 0;
              FUN_000315c0(local_84,local_fc,iVar15,iVar15);
              local_8c = 0;
              if (param_4 != (int *)0x0) {
                local_a4 = 0;
LAB_00091ee2:
                FUN_00075fd0(param_1,param_2,iVar29,0x10);
                local_f0 = 0;
                bVar6 = 0;
                local_e4 = 1;
                uVar22 = piVar8[9];
                iVar15 = extraout_ECX_01;
                uVar25 = extraout_EDX_01;
                iVar13 = iVar27;
LAB_00091f2a:
                iVar27 = iVar13;
                if ((uVar22 & 0x80) == 0) {
                  FUN_000315c0(local_fc,0,uVar22,uVar22);
                  local_c4 = 0;
                  iVar15 = extraout_ECX_18;
                  uVar25 = extraout_EDX_07;
                  iVar27 = local_8c;
                  local_98 = (int *)iVar13;
                }
                else {
LAB_00091f32:
                  local_c4 = (int)local_a4;
                  if (0 < local_c4) {
LAB_00091f43:
                    local_98 = (int *)0x0;
                    local_68 = iVar27;
                    do {
                      FUN_00077cb0((int)*(short *)(*(int *)(local_e0 + 4) + (int)local_98),local_68)
                      ;
                      local_98 = (int *)((int)local_98 + 2);
                      local_68 = local_68 + 1;
                      iVar15 = extraout_ECX_02;
                      uVar25 = extraout_EDX_02;
                    } while ((int *)(local_c4 * 2) != local_98);
                  }
                  local_98 = (int *)iVar27;
                  local_c8 = local_c4;
                  if (local_e4 == 0) {
LAB_00092c5d:
                    uVar34 = FUN_0002e150();
                    FUN_000315c0(local_c8,local_8c,uVar34,uVar34);
                    FUN_00032090(local_c8);
                    FUN_000316b0(local_8c,local_98,local_c8);
                    local_c4 = 0;
                    local_e4 = 0;
                    iVar15 = extraout_ECX_04;
                    uVar25 = extraout_EDX_05;
                    iVar27 = local_8c;
                  }
                  else if (local_f0 != 0) {
                    FUN_0002b350();
                    iVar15 = extraout_ECX_03;
                    uVar25 = extraout_EDX_03;
                  }
                }
                goto LAB_0009244d;
              }
              local_f0 = 0;
              local_a4 = 0;
LAB_00093044:
              uVar34 = 0x1004;
              if ((*(char *)((int)param_1 + 0x12) == '\0') &&
                 ((((iVar9 != 0 || (iVar10 != 0)) || (local_4c != 0)) ||
                  (uVar34 = 0x100c, bVar26 != 0)))) {
                uVar34 = 0x1004;
              }
              uVar32 = FUN_0007d3c0(0,0,uVar34,local_c0);
              uVar25 = (uint)((ulonglong)uVar32 >> 0x20);
              iVar15 = (int)uVar32;
              if (iVar15 == 0) goto LAB_00091be9;
              local_64 = *(int **)(iVar15 + 0x14);
              local_78 = *(int **)(iVar15 + 0x18);
              local_e4 = (uint)*(byte *)(iVar15 + 0x2e);
              bVar6 = *(byte *)(iVar15 + 0x30) & 1;
              piVar30 = (int *)(local_e4 - 1);
              iVar15 = extraout_ECX_11;
              iVar13 = iVar27;
              if (piVar30 == (int *)0x0) {
                uVar22 = piVar8[9];
                goto LAB_00091f2a;
              }
              piVar17 = (int *)param_1[0x1d];
              if ((int *)param_1[0x1d] == (int *)0x0) {
                piVar17 = param_1;
              }
              *(undefined1 *)(piVar17 + 5) = 1;
              uVar22 = piVar8[9];
              uVar25 = uVar22 & 0x80;
              if (local_e4 == 2) {
                if ((((int)local_78 < 0) || (local_dc == local_78)) ||
                   (iVar15 = (int)local_78 - (int)piVar16, *(char *)((int)piVar18 + iVar15) == '\0')
                   ) goto LAB_00091f2a;
                if (uVar25 == 0) {
                  FUN_000315c0(local_fc,0,uVar22,uVar22);
                  iVar15 = extraout_ECX_14;
                  goto LAB_000931ef;
                }
                local_c8 = (uint)local_a4;
                local_e4 = 0;
                local_98 = (int *)iVar27;
                local_c4 = local_c8;
                if (0 < (int)local_c8) goto LAB_00091f43;
                goto LAB_00092c5d;
              }
              if (uVar25 != 0) goto LAB_00091f32;
              uVar32 = FUN_000315c0(local_fc,0,piVar30,piVar30);
              iVar15 = extraout_ECX_12;
              if (local_e4 == 0) {
LAB_000931ef:
                iVar13 = param_1[0xb];
                param_1[0xb] = iVar13 + 1;
                *local_98 = iVar13 + 1;
                uVar32 = FUN_000315c0(local_fc,0,iVar15,iVar15);
                local_e4 = 0;
                iVar15 = extraout_ECX_15;
                piVar30 = local_98;
              }
              local_c4 = 0;
              iVar13 = local_8c;
              local_98 = (int *)iVar27;
LAB_0009314f:
              if ((local_e4 != 2) && (bVar5)) {
                uVar32 = FUN_00043f00();
                iVar15 = extraout_ECX_13;
              }
              uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
              if (piVar20 == (int *)0x0) {
                if (local_e4 == 0) {
                  piVar17 = piVar8;
                  if (piVar8[0xe] != 0) goto LAB_000932c3;
LAB_00093245:
                  iVar27 = 0;
LAB_00093247:
                  uVar32 = FUN_00017bea(0,piVar16,piVar18,0,0);
LAB_0009326e:
                  if (iVar27 != 0) {
                    iVar15 = local_e8[0x1a] + -1;
                    if (iVar15 == iVar27) {
                      local_e8[0x1a] = iVar27;
                      uVar32 = CONCAT44((int)((ulonglong)uVar32 >> 0x20),local_e8);
                    }
                    else {
                      if (-1 < iVar27) {
                        iVar15 = iVar27;
                      }
                      iVar27 = *local_e8;
                      local_f0 = unaff_EDI + 0x4e0b5;
                      if (*(char *)(iVar27 + 0x4d) == '\0') {
                        local_f0 = iVar15 * 0x14 + local_e8[0x19];
                      }
                      *(int *)(local_f0 + 8) = local_e8[0x1a];
                      uVar32 = CONCAT44(iVar27,local_f0);
                    }
                  }
                  uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
                  piVar17 = (int *)uVar32;
                  if (local_e4 == 0) goto LAB_000932c3;
                }
                else {
                  if (-1 < (int)local_64) {
                    *(undefined1 *)((int)piVar18 + ((int)local_64 - (int)piVar16)) = 0;
                  }
                  if (-1 < (int)local_78) {
                    *(undefined1 *)((int)piVar18 + ((int)local_78 - (int)piVar16)) = 0;
                  }
                  if ((local_e4 == 2) && (0 < local_90 + ((int)~(uint)local_78 >> 0x1f))) {
                    uVar33 = FUN_000315c0(0,0,iVar15,iVar15);
                    uVar32 = CONCAT44((int)((ulonglong)uVar33 >> 0x20),piVar8);
                    iVar27 = (int)uVar33;
                    if (piVar8[0xe] == 0) goto LAB_00093247;
                    goto LAB_0009326e;
                  }
                  if (piVar8[0xe] == 0) goto LAB_00093245;
                }
                piVar30 = local_64;
                if ((local_dc != local_64) && (piVar30 = local_78, local_dc != local_78)) {
                  FUN_000316b0(iVar29,iVar13,local_c4,uVar34);
                }
LAB_00093182:
                local_f0 = iVar29;
                if (local_e4 != 1) {
                  iVar27 = param_1[0xe];
                  param_1[0xe] = iVar27 + -1;
                  local_f0 = iVar27 + -1;
                }
                iVar29 = FUN_000315c0(iVar29,0,local_f0,local_f0);
                local_8c = 0;
                goto LAB_0009246c;
              }
              piVar17 = (int *)uVar32;
              if (local_e4 != 0) goto LAB_00093182;
LAB_000932c3:
              piVar30 = local_e8;
              if ((local_e0 != 0) || (local_100 != 0)) {
                local_f0 = param_1[0xe] + -1;
                param_1[0xe] = local_f0;
                FUN_000315c0(iVar29,0,local_f0,local_f0);
                iVar29 = local_e8[0x1a];
                local_8c = iVar29;
                if (local_100 == 0) {
                  FUN_000315c0(iVar13,0,local_e8,local_e8);
                  FUN_000316b0(local_f0,iVar13,0);
                  goto LAB_00093326;
                }
                if (piVar20 == (int *)0x0) {
                  if (local_e0 == 0) {
                    FUN_000315c0(local_fc,0,iVar29,iVar29);
                    iVar29 = FUN_000315c0(local_f0,local_fc);
                  }
                  else {
                    iVar29 = (int)local_a4;
                    iVar27 = iVar29;
                    uVar34 = extraout_ECX_16;
                    for (piVar30 = (int *)0x0; (int)piVar30 < iVar29;
                        piVar30 = (int *)((int)piVar30 + 1)) {
                      iVar27 = FUN_000315c0(piVar30,(int)local_98 + (int)piVar30,iVar27,iVar27);
                      uVar34 = extraout_ECX_17;
                    }
                    iVar29 = FUN_000316b0(local_f0,local_98,iVar29,uVar34);
                  }
                  goto LAB_0009246c;
                }
                if (cVar1 == '\0') goto LAB_000924ae;
                goto LAB_0009342d;
              }
              local_f0 = FUN_000315c0(iVar29,local_fc,piVar17,piVar17);
              FUN_000315c0(local_f0,local_fc);
              local_8c = 0;
LAB_00093326:
              if (cVar1 != '\0') goto LAB_0009247e;
            }
            else {
              if (local_e0 == 0) {
                local_a4 = 0;
              }
              else {
                local_a4 = *(short *)(local_e0 + 0x32);
              }
              local_c4 = (int)local_a4;
              iVar13 = param_1[0xb];
              iVar27 = iVar13 + 1;
              local_8c = local_100 + 1 + iVar13 + local_c4;
              param_1[0xb] = local_8c;
              if (param_4 == (int *)0x0) {
                if (piVar20 == (int *)0x0) {
                  iVar15 = 0;
                }
                else {
                  iVar15 = (int)*(short *)((int)piVar8 + 0x2a);
                }
                iVar15 = local_c4 + local_100 + iVar15;
                piVar30 = (int *)param_1[10];
                iVar21 = (int)piVar30 + 1;
                param_1[10] = iVar21;
                if (local_e0 == 0) {
                  iVar13 = FUN_000315c0(iVar15,0,iVar21,iVar21);
                  local_f0 = iVar13;
                }
                else {
                  FUN_000315c0(iVar27,iVar13 + local_c4,iVar21,iVar21);
                  local_f0 = FUN_000315c0(iVar15,0);
                  iVar13 = FUN_0004b310();
                  if (iVar13 != 0) {
                    *(short *)(iVar13 + 8) = (short)iVar15;
                    iVar13 = FUN_0002b210();
                  }
                }
                if (local_100 == 0) goto LAB_00093044;
                FUN_0001addf(extraout_ECX,extraout_EDX,param_2,iVar13);
                iVar15 = extraout_ECX_19;
                uVar25 = extraout_EDX_08;
                if (piVar20 != (int *)0x0) {
                  local_dc = piVar30;
                }
              }
              else if (local_100 == 0) goto LAB_00091ee2;
              local_e4 = 0;
              bVar6 = 1;
              piVar30 = (int *)param_1[0x1d];
              if ((int *)param_1[0x1d] == (int *)0x0) {
                piVar30 = param_1;
              }
              *(undefined1 *)(piVar30 + 5) = 1;
              local_98 = (int *)iVar27;
LAB_0009244d:
              uVar32 = CONCAT44(uVar25,iVar29);
              local_8c = 0;
              piVar30 = param_4;
              iVar13 = iVar27;
              local_f0 = iVar29;
              if (param_4 == (int *)0x0) goto LAB_0009314f;
LAB_0009246c:
              if (cVar1 != '\0') {
                if (local_100 == 0) {
LAB_0009247e:
                  if (param_1[2] != 0) {
                    FUN_00077ad0();
                  }
                }
                else {
LAB_0009342d:
                  FUN_000315c0(local_ac,local_d4,iVar29,iVar29);
                }
                FUN_000315c0(0,0,piVar30,piVar30);
              }
            }
LAB_000924ae:
            if ((local_6e != '\0') || (bVar31)) {
              local_c8 = 0;
              if ((iVar10 != 0) && ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0)) {
                local_c8 = FUN_00017857();
              }
LAB_000924dd:
              uVar25 = FUN_00096110(0,3,piVar8,param_3);
              piVar16 = piVar8;
              if (0 < *(short *)((int)piVar8 + 0x2a)) {
                iVar27 = 0;
                do {
                  sVar7 = (short)iVar27;
                  if ((*(byte *)(piVar8 + 9) & 0x20) != 0) {
                    sVar7 = FUN_0002a110();
                  }
                  if (((uVar25 | local_c8) == 0xffffffff) ||
                     (((iVar27 < 0x20 && (((uVar25 | local_c8) & 1 << ((byte)iVar27 & 0x1f)) != 0))
                      || (iVar9 = piVar8[1] + iVar27 * 0x14, (*(byte *)(iVar9 + 0x10) & 1) != 0))))
                  {
                    FUN_00077cb0(iVar27,sVar7 + local_74);
                  }
                  else {
                    FUN_000315c0(sVar7 + local_74,0,iVar9,iVar9);
                  }
                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                  iVar27 = iVar27 + 1;
                } while (iVar27 < (int)piVar16);
              }
              if ((cVar1 == '\0') && (local_e0 == 0)) {
                FUN_000315c0(local_d4,0,piVar16,piVar16);
              }
            }
            else {
              local_c8 = 0;
              if (iVar9 != 0) goto LAB_000924dd;
            }
            piVar30 = piVar8;
            piVar17 = (int *)FUN_00096110(1,1,piVar8,param_3);
            piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
            piVar16 = piVar8;
            if (0 < (int)piVar18) {
              piVar16 = (int *)0x0;
              iVar27 = local_94;
              do {
                if ((int *)(int)(short)piVar8[10] == piVar16) {
LAB_000926a2:
                  FUN_000315c0(iVar27,0,piVar30);
                  piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                }
                else {
                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);
                  if ((uVar2 & 0x60) == 0) {
                    if ((int)puVar11[(int)piVar16] < 0) {
                      piVar19 = piVar18;
                      if ((((local_50[0] & 1) != 0) && ((int)piVar16 < 0x20)) &&
                         (piVar19 = piVar17, ((uint)piVar17 >> ((uint)piVar16 & 0x1f) & 1) == 0))
                      goto LAB_000926a2;
                      FUN_00077cb0(piVar16,iVar27,piVar19,piVar19);
                      bVar6 = 0;
                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                      piVar30 = piVar19;
                    }
                    else if (local_100 == 0) {
                      if (param_1[2] != 0) {
                        FUN_00077ad0();
                        piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                      }
                    }
                    else {
                      if (piVar20 == (int *)0x0) {
                        piVar18 = (int *)(int)local_a4;
                      }
                      piVar30 = piVar20;
                      FUN_000315c0(puVar11[(int)piVar16] + (int)piVar18,iVar27,piVar20,piVar20);
                      piVar18 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                    }
                  }
                  else {
                    iVar27 = iVar27 + -1 + (uint)((uVar2 & 0x20) == 0);
                  }
                }
                piVar16 = (int *)((int)piVar16 + 1);
                iVar27 = iVar27 + 1;
              } while ((int)piVar16 < (int)piVar18);
            }
            if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
              FUN_00018629();
            }
            if ((local_50[0] & 1) == 0) {
              if (piVar20 == (int *)0x0) {
LAB_00092d63:
                uVar32 = FUN_0001b7d8(local_dc,local_c0,local_d4,local_fc,piVar14,param_3 & 0xff,
                                      local_f0,&local_4c,puVar11,0,piVar16,piVar16);
                uVar34 = (undefined4)((ulonglong)uVar32 >> 0x20);
                bVar31 = bVar26 != 0;
                piVar16 = (int *)(uint)bVar31;
                if ((local_4c != 0) || (piVar20 = piVar16, bVar31)) {
                  if (local_e0 == 0) {
                    piVar20 = (int *)FUN_000315c0(local_f0,local_fc,uVar34,uVar34);
                  }
                  else {
                    piVar20 = (int *)FUN_000316b0(local_f0,iVar13,local_c4,extraout_ECX_06);
                  }
                }
                if (iVar10 != 0) {
                  piVar20 = (int *)FUN_0001b07a(0,puVar11,piVar14,piVar20);
                }
                uVar32 = FUN_0001a8f2(local_c0,piVar23,0xffffffff,piVar20);
                piVar20 = extraout_ECX_07;
                if (bVar6 != 0) {
                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);
                  piVar20 = extraout_ECX_08;
                }
                if ((1 < iVar10) || (bVar31)) {
                  uVar32 = FUN_000315c0(0,0,(int)uVar32,(int)uVar32);
                  piVar20 = extraout_ECX_09;
                }
                piVar30 = (int *)((ulonglong)uVar32 >> 0x20);
                if (iVar10 == 0) {
                  if (local_e4 == 2) {
                    uVar34 = 6;
                  }
                  else {
                    uVar34 = 4;
                    piVar30 = piVar20;
                  }
                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);
                }
                else {
                  piVar30 = (int *)FUN_0001b07a(local_d4,puVar11,piVar14,(int)uVar32);
                  if (local_e4 == 2) {
                    uVar34 = 6;
                  }
                  else {
                    uVar34 = 4;
                    piVar30 = piVar16;
                  }
                  FUN_00016ec8(local_c0,local_d4,piVar23,uVar34,0,0,piVar30,piVar30);
                  if ((*(byte *)(*param_1 + 0x1d) & 0x40) != 0) {
                    FUN_0001cbe8(local_fc,puVar11,piVar14,*param_1);
                    piVar30 = piVar14;
                  }
                }
              }
            }
            else {
              piVar30 = (int *)FUN_00032360();
              uVar34 = FUN_00096280(extraout_ECX,1,piVar8,local_fc,param_3,local_f0,piVar30,piVar30)
              ;
              piVar16 = piVar8;
              if (piVar20 == (int *)0x0) {
                if (local_e0 == 0) {
                  FUN_000315c0(local_f0,local_fc,uVar34,uVar34);
                }
                else {
                  FUN_000316b0(local_f0,iVar13,local_c4,uVar34);
                }
                local_ec = local_94;
                iVar27 = (int)*(short *)((int)piVar8 + 0x2a);
                for (piVar16 = (int *)0x0; (int)piVar16 < iVar27;
                    piVar16 = (int *)((int)piVar16 + 1)) {
                  uVar2 = *(ushort *)((int)piVar16 * 0x14 + piVar8[1] + 0x10);
                  if ((uVar2 & 0x60) == 0) {
                    if (((int)puVar11[(int)piVar16] < 0) &&
                       (piVar16 != (int *)(int)(short)piVar8[10])) {
                      FUN_00077cb0(piVar16,local_ec,iVar27,iVar27);
                      iVar27 = (int)*(short *)((int)piVar8 + 0x2a);
                    }
                  }
                  else {
                    local_ec = local_ec - (uint)((uVar2 & 0x20) != 0);
                  }
                  local_ec = local_ec + 1;
                }
                if ((*(byte *)(piVar8 + 9) & 0x60) != 0) {
                  FUN_00018629();
                }
                goto LAB_00092d63;
              }
            }
            if (local_9c != 0) {
              FUN_000315c0(1,0,piVar16,piVar16);
              piVar30 = piVar16;
            }
            FUN_00096280(extraout_ECX,2,piVar8,local_fc,param_3,local_f0,piVar30);
            if (local_e4 != 1) {
              if (local_e4 == 2) {
                FUN_00031430();
                FUN_00043f00();
              }
              else if ((local_e0 == 0) && (local_100 == 0)) {
                FUN_000315c0(local_f0,0,extraout_EDX_04,extraout_EDX_04);
              }
              else {
                FUN_00031430();
                FUN_000315c0(local_8c,0,extraout_ECX_05,extraout_ECX_05);
              }
            }
            FUN_00031430();
            if ((((*(char *)((int)param_1 + 0x12) == '\0') && (param_1[0x1e] == 0)) &&
                (param_4 == (int *)0x0)) && (param_1[0x1c] != 0)) {
              FUN_00017af1();
            }
            if (local_9c != 0) {
              FUN_000315c0(1,0,local_9c,local_9c);
              FUN_0002ee80();
              iVar27 = *local_e8;
              if (*(char *)(iVar27 + 0x4d) == '\0') {
                FUN_0004ab40(unaff_EDI + 0x199ff,0,iVar27,iVar27);
              }
            }
          }
          else {
            piVar20 = (int *)param_1[2];
            piVar16 = (int *)piVar8[0x10];
            if (piVar16 != (int *)0x0) {
              iVar27 = *piVar16;
              while ((iVar27 != *param_1 && (piVar16 = (int *)piVar16[6], piVar16 != (int *)0x0))) {
                iVar27 = *piVar16;
              }
            }
            sVar7 = *(short *)((int)piVar8 + 0x2a);
            iVar27 = sVar7 + 2;
            iVar9 = param_1[10] + 1;
            param_1[10] = iVar9;
            local_f8 = FUN_000315c0(iVar27,0,iVar9,iVar9);
            iVar10 = param_1[0xb];
            iVar9 = iVar10 + 1;
            iVar29 = iVar27 + iVar10;
            param_1[0xb] = iVar29;
            if (*extraout_EDX < 2) {
              iVar15 = iVar29 + 2;
              param_1[0xb] = iVar15;
              iVar13 = FUN_0007d3c0(0,0,4,0);
              if (iVar13 == 0) goto LAB_00091be9;
              iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
              for (iVar28 = 0; iVar28 < iVar21; iVar28 = iVar28 + 1) {
                if ((int)puVar11[iVar28] < 0) {
                  FUN_000315c0(iVar28,iVar10 + 3 + iVar28,iVar21,iVar21);
                  if (0 < piVar20[0x1a]) {
                    *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = 1;
                  }
                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
                }
                else if (param_1[2] != 0) {
                  FUN_00077ad0();
                  iVar21 = (int)*(short *)((int)piVar8 + 0x2a);
                }
              }
              if ((*(byte *)(piVar8 + 9) & 0x80) == 0) {
                uVar34 = FUN_000315c0(iVar9,0,piVar8,piVar8);
                if (local_b8 == 0) {
                  FUN_000315c0(iVar10 + 2,0,uVar34,uVar34);
                }
                else if (param_1[2] != 0) {
                  FUN_00077ad0();
                }
              }
              else {
                iVar21 = piVar8[2];
                while( true ) {
                  if (iVar21 == 0) {
                    /* WARNING: Does not return */
                    pcVar4 = (code *)invalidInstructionException();
                    (*pcVar4)();
                  }
                  if ((*(byte *)(iVar21 + 0x37) & 3) == 2) break;
                  iVar21 = *(int *)(iVar21 + 0x14);
                }
                psVar3 = *(short **)(iVar21 + 4);
                FUN_000315c0((int)*psVar3,iVar9,psVar3,psVar3);
                FUN_000315c0(iVar10 + 2,0);
              }
              cVar1 = *(char *)(iVar13 + 0x2e);
              if (cVar1 == '\0') {
                piVar8 = (int *)param_1[0x1d];
                if ((int *)param_1[0x1d] == (int *)0x0) {
                  piVar8 = param_1;
                }
                *(undefined1 *)(piVar8 + 5) = 1;
                FUN_000315c0(iVar27,iVar29 + 1,piVar8,piVar8);
                FUN_000315c0(iVar15,0);
                FUN_000315c0(iVar29 + 1,iVar15);
                goto LAB_000922b8;
              }
              uVar34 = FUN_0002b350();
              FUN_000315c0(0,0,uVar34,uVar34);
            }
            else {
              if (local_b8 == 0) {
                FUN_00047ba0(0);
              }
              else {
                FUN_00052c60(0);
              }
              iVar10 = FUN_000449c0();
              piVar16 = piVar8;
              if (0 < *(short *)((int)piVar8 + 0x2a)) {
                iVar29 = 0;
                do {
                  if ((int)puVar11[iVar29] < 0) {
                    iVar10 = FUN_00047ba0(0);
                    if (iVar10 != 0) {
                      *(short *)(iVar10 + 0x20) = (short)iVar29 + 1;
                    }
                  }
                  else if (extraout_ECX[puVar11[iVar29] * 4 + 1] != 0) {
                    FUN_00052c60(0);
                  }
                  iVar29 = iVar29 + 1;
                  iVar10 = FUN_000449c0();
                  piVar16 = (int *)(int)*(short *)((int)piVar8 + 0x2a);
                } while (iVar29 < (int)piVar16);
              }
              FUN_0001addf(iVar10,extraout_EDX,param_2,piVar16);
              if (iVar10 != 0) {
                FUN_000433a0();
              }
LAB_000922b8:
              piVar8 = extraout_EDX;
              if (*extraout_EDX == 1) {
                piVar8 = (int *)FUN_00043f00();
              }
              piVar16 = piVar8;
              local_f8 = FUN_000315c0(0,0,piVar8,piVar8);
              cVar1 = '\0';
              if (0 < iVar27) {
                iVar10 = 0;
                do {
                  iVar29 = iVar10 + 1;
                  FUN_000315c0(iVar10,iVar9 + iVar10,piVar8,piVar16);
                  iVar10 = iVar29;
                } while (iVar29 != sVar7 + 2);
              }
            }
            uVar34 = FUN_0002e240();
            FUN_000315c0(iVar27,iVar9,uVar34,uVar34);
            FUN_00032090(0xfffffff4);
            if (param_3 == 0xb) {
              param_3._0_2_ = 2;
            }
            else {
            }
            if (0 < piVar20[0x1a]) {
              *(undefined2 *)(piVar20[0x1a] * 0x14 + piVar20[0x19] + -0x12) = (undefined2)param_3;
            }
            piVar8 = (int *)param_1[0x1d];
            if ((int *)param_1[0x1d] == (int *)0x0) {
              piVar8 = param_1;
            }
            *(undefined1 *)((int)piVar8 + 0x15) = 1;
            if (cVar1 == '\0') {
              FUN_000315c0(local_f8 + 1,0,param_1,param_1);
              if (local_f8 < 0) {
                local_f8 = piVar20[0x1a] + -1;
              }
              iVar27 = unaff_EDI + 0x4e0b5;
              if (*(char *)(*piVar20 + 0x4d) == '\0') {
                iVar27 = local_f8 * 0x14 + piVar20[0x19];
              }
              *(int *)(iVar27 + 8) = piVar20[0x1a];
              FUN_000315c0(0,0,unaff_EDI + 0x4cae5,unaff_EDI + 0x4cae5);
            }
            else {
              FUN_00043f00();
            }
          }
        }
LAB_00091be9:
        piVar8 = local_44;
        if (local_44 != (int *)0x0) {
          local_44 = (int *)0x0;
          piVar8[0x3d] = local_48;
        }
        FUN_00024720();
        goto LAB_00091598;
      }
    }
  }
  piVar8 = local_44;
  if (local_44 != (int *)0x0) {
    local_44 = (int *)0x0;
    piVar8[0x3d] = local_48;
  }
LAB_00091598:
  FUN_00043120();
  if (extraout_ECX != (uint *)0x0) {
    FUN_000433a0();
  }
  if (param_2 != 0) {
    FUN_000432e0();
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
LAB_00091b70:
  iVar29 = iVar29 + 1;
  local_fc = local_fc + 5;
  if (iVar29 == iVar10) goto LAB_00091b82;
  goto LAB_000918f0;
}

