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

{
  int *piVar1;
  u16 p5;
  short sVar2;
  sqlite3 *db;
  ExprList *pEVar3;
  bool bVar4;
  i16 iVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int p1;
  int iVar9;
  int iVar10;
  int iVar11;
  int op;
  Vdbe *p;
  char *pcVar12;
  Expr *pEVar13;
  Trigger *pTVar14;
  FKey *pFVar15;
  CollSeq *zP4;
  VdbeOp *pVVar16;
  byte bVar17;
  bool bVar18;
  uint uVar19;
  long lVar20;
  Index *pIdx;
  p4union zP4_00;
  int iVar21;
  Column *pCVar22;
  bool bVar23;
  bool eMode;
  int local_100;
  uint local_fc;
  int local_e4;
  int local_dc;
  Index *local_d0;
  uint local_c8;
  uint local_c4;
  Trigger *local_c0;
  uint local_b8;
  int local_b4;
  Index *local_b0;
  int local_a8;
  uint local_9c;
  int local_90;
  int local_8c;
  int local_88;
  int local_84;
  byte local_74;
  u8 isUpdate;
  int local_48;
  
  local_74 = overrideError;
  bVar23 = regOldData != 0;
  db = pParse->db;
  p = sqlite3GetVdbe(pParse);
  uVar19 = pTab->tabFlags;
  if ((uVar19 & 0x80) == 0) {
    local_9c = 1;
    local_b0 = (Index *)0x0;
  }
  else {
    local_b0 = sqlite3PrimaryKeyIndex(pTab);
    local_9c = (uint)local_b0->nKeyCol;
  }
  if ((uVar19 >> 0xb & 1) != 0) {
    sVar2 = pTab->nCol;
    local_e4 = 0;
    local_fc = 0;
    bVar4 = false;
    do {
      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {
        pCVar22 = pTab->aCol + lVar20;
        uVar19 = (uint)pCVar22->notNull;
        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {
          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;
          if ((uVar6 == 0) || (bVar4)) {
            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {
              if (overrideError == '\v') {
                if (uVar19 != 0xb) goto LAB_00179e91;
                uVar19 = 2;
LAB_00179efc:
                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;
              }
              else {
                uVar19 = (uint)overrideError;
LAB_00179e91:
                if (uVar19 != 5) goto LAB_00179efc;
                if (bVar4) {
                  uVar19 = 2;
                }
                else if (pCVar22->pDflt == (Expr *)0x0) {
                  uVar19 = 2;
                }
              }
              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);
              iVar8 = regNewData + 1 + (int)iVar5;
              if (uVar19 == 2) {
                sqlite3MayAbort(pParse);
LAB_00179f5d:
                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);
                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);
                sqlite3VdbeAppendP4(p,pcVar12,-7);
                sqlite3VdbeChangeP5(p,1);
              }
              else {
                if (uVar19 < 3) {
                  if (uVar19 == 1) goto LAB_00179f5d;
                }
                else {
                  if (uVar19 == 3) goto LAB_00179f5d;
                  if (uVar19 == 5) {
                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);
                    local_fc = local_fc + 1;
                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);
                    sqlite3VdbeJumpHere(p,iVar7);
                    goto LAB_00179e5a;
                  }
                }
                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);
              }
            }
          }
          else {
            local_e4 = local_e4 + 1;
          }
        }
LAB_00179e5a:
      }
      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;
      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {
        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);
      }
      bVar4 = true;
    } while( true );
  }
  pEVar3 = pTab->pCheck;
  bVar4 = false;
  if ((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {
    pParse->iSelfTab = ~regNewData;
    bVar17 = 2;
    if (overrideError != '\v') {
      bVar17 = overrideError;
    }
    uVar19 = (uint)bVar17;
    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {
      pEVar13 = pEVar3->a[local_100].pExpr;
      if ((aiChng == (int *)0x0) ||
         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {
        if (!bVar4) {
          sqlite3TableAffinity(p,pTab,regNewData + 1);
        }
        iVar8 = pParse->nLabel + -1;
        pParse->nLabel = iVar8;
        pEVar13 = sqlite3ExprDup(db,pEVar13,0);
        if (db->mallocFailed == '\0') {
          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);
        }
        sqlite3ExprDelete(db,pEVar13);
        if (uVar19 == 4) {
          sqlite3VdbeGoto(p,ignoreDest);
        }
        else {
          pcVar12 = pEVar3->a[local_100].zEName;
          if (pcVar12 == (char *)0x0) {
            pcVar12 = pTab->zName;
          }
          if (uVar19 == 5) {
            uVar19 = 2;
          }
          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');
        }
        sqlite3VdbeResolveLabel(p,iVar8);
        bVar4 = true;
      }
    }
    pParse->iSelfTab = 0;
  }
  if (pUpsert == (Upsert *)0x0) {
    local_b4 = 0;
    local_d0 = (Index *)0x0;
  }
  else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {
    local_b4 = 0;
    local_d0 = (Index *)0x0;
    pUpsert = (Upsert *)0x0;
    local_74 = 4;
  }
  else {
    local_d0 = pUpsert->pUpsertIdx;
    local_b4 = 0;
    if (local_d0 != (Index *)0x0) {
      local_b4 = sqlite3VdbeAddOp0(p,0xb);
    }
  }
  if ((db->flags & 0x6000) == 0) {
    local_c0 = (Trigger *)0x0;
    local_c8 = 0;
    local_fc = 0;
  }
  else {
    if (((uint)db->flags >> 0xd & 1) == 0) {
      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);
LAB_0017a0bd:
      local_c8 = local_fc;
      local_c0 = (Trigger *)0x0;
      if (local_fc == 0) goto LAB_0017a102;
    }
    else {
      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);
      if (local_c0 == (Trigger *)0x0) {
        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);
        local_fc = (uint)(iVar8 != 0);
        goto LAB_0017a0bd;
      }
    }
    local_fc = pParse->nMem + 1;
    pParse->nMem = local_fc;
    sqlite3VdbeAddOp2(p,0x45,0,local_fc);
    local_c8 = pParse->nLabel - 1;
    pParse->nLabel = local_c8;
  }
LAB_0017a102:
  if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {
    local_b8 = 0;
    local_90 = 0;
    local_100 = 0;
    local_e4 = 0;
    goto LAB_0017a4e9;
  }
  iVar8 = pParse->nLabel + -1;
  pParse->nLabel = iVar8;
  bVar17 = local_74;
  if ((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)) {
    uVar19 = 2;
    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;
    if (regOldData != 0) {
      uVar19 = 2;
      local_100 = 0;
      goto LAB_0017a437;
    }
    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);
    local_100 = regOldData;
    uVar19 = 2;
    goto switchD_0017a48f_caseD_1;
  }
  uVar19 = (uint)bVar17;
  if (pUpsert != (Upsert *)0x0) {
LAB_0017a14e:
    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;
    if (pUpsert->pUpsertSet != (ExprList *)0x0) {
      if (regOldData != 0) {
        uVar19 = 6;
        local_100 = 0;
        goto LAB_0017a437;
      }
      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);
      local_100 = regOldData;
      goto switchD_0017a48f_caseD_6;
    }
    if (regOldData != 0) {
      uVar19 = 4;
      local_100 = 0;
      goto LAB_0017a437;
    }
    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);
    local_100 = regOldData;
    goto switchD_0017a48f_caseD_4;
  }
LAB_0017a353:
  if (uVar19 == 5) {
    local_100 = 0;
    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {
      local_100 = sqlite3VdbeAddOp0(p,0xb);
      local_100 = local_100 + 1;
    }
    if (regOldData != 0) {
LAB_0017a437:
      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);
      sqlite3VdbeChangeP5(p,0x90);
      goto LAB_0017a45f;
    }
    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);
switchD_0017a48f_caseD_5:
    if (local_fc == 0) {
      if (pTab->pIndex == (Index *)0x0) {
        local_b8 = local_fc;
        local_e4 = 1;
      }
      else {
        sqlite3MultiWrite(pParse);
        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);
        local_b8 = local_fc;
        local_e4 = 1;
      }
    }
    else {
      sqlite3MultiWrite(pParse);
      sqlite3GenerateRowDelete
                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);
      sqlite3VdbeAddOp2(p,0x52,local_fc,1);
      local_b8 = 1;
      local_e4 = 1;
    }
  }
  else {
    local_100 = regOldData;
    if (regOldData != 0) {
      local_100 = 0;
      goto LAB_0017a437;
    }
LAB_0017a45f:
    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);
    switch(uVar19) {
    case 5:
      goto switchD_0017a48f_caseD_5;
    case 6:
switchD_0017a48f_caseD_6:
      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);
    case 4:
switchD_0017a48f_caseD_4:
      sqlite3VdbeGoto(p,ignoreDest);
      local_b8 = 0;
      local_e4 = 0;
      break;
    default:
      uVar19 = 2;
    case 1:
    case 2:
    case 3:
switchD_0017a48f_caseD_1:
      sqlite3RowidConstraint(pParse,uVar19,pTab);
      local_b8 = 0;
      local_e4 = 0;
    }
  }
  sqlite3VdbeResolveLabel(p,iVar8);
  local_90 = local_100;
  if (local_100 != 0) {
    local_90 = sqlite3VdbeAddOp0(p,0xb);
    sqlite3VdbeJumpHere(p,local_100 + -1);
  }
LAB_0017a4e9:
  pIdx = pTab->pIndex;
  local_c4 = local_c8;
  local_84 = 0;
  local_a8 = 0;
  do {
    if (pIdx == (Index *)0x0) {
      if (local_100 != 0) {
        sqlite3VdbeGoto(p,local_100);
        sqlite3VdbeJumpHere(p,local_90);
      }
      if (local_b8 != 0) {
        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);
        if (local_b0 == (Index *)0x0) {
          if (regOldData != 0) {
            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);
            sqlite3VdbeChangeP5(p,0x90);
          }
          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);
          sqlite3RowidConstraint(pParse,2,pTab);
        }
        else {
          sqlite3VdbeGoto(p,local_c8);
        }
        sqlite3VdbeResolveLabel(p,local_c4);
      }
      if (((pTab->tabFlags & 0x80) == 0) &&
         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {
        sqlite3TableAffinity(p,pTab,0);
      }
      *pbMayReplace = local_e4;
      return;
    }
    piVar1 = aRegIdx + local_a8;
    if (*piVar1 != 0) {
      if (pIdx == local_d0) {
        iVar8 = local_b4 + 1;
        local_84 = sqlite3VdbeGoto(p,0);
        sqlite3VdbeJumpHere(p,local_b4);
        if (!bVar4) {
LAB_0017a81c:
          sqlite3TableAffinity(p,pTab,regNewData + 1);
          bVar4 = true;
        }
      }
      else {
        iVar8 = pParse->nLabel + -1;
        pParse->nLabel = iVar8;
        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;
      }
      if (pIdx->pPartIdxWhere != (Expr *)0x0) {
        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);
        pParse->iSelfTab = ~regNewData;
        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);
        pParse->iSelfTab = 0;
      }
      iVar7 = *piVar1;
      p1 = iVar7 + 1;
      iVar9 = iVar7 + 1;
      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {
        sVar2 = pIdx->aiColumn[iVar10];
        if (sVar2 == -2) {
          pParse->iSelfTab = ~regNewData;
          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);
          pParse->iSelfTab = 0;
        }
        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {
          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);
        }
        else {
          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);
          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);
        }
      }
      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);
      eMode = pIdx == local_b0;
      if ((bVar23 && pkChng == '\0') && (eMode)) {
        sqlite3VdbeResolveLabel(p,iVar8);
      }
      else {
        uVar19 = (uint)pIdx->onError;
        if (pIdx->onError == 0) {
          sqlite3VdbeResolveLabel(p,iVar8);
        }
        else {
          if (local_74 == 0xb) {
            if (uVar19 == 0xb) {
              uVar19 = 2;
            }
          }
          else {
            uVar19 = (uint)local_74;
          }
          if (pIdx == local_d0) {
            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;
          }
          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&
             ((((db->flags & 0x2000) == 0 ||
               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),
               pTVar14 == (Trigger *)0x0)) &&
              (((db->flags & 0x4000) == 0 ||
               ((pTab->pFKey == (FKey *)0x0 &&
                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {
            sqlite3VdbeResolveLabel(p,iVar8);
          }
          else {
            iVar9 = local_a8 + iIdxCur;
            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);
            local_dc = p1;
            if (pIdx != local_b0) {
              local_dc = sqlite3GetTempRange(pParse,local_9c);
            }
            if ((uVar19 == 5) || (bVar23)) {
              if ((pTab->tabFlags & 0x80) == 0) {
                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);
                if (regOldData != 0) {
                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);
                  sqlite3VdbeChangeP5(p,0x90);
                }
              }
              else {
                iVar11 = 0;
                if (pIdx != local_b0) {
                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {
                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);
                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);
                  }
                }
                if (regOldData != 0) {
                  local_8c = (uint)local_b0->nKeyCol + p->nOp;
                  iVar11 = local_dc;
                  if ((pIdx->field_0x63 & 3) == 2) {
                    iVar11 = p1;
                  }
                  local_88 = 0x34;
                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {
                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);
                    bVar18 = local_b0->nKeyCol - 1 == iVar21;
                    if (bVar18) {
                      local_8c = iVar8;
                    }
                    op = 0x35;
                    if (!bVar18) {
                      op = local_88;
                    }
                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);
                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,
                                      (char *)zP4,-2);
                    sqlite3VdbeChangeP5(p,0x90);
                    local_88 = op;
                  }
                }
              }
            }
            if (uVar19 == 4) {
LAB_0017ad29:
              sqlite3VdbeGoto(p,ignoreDest);
            }
            else {
              if ((int)uVar19 < 5) {
                if (0 < (int)uVar19) {
                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);
                  goto LAB_0017ad47;
                }
              }
              else if (uVar19 == 6) {
                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);
                goto LAB_0017ad29;
              }
              iVar11 = p->nOp;
              if (local_fc != 0) {
                sqlite3MultiWrite(pParse);
                local_b8 = local_b8 + 1;
              }
              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;
              if (bVar18) {
                sqlite3VdbeAddOp1(p,0x9f,iDataCur);
              }
              sqlite3GenerateRowDelete
                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',
                         eMode,iVar9);
              if (bVar18) {
                sqlite3VdbeAddOp1(p,0xa0,iDataCur);
              }
              local_e4 = 1;
              if (local_fc != 0) {
                sqlite3VdbeAddOp2(p,0x52,local_fc,1);
                iVar9 = sqlite3VdbeAddOp0(p,0xb);
                sqlite3VdbeResolveLabel(p,local_c4);
                local_c4 = pParse->nLabel - 1;
                pParse->nLabel = local_c4;
                if (pIdx->pPartIdxWhere != (Expr *)0x0) {
                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);
                }
                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {
                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);
                  zP4_00 = pVVar16->p4;
                  bVar17 = pVVar16->opcode;
                  if (bVar17 != 0x86) {
                    uVar19 = local_c4;
                    if ((""[(int)(uint)bVar17] & 1) == 0) {
                      uVar19 = pVVar16->p2;
                    }
                    if (pVVar16->p4type == -3) {
                      local_48 = zP4_00.i;
                      zP4_00 = (p4union)(long)local_48;
                    }
                    p5 = pVVar16->p5;
                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,
                                      (int)pVVar16->p4type);
                    sqlite3VdbeChangeP5(p,p5);
                  }
                }
                sqlite3UniqueConstraint(pParse,2,pIdx);
                sqlite3VdbeJumpHere(p,iVar9);
                local_e4 = 1;
              }
            }
LAB_0017ad47:
            if (pIdx == local_d0) {
              sqlite3VdbeGoto(p,local_b4 + 1);
              sqlite3VdbeJumpHere(p,local_84);
            }
            else {
              sqlite3VdbeResolveLabel(p,iVar8);
            }
            if (local_dc != p1) {
              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);
            }
          }
        }
      }
    }
    pIdx = pIdx->pNext;
    local_a8 = local_a8 + 1;
  } while( true );
}



void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,
                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,
                 undefined4 *param_11,long param_12,long *param_13)

{
  undefined2 uVar1;
  short sVar2;
  long lVar3;
  int *piVar4;
  bool bVar5;
  short sVar6;
  short sVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  int iVar13;
  long lVar14;
  long lVar15;
  undefined8 uVar16;
  byte *pbVar17;
  byte bVar18;
  byte bVar19;
  bool bVar20;
  uint uVar21;
  int iVar22;
  long lVar23;
  int iVar24;
  undefined8 *puVar25;
  bool bVar26;
  bool bVar27;
  int local_100;
  uint local_fc;
  int local_e4;
  int local_dc;
  long local_d0;
  uint local_c8;
  uint local_c4;
  long local_c0;
  uint local_b8;
  int local_b4;
  long local_b0;
  int local_a8;
  int local_90;
  int local_8c;
  undefined4 local_88;
  undefined4 local_84;
  byte local_74;
  int local_48;
  
  local_74 = param_9;
  bVar26 = param_7 != 0;
  lVar3 = *param_1;
  lVar14 = FUN_00121a1e();
  uVar21 = *(uint *)(param_2 + 8);
  if ((uVar21 & 0x80) == 0) {
    sVar2 = 1;
    local_b0 = 0;
  }
  else {
    local_b0 = FUN_00111247(param_2);
    sVar2 = *(short *)(local_b0 + 0x5e);
  }
  if ((uVar21 >> 0xb & 1) != 0) {
    sVar7 = *(short *)((long)param_2 + 0x46);
    local_e4 = 0;
    local_fc = 0;
    bVar5 = false;
    do {
      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {
        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);
        bVar19 = *(byte *)(puVar25 + 3);
        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {
          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;
          if ((uVar21 == 0) || (bVar5)) {
            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {
              bVar18 = param_9;
              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {
                bVar18 = 2;
LAB_00179efc:
                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;
              }
              else {
                if (bVar18 != 5) goto LAB_00179efc;
                if (bVar5) {
                  bVar18 = 2;
                }
                else if (puVar25[1] == 0) {
                  bVar18 = 2;
                }
              }
              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);
              iVar8 = param_6 + 1 + (int)sVar6;
              if (bVar18 == 2) {
                FUN_001115a2(param_1);
LAB_00179f5d:
                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);
                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);
                FUN_0011aa64(lVar14,uVar16,0xfffffff9);
                FUN_0010f49a(lVar14,1);
              }
              else {
                if (bVar18 < 3) {
                  if (bVar18 == 1) goto LAB_00179f5d;
                }
                else {
                  if (bVar18 == 3) goto LAB_00179f5d;
                  if (bVar18 == 5) {
                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);
                    local_fc = local_fc + 1;
                    FUN_0015ba64(param_1,puVar25[1],iVar8);
                    FUN_0010f4fb(lVar14,uVar12);
                    goto LAB_00179e5a;
                  }
                }
                FUN_001207c0(lVar14,0x32,iVar8,param_10);
              }
            }
          }
          else {
            local_e4 = local_e4 + 1;
          }
        }
LAB_00179e5a:
      }
      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;
      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {
        FUN_0015bd19(param_1,param_6 + 1,param_2);
      }
      bVar5 = true;
    } while( true );
  }
  piVar4 = (int *)param_2[6];
  bVar5 = false;
  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {
    *(uint *)(param_1 + 8) = ~param_6;
    bVar19 = 2;
    if (param_9 != 0xb) {
      bVar19 = param_9;
    }
    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {
      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);
      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {
        if (!bVar5) {
          FUN_0013c76e(lVar14,param_2,param_6 + 1);
        }
        iVar8 = *(int *)((long)param_1 + 0x44) + -1;
        *(int *)((long)param_1 + 0x44) = iVar8;
        uVar16 = FUN_00135319(lVar3,uVar16,0);
        if (*(char *)(lVar3 + 0x61) == '\0') {
          FUN_00159eda(param_1,uVar16,iVar8,0x10);
        }
        FUN_0011c4af(lVar3,uVar16);
        if (bVar19 == 4) {
          FUN_00120941(lVar14,param_10);
        }
        else {
          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);
          if (lVar23 == 0) {
            lVar23 = *param_2;
          }
          if (bVar19 == 5) {
            bVar19 = 2;
          }
          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);
        }
        FUN_00120437(lVar14,iVar8);
        bVar5 = true;
      }
    }
    *(undefined4 *)(param_1 + 8) = 0;
  }
  if (param_13 == (long *)0x0) {
    local_b4 = 0;
    local_d0 = 0;
  }
  else if (*param_13 == 0) {
    local_b4 = 0;
    local_d0 = 0;
    param_13 = (long *)0x0;
    local_74 = 4;
  }
  else {
    local_d0 = param_13[4];
    local_b4 = 0;
    if (local_d0 != 0) {
      local_b4 = FUN_0012083c(lVar14,0xb);
    }
  }
  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {
    local_c0 = 0;
    local_c8 = 0;
    local_fc = 0;
  }
  else {
    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {
      local_fc = FUN_001116f3(param_1,param_2,0,0);
LAB_0017a0bd:
      local_c8 = local_fc;
      local_c0 = 0;
      if (local_fc == 0) goto LAB_0017a102;
    }
    else {
      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);
      if (local_c0 == 0) {
        iVar8 = FUN_001116f3(param_1,param_2,0,0);
        local_fc = (uint)(iVar8 != 0);
        goto LAB_0017a0bd;
      }
    }
    local_fc = (int)param_1[7] + 1;
    *(uint *)(param_1 + 7) = local_fc;
    FUN_001207c0(lVar14,0x45,0,local_fc);
    local_c8 = *(int *)((long)param_1 + 0x44) - 1;
    *(uint *)((long)param_1 + 0x44) = local_c8;
  }
LAB_0017a102:
  if ((param_8 == '\0') || (local_b0 != 0)) {
    local_b8 = 0;
    local_90 = 0;
    local_100 = 0;
    local_e4 = 0;
    goto LAB_0017a4e9;
  }
  iVar8 = *(int *)((long)param_1 + 0x44) + -1;
  *(int *)((long)param_1 + 0x44) = iVar8;
  bVar19 = local_74;
  if ((local_74 == 0xb) &&
     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {
    bVar19 = 2;
    if (param_13 != (long *)0x0) goto LAB_0017a14e;
    if (param_7 != 0) {
      bVar19 = 2;
      local_100 = 0;
      goto LAB_0017a437;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    local_100 = param_7;
    bVar19 = 2;
    goto switchD_0017a48f_caseD_1;
  }
  if (param_13 != (long *)0x0) {
LAB_0017a14e:
    if (param_13[4] != 0) goto LAB_0017a353;
    if (param_13[2] != 0) {
      if (param_7 != 0) {
        bVar19 = 6;
        local_100 = 0;
        goto LAB_0017a437;
      }
      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
      local_100 = param_7;
      goto switchD_0017a48f_caseD_6;
    }
    if (param_7 != 0) {
      bVar19 = 4;
      local_100 = 0;
      goto LAB_0017a437;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    local_100 = param_7;
    goto switchD_0017a48f_caseD_4;
  }
LAB_0017a353:
  if (bVar19 == 5) {
    local_100 = 0;
    if ((local_74 != 5) && (param_2[2] != 0)) {
      local_100 = FUN_0012083c(lVar14,0xb);
      local_100 = local_100 + 1;
    }
    if (param_7 != 0) {
LAB_0017a437:
      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);
      FUN_0010f49a(lVar14,0x90);
      goto LAB_0017a45f;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
switchD_0017a48f_caseD_5:
    if (local_fc == 0) {
      if (param_2[2] == 0) {
        local_b8 = local_fc;
        local_e4 = 1;
      }
      else {
        FUN_0011158f(param_1);
        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);
        local_b8 = local_fc;
        local_e4 = 1;
      }
    }
    else {
      FUN_0011158f(param_1);
      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);
      FUN_001207c0(lVar14,0x52,local_fc,1);
      local_b8 = 1;
      local_e4 = 1;
    }
  }
  else {
    local_100 = param_7;
    if (param_7 != 0) {
      local_100 = 0;
      goto LAB_0017a437;
    }
LAB_0017a45f:
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    switch(bVar19) {
    case 5:
      goto switchD_0017a48f_caseD_5;
    case 6:
switchD_0017a48f_caseD_6:
      FUN_00179afb(param_1,param_13,param_2,0,param_4);
    case 4:
switchD_0017a48f_caseD_4:
      FUN_00120941(lVar14,param_10);
      local_b8 = 0;
      local_e4 = 0;
      break;
    default:
      bVar19 = 2;
    case 1:
    case 2:
    case 3:
switchD_0017a48f_caseD_1:
      FUN_001300b2(param_1,bVar19,param_2);
      local_b8 = 0;
      local_e4 = 0;
    }
  }
  FUN_00120437(lVar14,iVar8);
  local_90 = local_100;
  if (local_100 != 0) {
    local_90 = FUN_0012083c(lVar14,0xb);
    FUN_0010f4fb(lVar14,local_100 + -1);
  }
LAB_0017a4e9:
  lVar23 = param_2[2];
  local_c4 = local_c8;
  local_84 = 0;
  local_a8 = 0;
  do {
    if (lVar23 == 0) {
      if (local_100 != 0) {
        FUN_00120941(lVar14,local_100);
        FUN_0010f4fb(lVar14,local_90);
      }
      if (local_b8 != 0) {
        FUN_001207c0(lVar14,0x14,local_fc,local_c4);
        if (local_b0 == 0) {
          if (param_7 != 0) {
            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);
            FUN_0010f49a(lVar14,0x90);
          }
          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);
          FUN_001300b2(param_1,2,param_2);
        }
        else {
          FUN_00120941(lVar14,local_c8);
        }
        FUN_00120437(lVar14,local_c4);
      }
      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&
         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],
                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {
        FUN_0013c76e(lVar14,param_2,0);
      }
      *param_11 = local_e4;
      return;
    }
    piVar4 = (int *)(param_3 + (long)local_a8 * 4);
    if (*piVar4 != 0) {
      if (lVar23 == local_d0) {
        iVar8 = local_b4 + 1;
        local_84 = FUN_00120941(lVar14,0);
        FUN_0010f4fb(lVar14,local_b4);
        if (!bVar5) {
LAB_0017a81c:
          FUN_0013c76e(lVar14,param_2,param_6 + 1);
          bVar5 = true;
        }
      }
      else {
        iVar8 = *(int *)((long)param_1 + 0x44) + -1;
        *(int *)((long)param_1 + 0x44) = iVar8;
        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;
      }
      if (*(long *)(lVar23 + 0x48) != 0) {
        FUN_001207c0(lVar14,0x48,0,*piVar4);
        *(uint *)(param_1 + 8) = ~param_6;
        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);
        *(undefined4 *)(param_1 + 8) = 0;
      }
      iVar22 = *piVar4;
      iVar9 = iVar22 + 1;
      iVar10 = iVar22 + 1;
      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {
        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);
        if (sVar7 == -2) {
          *(uint *)(param_1 + 8) = ~param_6;
          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),
                       iVar10 + iVar11);
          *(undefined4 *)(param_1 + 8) = 0;
        }
        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {
          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);
        }
        else {
          sVar7 = FUN_001112f9(param_2);
          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);
        }
      }
      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);
      bVar27 = lVar23 == local_b0;
      if ((bVar26 && param_8 == '\0') && (bVar27)) {
        FUN_00120437(lVar14,iVar8);
      }
      else {
        uVar21 = (uint)*(byte *)(lVar23 + 0x62);
        if (*(byte *)(lVar23 + 0x62) == 0) {
          FUN_00120437(lVar14,iVar8);
        }
        else {
          if (local_74 == 0xb) {
            if (uVar21 == 0xb) {
              uVar21 = 2;
            }
          }
          else {
            uVar21 = (uint)local_74;
          }
          if (lVar23 == local_d0) {
            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;
          }
          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))
             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||
                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&
                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||
                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {
            FUN_00120437(lVar14,iVar8);
          }
          else {
            iVar10 = local_a8 + param_5;
            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));
            local_dc = iVar9;
            if (lVar23 != local_b0) {
              local_dc = FUN_00110b75(param_1,sVar2);
            }
            if ((uVar21 == 5) || (bVar26)) {
              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {
                FUN_001207c0(lVar14,0x86,iVar10,local_dc);
                if (param_7 != 0) {
                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);
                  FUN_0010f49a(lVar14,0x90);
                }
              }
              else {
                iVar13 = 0;
                if (lVar23 != local_b0) {
                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {
                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +
                                                               (long)iVar13 * 2));
                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);
                  }
                }
                if (param_7 != 0) {
                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);
                  iVar13 = local_dc;
                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {
                    iVar13 = iVar9;
                  }
                  local_88 = 0x34;
                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);
                      iVar24 = iVar24 + 1) {
                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)
                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));
                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;
                    if (bVar20) {
                      local_8c = iVar8;
                    }
                    uVar12 = 0x35;
                    if (!bVar20) {
                      uVar12 = local_88;
                    }
                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +
                                                                (long)iVar24 * 2));
                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,
                                 uVar16,0xfffffffffffffffe);
                    FUN_0010f49a(lVar14,0x90);
                    local_88 = uVar12;
                  }
                }
              }
            }
            if (uVar21 == 4) {
LAB_0017ad29:
              FUN_00120941(lVar14,param_10);
            }
            else {
              if ((int)uVar21 < 5) {
                if (0 < (int)uVar21) {
                  FUN_0012834c(param_1,uVar21,lVar23);
                  goto LAB_0017ad47;
                }
              }
              else if (uVar21 == 6) {
                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);
                goto LAB_0017ad29;
              }
              iVar13 = *(int *)(lVar14 + 0x90);
              if (local_fc != 0) {
                FUN_0011158f(param_1);
                local_b8 = local_b8 + 1;
              }
              bVar20 = local_c0 != 0 && bVar26;
              if (bVar20) {
                FUN_00120894(lVar14,0x9f,param_4);
              }
              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,
                           iVar10);
              if (bVar20) {
                FUN_00120894(lVar14,0xa0,param_4);
              }
              local_e4 = 1;
              if (local_fc != 0) {
                FUN_001207c0(lVar14,0x52,local_fc,1);
                uVar12 = FUN_0012083c(lVar14,0xb);
                FUN_00120437(lVar14,local_c4);
                local_c4 = *(int *)((long)param_1 + 0x44) - 1;
                *(uint *)((long)param_1 + 0x44) = local_c4;
                if (*(long *)(lVar23 + 0x48) != 0) {
                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);
                }
                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {
                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);
                  lVar15 = *(long *)(pbVar17 + 0x10);
                  bVar19 = *pbVar17;
                  if (bVar19 != 0x86) {
                    uVar21 = local_c4;
                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {
                      uVar21 = *(uint *)(pbVar17 + 8);
                    }
                    if (pbVar17[1] == 0xfd) {
                      local_48 = (int)lVar15;
                      lVar15 = (long)local_48;
                    }
                    uVar1 = *(undefined2 *)(pbVar17 + 2);
                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,
                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);
                    FUN_0010f49a(lVar14,uVar1);
                  }
                }
                FUN_0012834c(param_1,2,lVar23);
                FUN_0010f4fb(lVar14,uVar12);
                local_e4 = 1;
              }
            }
LAB_0017ad47:
            if (lVar23 == local_d0) {
              FUN_00120941(lVar14,local_b4 + 1);
              FUN_0010f4fb(lVar14,local_84);
            }
            else {
              FUN_00120437(lVar14,iVar8);
            }
            if (local_dc != iVar9) {
              FUN_00110ba3(param_1,local_dc,sVar2);
            }
          }
        }
      }
    }
    lVar23 = *(long *)(lVar23 + 0x28);
    local_a8 = local_a8 + 1;
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0xd8
MOV R15,RDI
MOV R12,RSI
MOV qword ptr [RSP + 0x88],RDX
MOV dword ptr [RSP + 0x20],ECX
MOV dword ptr [RSP + 0x70],R8D
MOV dword ptr [RSP + 0x4],R9D
MOV EAX,dword ptr [RSP + 0x118]
MOV dword ptr [RSP + 0x2c],EAX
MOV EAX,dword ptr [RSP + 0x120]
MOV dword ptr [RSP + 0x10],EAX
MOV AL,byte ptr [RSP + 0x2c]
MOV byte ptr [RSP + 0x97],AL
MOV AL,byte ptr [RSP + 0x10]
MOV byte ptr [RSP + 0x94],AL
CMP dword ptr [RSP + 0x110],0x0
SETNZ byte ptr [RSP + 0x95]
MOV RAX,qword ptr [RDI]
MOV qword ptr [RSP + 0x30],RAX
CALL 0x00121a1e
MOV R14,RAX
MOV EBX,dword ptr [R12 + 0x40]
TEST BL,0x80
JZ 0x00179e11
MOV RDI,R12
CALL 0x00111247
MOV qword ptr [RSP + 0x58],RAX
MOVZX EAX,word ptr [RAX + 0x5e]
MOV dword ptr [RSP + 0x6c],EAX
BT EBX,0xb
JNC 0x00179fb4
MOVSX EAX,word ptr [R12 + 0x46]
MOV dword ptr [RSP + 0x28],EAX
MOV dword ptr [RSP + 0x24],0x0
MOV dword ptr [RSP + 0xc],0x0
MOV dword ptr [RSP + 0x8],0x0
MOV EBP,0x0
MOV qword ptr [RSP + 0x18],R15
MOV EAX,EBP
CMP EBP,dword ptr [RSP + 0x28]
JL 0x00179e27
MOV R15,qword ptr [RSP + 0x18]
MOV EAX,dword ptr [RSP + 0xc]
OR EAX,dword ptr [RSP + 0x24]
JZ 0x00179fb4
CMP dword ptr [RSP + 0x8],0x0
JNZ 0x00179fb4
CMP dword ptr [RSP + 0xc],0x0
JLE 0x00179e07
TEST byte ptr [R12 + 0x40],0x60
JZ 0x00179e07
MOV EAX,dword ptr [RSP + 0x4]
LEA ESI,[RAX + 0x1]
MOV RDX,R12
MOV RDI,R15
CALL 0x0015bd19
MOV dword ptr [RSP + 0x8],0x1
JMP 0x00179db6
MOV dword ptr [RSP + 0x6c],0x1
MOV qword ptr [RSP + 0x58],0x0
JMP 0x00179d8a
MOV R13,RBP
SHL R13,0x5
ADD R13,qword ptr [R12 + 0x8]
MOVZX EBX,byte ptr [R13 + 0x18]
TEST EBX,EBX
JZ 0x00179e5a
MOVSX EDX,word ptr [R12 + 0x44]
CMP EDX,EAX
JZ 0x00179e5a
MOV EAX,dword ptr [R13 + 0x1c]
AND EAX,0x60
JZ 0x00179e62
CMP dword ptr [RSP + 0x8],0x0
JNZ 0x00179e62
INC dword ptr [RSP + 0x24]
INC RBP
JMP 0x00179dc0
CMP qword ptr [RSP + 0x138],0x0
JZ 0x00179e7f
MOV RCX,qword ptr [RSP + 0x138]
CMP dword ptr [RCX + RBP*0x4],0x0
JNS 0x00179e7f
TEST EAX,EAX
JZ 0x00179e5a
CMP byte ptr [RSP + 0x94],0xb
JZ 0x00179ef2
MOVZX EBX,byte ptr [RSP + 0x94]
CMP EBX,0x5
JNZ 0x00179efc
CMP dword ptr [RSP + 0x8],0x0
JNZ 0x00179f0c
CMP qword ptr [R13 + 0x8],0x0
MOV EAX,0x2
CMOVZ EBX,EAX
MOVSX ESI,BP
MOV RDI,R12
CALL 0x001112f9
CWDE
MOV ECX,dword ptr [RSP + 0x4]
LEA R15D,[RCX + RAX*0x1 + 0x1]
CMP EBX,0x2
JZ 0x00179f53
CMP EBX,0x2
JG 0x00179f13
CMP EBX,0x1
JZ 0x00179f5d
MOV ECX,dword ptr [RSP + 0x128]
MOV EDX,R15D
MOV ESI,0x32
MOV RDI,R14
CALL 0x001207c0
JMP 0x00179e5a
CMP EBX,0xb
JNZ 0x00179e91
MOV EBX,0x2
CMP dword ptr [RSP + 0x8],0x0
JZ 0x00179eaa
TEST EAX,EAX
JNZ 0x00179eaa
JMP 0x00179e5a
MOV EBX,0x2
JMP 0x00179eaa
CMP EBX,0x3
JZ 0x00179f5d
CMP EBX,0x5
JNZ 0x00179ed6
MOV EDX,R15D
MOV ESI,0x33
MOV RDI,R14
CALL 0x00120894
MOV EBX,EAX
INC dword ptr [RSP + 0xc]
MOV RSI,qword ptr [R13 + 0x8]
MOV EDX,R15D
MOV RDI,qword ptr [RSP + 0x18]
CALL 0x0015ba64
MOV ESI,EBX
MOV RDI,R14
CALL 0x0010f4fb
JMP 0x00179e5a
MOV RDI,qword ptr [RSP + 0x18]
CALL 0x001115a2
MOV RCX,qword ptr [R13]
MOV RDX,qword ptr [R12]
LEA RSI,[0x18f4ee]
MOV RDI,qword ptr [RSP + 0x30]
MOV AL,0x0
CALL 0x00130001
MOV R13,RAX
MOV R8D,R15D
MOV ECX,EBX
MOV EDX,0x513
MOV ESI,0x43
MOV RDI,R14
CALL 0x00120767
MOV EDX,0xfffffff9
MOV RSI,R13
MOV RDI,R14
CALL 0x0011aa64
MOV ESI,0x1
MOV RDI,R14
CALL 0x0010f49a
JMP 0x00179e5a
MOV R13,qword ptr [R12 + 0x30]
MOV byte ptr [RSP + 0x28],0x0
TEST R13,R13
JZ 0x0017a013
MOV RAX,qword ptr [RSP + 0x30]
TEST byte ptr [RAX + 0x31],0x2
JNZ 0x0017a013
MOV EAX,dword ptr [RSP + 0x4]
NOT EAX
MOV dword ptr [R15 + 0x40],EAX
CMP byte ptr [RSP + 0x10],0xb
MOV BL,0x2
MOV AL,byte ptr [RSP + 0x10]
CMOVNZ EBX,EAX
MOVZX EBX,BL
MOV dword ptr [RSP + 0x8],0x0
MOVZX EAX,byte ptr [RSP + 0x97]
MOV dword ptr [RSP + 0x18],EAX
MOV EAX,dword ptr [RSP + 0x8]
CMP dword ptr [R13],EAX
JG 0x0017a18c
MOV dword ptr [R15 + 0x40],0x0
CMP qword ptr [RSP + 0x140],0x0
JZ 0x0017a297
MOV RAX,qword ptr [RSP + 0x140]
CMP qword ptr [RAX],0x0
JZ 0x0017a2ad
MOV RAX,qword ptr [RAX + 0x20]
MOV qword ptr [RSP + 0x38],RAX
MOV dword ptr [RSP + 0x54],0x0
TEST RAX,RAX
JZ 0x0017a05b
MOV ESI,0xb
MOV RDI,R14
CALL 0x0012083c
MOV dword ptr [RSP + 0x54],EAX
MOV RAX,qword ptr [RSP + 0x30]
MOV RAX,qword ptr [RAX + 0x30]
TEST AH,0x60
JZ 0x0017a2f5
BT EAX,0xd
JNC 0x0017a2d7
MOV R8D,0x0
MOV ECX,0x0
MOV EDX,0x7e
MOV RSI,R12
MOV RDI,R15
CALL 0x00111fa0
MOV qword ptr [RSP + 0x48],RAX
TEST RAX,RAX
JNZ 0x0017a0d2
MOV ECX,0x0
MOV EDX,0x0
MOV RSI,R12
MOV RDI,R15
CALL 0x001116f3
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
MOV dword ptr [RSP + 0xc],EAX
MOV EAX,dword ptr [RSP + 0xc]
MOV dword ptr [RSP + 0x40],EAX
MOV qword ptr [RSP + 0x48],0x0
TEST EAX,EAX
JZ 0x0017a102
MOV EAX,dword ptr [R15 + 0x38]
INC EAX
MOV dword ptr [RSP + 0xc],EAX
MOV dword ptr [R15 + 0x38],EAX
MOV ECX,EAX
MOV EDX,0x0
MOV ESI,0x45
MOV RDI,R14
CALL 0x001207c0
MOV EAX,dword ptr [R15 + 0x44]
DEC EAX
MOV dword ptr [RSP + 0x40],EAX
MOV dword ptr [R15 + 0x44],EAX
CMP byte ptr [RSP + 0x2c],0x0
JZ 0x0017a6aa
CMP qword ptr [RSP + 0x58],0x0
JNZ 0x0017a6aa
MOV EAX,dword ptr [R15 + 0x44]
LEA EBP,[RAX + -0x1]
MOV dword ptr [R15 + 0x44],EBP
MOV BL,byte ptr [R12 + 0x4e]
CMP byte ptr [RSP + 0x94],0xb
JZ 0x0017a313
MOVZX EBX,byte ptr [RSP + 0x94]
CMP qword ptr [RSP + 0x140],0x0
JZ 0x0017a353
MOV RAX,qword ptr [RSP + 0x140]
CMP qword ptr [RAX + 0x20],0x0
JNZ 0x0017a353
CMP qword ptr [RAX + 0x10],0x0
JNZ 0x0017aefa
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017af16
MOV EBX,0x4
MOV dword ptr [RSP + 0x8],0x0
JMP 0x0017a437
MOVSXD RAX,dword ptr [RSP + 0x8]
IMUL RAX,RAX,0x18
ADD RAX,R13
MOV qword ptr [RSP + 0x10],RAX
MOV RBP,qword ptr [RAX + 0x8]
CMP qword ptr [RSP + 0x138],0x0
JZ 0x0017a1c8
MOV EDX,dword ptr [RSP + 0x18]
MOV RSI,qword ptr [RSP + 0x138]
MOV RDI,RBP
CALL 0x001174e9
TEST EAX,EAX
JZ 0x0017a255
CMP byte ptr [RSP + 0x28],0x0
JNZ 0x0017a1e1
MOV EAX,dword ptr [RSP + 0x4]
LEA EDX,[RAX + 0x1]
MOV RSI,R12
MOV RDI,R14
CALL 0x0013c76e
MOV EAX,dword ptr [R15 + 0x44]
DEC EAX
MOV dword ptr [RSP + 0xc],EAX
MOV dword ptr [R15 + 0x44],EAX
MOV EDX,0x0
MOV RSI,RBP
MOV RDI,qword ptr [RSP + 0x30]
CALL 0x00135319
MOV RBP,RAX
MOV RAX,qword ptr [RSP + 0x30]
CMP byte ptr [RAX + 0x61],0x0
JNZ 0x0017a223
MOV ECX,0x10
MOV EDX,dword ptr [RSP + 0xc]
MOV RSI,RBP
MOV RDI,R15
CALL 0x00159eda
MOV RSI,RBP
MOV RDI,qword ptr [RSP + 0x30]
CALL 0x0011c4af
CMP EBX,0x4
JNZ 0x0017a25e
MOV ESI,dword ptr [RSP + 0x128]
MOV RDI,R14
CALL 0x00120941
MOV ESI,dword ptr [RSP + 0xc]
MOV RDI,R14
CALL 0x00120437
MOV byte ptr [RSP + 0x28],0x1
INC dword ptr [RSP + 0x8]
JMP 0x00179ffd
MOV RAX,qword ptr [RSP + 0x10]
MOV RCX,qword ptr [RAX + 0x10]
TEST RCX,RCX
JNZ 0x0017a270
MOV RCX,qword ptr [R12]
CMP EBX,0x5
JNZ 0x0017a27a
MOV EBX,0x2
MOV R9D,0x3
MOV R8D,0x0
MOV EDX,EBX
MOV ESI,0x113
MOV RDI,R15
CALL 0x00121c62
JMP 0x0017a244
MOV dword ptr [RSP + 0x54],0x0
MOV qword ptr [RSP + 0x38],0x0
JMP 0x0017a05b
MOV dword ptr [RSP + 0x54],0x0
MOV qword ptr [RSP + 0x38],0x0
MOV qword ptr [RSP + 0x140],0x0
MOV byte ptr [RSP + 0x94],0x4
JMP 0x0017a05b
MOV ECX,0x0
MOV EDX,0x0
MOV RSI,R12
MOV RDI,R15
CALL 0x001116f3
MOV dword ptr [RSP + 0xc],EAX
JMP 0x0017a0bd
MOV qword ptr [RSP + 0x48],0x0
MOV dword ptr [RSP + 0x40],0x0
MOV dword ptr [RSP + 0xc],0x0
JMP 0x0017a102
MOVZX EBX,BL
CMP EBX,0xb
JNZ 0x0017a13f
MOV EBX,0x2
CMP qword ptr [RSP + 0x140],0x0
JNZ 0x0017a14e
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017af3b
MOV EBX,0x2
MOV dword ptr [RSP + 0x8],0x0
JMP 0x0017a437
CMP EBX,0x5
JNZ 0x0017a420
MOV dword ptr [RSP + 0x8],0x0
CMP byte ptr [RSP + 0x94],0x5
JZ 0x0017a389
CMP qword ptr [R12 + 0x10],0x0
JZ 0x0017a389
MOV ESI,0xb
MOV RDI,R14
CALL 0x0012083c
INC EAX
MOV dword ptr [RSP + 0x8],EAX
CMP dword ptr [RSP + 0x110],0x0
JNZ 0x0017a437
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
CMP dword ptr [RSP + 0xc],0x0
JZ 0x0017a651
MOV RDI,R15
CALL 0x0011158f
SUB RSP,0x8
PUSH -0x1
PUSH 0x1
PUSH 0x5
PUSH 0x0
PUSH 0x1
MOV R9D,dword ptr [RSP + 0x34]
MOV R8D,dword ptr [RSP + 0xa0]
MOV ECX,dword ptr [RSP + 0x50]
MOV RDX,qword ptr [RSP + 0x78]
MOV RSI,R12
MOV RDI,R15
CALL 0x00175683
ADD RSP,0x30
MOV ECX,0x1
MOV EDX,dword ptr [RSP + 0xc]
MOV ESI,0x52
MOV RDI,R14
CALL 0x001207c0
MOV dword ptr [RSP + 0x50],0x1
MOV dword ptr [RSP + 0x24],0x1
JMP 0x0017a4b3
MOV EAX,dword ptr [RSP + 0x110]
MOV dword ptr [RSP + 0x8],EAX
TEST EAX,EAX
JZ 0x0017a45f
MOV dword ptr [RSP + 0x8],0x0
MOV R8D,dword ptr [RSP + 0x110]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x4]
MOV ESI,0x35
MOV RDI,R14
CALL 0x00120767
MOV ESI,0x90
MOV RDI,R14
CALL 0x0010f49a
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
LEA EAX,[RBX + -0x1]
CMP EAX,0x5
JA 0x0017a491
MOV EAX,EAX
LEA RDX,[0x191b7c]
MOVSXD RAX,dword ptr [RDX + RAX*0x4]
ADD RAX,RDX
JMP RAX
MOV EBX,0x2
MOV RDX,R12
MOV ESI,EBX
MOV RDI,R15
CALL 0x001300b2
MOV dword ptr [RSP + 0x50],0x0
MOV dword ptr [RSP + 0x24],0x0
MOV ESI,EBP
MOV RDI,R14
CALL 0x00120437
MOV EAX,dword ptr [RSP + 0x8]
MOV dword ptr [RSP + 0x78],EAX
TEST EAX,EAX
JZ 0x0017a4e9
MOV ESI,0xb
MOV RDI,R14
CALL 0x0012083c
MOV dword ptr [RSP + 0x78],EAX
MOV EAX,dword ptr [RSP + 0x8]
LEA ESI,[RAX + -0x1]
MOV RDI,R14
CALL 0x0010f4fb
MOV RBP,qword ptr [R12 + 0x10]
MOV EAX,dword ptr [RSP + 0x40]
MOV dword ptr [RSP + 0x44],EAX
MOV dword ptr [RSP + 0x84],0x0
MOV dword ptr [RSP + 0x60],0x0
MOVSX EAX,word ptr [RSP + 0x6c]
MOV dword ptr [RSP + 0xa4],EAX
MOV R13,R15
MOV R15,qword ptr [RSP + 0x58]
MOV qword ptr [RSP + 0x10],R12
TEST RBP,RBP
JNZ 0x0017a6cf
MOV R15,R13
MOV R12,qword ptr [RSP + 0x10]
CMP dword ptr [RSP + 0x8],0x0
JZ 0x0017a552
MOV ESI,dword ptr [RSP + 0x8]
MOV RDI,R14
CALL 0x00120941
MOV ESI,dword ptr [RSP + 0x78]
MOV RDI,R14
CALL 0x0010f4fb
CMP dword ptr [RSP + 0x50],0x0
JZ 0x0017a5e8
MOV ECX,dword ptr [RSP + 0x44]
MOV EDX,dword ptr [RSP + 0xc]
MOV ESI,0x14
MOV RDI,R14
CALL 0x001207c0
CMP qword ptr [RSP + 0x58],0x0
JNZ 0x0017ae85
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017a5b2
MOV R8D,dword ptr [RSP + 0x110]
MOV ECX,dword ptr [RSP + 0x40]
MOV EDX,dword ptr [RSP + 0x4]
MOV ESI,0x35
MOV RDI,R14
CALL 0x00120767
MOV ESI,0x90
MOV RDI,R14
CALL 0x0010f49a
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,dword ptr [RSP + 0x40]
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
MOV RDX,R12
MOV ESI,0x2
MOV RDI,R15
CALL 0x001300b2
MOV ESI,dword ptr [RSP + 0x44]
MOV RDI,R14
CALL 0x00120437
TEST byte ptr [R12 + 0x40],0x80
JNZ 0x0017a631
MOVSXD RAX,dword ptr [RSP + 0x60]
MOVSX ECX,word ptr [R12 + 0x48]
MOV EDX,dword ptr [RSP + 0x4]
INC EDX
MOV RBX,qword ptr [RSP + 0x88]
MOV R8D,dword ptr [RBX + RAX*0x4]
MOV ESI,0x5b
MOV RDI,R14
CALL 0x00120767
CMP byte ptr [RSP + 0x28],0x0
JNZ 0x0017a631
MOV EDX,0x0
MOV RSI,R12
MOV RDI,R14
CALL 0x0013c76e
MOV RAX,qword ptr [RSP + 0x130]
MOV EBX,dword ptr [RSP + 0x24]
MOV dword ptr [RAX],EBX
ADD RSP,0xd8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP qword ptr [R12 + 0x10],0x0
JZ 0x0017a695
MOV RDI,R15
CALL 0x0011158f
MOV R9D,0xffffffff
MOV R8D,0x0
MOV ECX,dword ptr [RSP + 0x70]
MOV EDX,dword ptr [RSP + 0x20]
MOV RSI,R12
MOV RDI,R15
CALL 0x0016114a
MOV EAX,dword ptr [RSP + 0xc]
MOV dword ptr [RSP + 0x50],EAX
MOV dword ptr [RSP + 0x24],0x1
JMP 0x0017a4b3
MOV EAX,dword ptr [RSP + 0xc]
MOV dword ptr [RSP + 0x50],EAX
MOV dword ptr [RSP + 0x24],0x1
JMP 0x0017a4b3
MOV dword ptr [RSP + 0x50],0x0
MOV dword ptr [RSP + 0x78],0x0
MOV dword ptr [RSP + 0x8],0x0
MOV dword ptr [RSP + 0x24],0x0
JMP 0x0017a4e9
MOVSXD RAX,dword ptr [RSP + 0x60]
MOV RCX,qword ptr [RSP + 0x88]
LEA R12,[RCX + RAX*0x4]
CMP dword ptr [R12],0x0
JZ 0x0017a7ea
CMP RBP,qword ptr [RSP + 0x38]
JNZ 0x0017a7f7
MOV EAX,dword ptr [RSP + 0x54]
INC EAX
MOV dword ptr [RSP + 0x18],EAX
MOV ESI,0x0
MOV RDI,R14
CALL 0x00120941
MOV dword ptr [RSP + 0x84],EAX
MOV ESI,dword ptr [RSP + 0x54]
MOV RDI,R14
CALL 0x0010f4fb
CMP byte ptr [RSP + 0x28],0x0
JZ 0x0017a81c
CMP qword ptr [RBP + 0x48],0x0
JZ 0x0017a76f
MOV ECX,dword ptr [R12]
MOV EDX,0x0
MOV ESI,0x48
MOV RDI,R14
CALL 0x001207c0
MOV EAX,dword ptr [RSP + 0x4]
NOT EAX
MOV dword ptr [R13 + 0x40],EAX
MOV RSI,qword ptr [RBP + 0x48]
MOV ECX,0x10
MOV EDX,dword ptr [RSP + 0x18]
MOV RDI,R13
CALL 0x00160eed
MOV dword ptr [R13 + 0x40],0x0
MOV EAX,dword ptr [R12]
MOV dword ptr [RSP + 0x74],EAX
INC EAX
MOV dword ptr [RSP + 0x64],EAX
MOV EBX,0x0
MOV EAX,dword ptr [RSP + 0x74]
INC EAX
MOV dword ptr [RSP + 0x2c],EAX
MOVZX ECX,word ptr [RBP + 0x60]
CMP ECX,EBX
JG 0x0017a83a
MOV R8D,dword ptr [R12]
MOV EDX,dword ptr [RSP + 0x64]
MOV ESI,0x5b
MOV RDI,R14
CALL 0x00120767
CMP RBP,R15
SETZ byte ptr [RSP + 0x96]
CMP byte ptr [RSP + 0x97],0x0
SETZ AL
TEST byte ptr [RSP + 0x95],AL
JZ 0x0017a8d6
CMP byte ptr [RSP + 0x96],0x0
JZ 0x0017a8d6
MOV ESI,dword ptr [RSP + 0x18]
MOV RDI,R14
CALL 0x00120437
MOV RBP,qword ptr [RBP + 0x28]
INC dword ptr [RSP + 0x60]
JMP 0x0017a522
MOV EAX,dword ptr [R13 + 0x44]
DEC EAX
MOV dword ptr [RSP + 0x18],EAX
MOV dword ptr [R13 + 0x44],EAX
CMP byte ptr [RSP + 0x28],0x0
JNZ 0x0017a72b
CMP qword ptr [RSP + 0x38],0x0
JNZ 0x0017a72b
MOV EAX,dword ptr [RSP + 0x4]
LEA EDX,[RAX + 0x1]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,R14
CALL 0x0013c76e
MOV byte ptr [RSP + 0x28],0x1
JMP 0x0017a72b
MOVSXD RAX,EBX
MOV RDX,qword ptr [RBP + 0x8]
MOV AX,word ptr [RDX + RAX*0x2]
MOVSX ESI,AX
CMP ESI,-0x2
JNZ 0x0017a884
MOV EAX,dword ptr [RSP + 0x4]
NOT EAX
MOV dword ptr [R13 + 0x40],EAX
MOV EAX,dword ptr [RSP + 0x2c]
LEA EDX,[RAX + RBX*0x1]
MOVSXD RAX,EBX
IMUL RAX,RAX,0x18
ADD RAX,qword ptr [RBP + 0x50]
MOV RSI,qword ptr [RAX + 0x8]
MOV RDI,R13
CALL 0x0015ba64
MOV dword ptr [R13 + 0x40],0x0
INC EBX
JMP 0x0017a78c
CMP ESI,-0x1
JZ 0x0017a894
MOV RCX,qword ptr [RSP + 0x10]
CMP AX,word ptr [RCX + 0x44]
JNZ 0x0017a8ae
MOV EAX,dword ptr [RSP + 0x2c]
LEA ECX,[RAX + RBX*0x1]
MOV EDX,dword ptr [RSP + 0x4]
MOV ESI,0x4f
MOV RDI,R14
CALL 0x001207c0
JMP 0x0017a87d
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x001112f9
MOV ECX,dword ptr [RSP + 0x2c]
ADD ECX,EBX
CWDE
MOV EDX,dword ptr [RSP + 0x4]
LEA EDX,[RDX + RAX*0x1 + 0x1]
MOV ESI,0x4e
MOV RDI,R14
CALL 0x001207c0
JMP 0x0017a87d
MOVZX EBX,byte ptr [RBP + 0x62]
TEST EBX,EBX
JNZ 0x0017a8ef
MOV ESI,dword ptr [RSP + 0x18]
MOV RDI,R14
CALL 0x00120437
JMP 0x0017a7ea
CMP byte ptr [RSP + 0x94],0xb
JZ 0x0017a9a8
MOVZX EBX,byte ptr [RSP + 0x94]
CMP RBP,qword ptr [RSP + 0x38]
JNZ 0x0017a921
MOV RAX,qword ptr [RSP + 0x140]
CMP qword ptr [RAX + 0x10],0x1
SBB EBX,EBX
AND EBX,0xfffffffe
ADD EBX,0x6
CMP dword ptr [RSP + 0x60],0x0
JNZ 0x0017a9bb
CMP qword ptr [RBP + 0x28],0x0
JNZ 0x0017a9bb
CMP EBX,0x5
JNZ 0x0017a9bb
CMP byte ptr [RSP + 0x96],0x0
JZ 0x0017a9bb
MOV RAX,qword ptr [RSP + 0x30]
TEST byte ptr [RAX + 0x31],0x20
JZ 0x0017a973
MOV R8D,0x0
MOV ECX,0x0
MOV EDX,0x7e
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,R13
CALL 0x00111fa0
TEST RAX,RAX
JNZ 0x0017a9bb
MOV RAX,qword ptr [RSP + 0x30]
TEST byte ptr [RAX + 0x31],0x40
JZ 0x0017a997
MOV RAX,qword ptr [RSP + 0x10]
CMP qword ptr [RAX + 0x20],0x0
JNZ 0x0017a9bb
MOV RDI,RAX
CALL 0x00111606
TEST RAX,RAX
JNZ 0x0017a9bb
MOV ESI,dword ptr [RSP + 0x18]
MOV RDI,R14
CALL 0x00120437
JMP 0x0017a7ea
CMP EBX,0xb
JNZ 0x0017a905
MOV EBX,0x2
JMP 0x0017a905
MOV EAX,dword ptr [RSP + 0x60]
ADD EAX,dword ptr [RSP + 0x70]
MOV dword ptr [RSP + 0x68],EAX
MOVZX R9D,word ptr [RBP + 0x5e]
MOV R8D,dword ptr [RSP + 0x64]
MOV ECX,dword ptr [RSP + 0x18]
MOV EDX,EAX
MOV ESI,0x1c
MOV RDI,R14
CALL 0x0012085a
MOV dword ptr [RSP + 0x90],EAX
MOV EAX,dword ptr [RSP + 0x64]
MOV dword ptr [RSP + 0x2c],EAX
CMP RBP,R15
JZ 0x0017aa08
MOV ESI,dword ptr [RSP + 0x6c]
MOV RDI,R13
CALL 0x00110b75
MOV dword ptr [RSP + 0x2c],EAX
CMP EBX,0x5
JZ 0x0017aa17
CMP byte ptr [RSP + 0x95],0x0
JZ 0x0017aa6f
MOV RAX,qword ptr [RSP + 0x10]
TEST byte ptr [RAX + 0x40],0x80
JNZ 0x0017aba1
MOV ECX,dword ptr [RSP + 0x2c]
MOV EDX,dword ptr [RSP + 0x68]
MOV ESI,0x86
MOV RDI,R14
CALL 0x001207c0
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017aa6f
MOV R8D,dword ptr [RSP + 0x110]
MOV ECX,dword ptr [RSP + 0x18]
MOV EDX,dword ptr [RSP + 0x2c]
MOV ESI,0x35
MOV RDI,R14
CALL 0x00120767
MOV ESI,0x90
MOV RDI,R14
CALL 0x0010f49a
CMP EBX,0x4
JZ 0x0017ad29
CMP EBX,0x4
JG 0x0017ad03
CMP EBX,0x1
JGE 0x0017ad3a
MOV R12D,dword ptr [R14 + 0x90]
CMP dword ptr [RSP + 0xc],0x0
JZ 0x0017aaa4
MOV RDI,R13
CALL 0x0011158f
INC dword ptr [RSP + 0x50]
CMP qword ptr [RSP + 0x48],0x0
SETNZ BL
AND BL,byte ptr [RSP + 0x95]
JZ 0x0017aac7
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x9f
MOV RDI,R14
CALL 0x00120894
SUB RSP,0x8
MOV EAX,dword ptr [RSP + 0x70]
PUSH RAX
MOVZX EAX,byte ptr [RSP + 0xa6]
PUSH RAX
PUSH 0x5
PUSH 0x0
MOV EAX,dword ptr [RSP + 0xcc]
PUSH RAX
MOV R9D,dword ptr [RSP + 0x5c]
MOV R8D,dword ptr [RSP + 0xa0]
MOV ECX,dword ptr [RSP + 0x50]
MOV RDX,qword ptr [RSP + 0x78]
MOV RSI,qword ptr [RSP + 0x40]
MOV RDI,R13
CALL 0x00175683
ADD RSP,0x30
TEST BL,BL
JZ 0x0017ab21
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0xa0
MOV RDI,R14
CALL 0x00120894
MOV dword ptr [RSP + 0x24],0x1
CMP dword ptr [RSP + 0xc],0x0
JZ 0x0017ad47
MOV ECX,0x1
MOV EDX,dword ptr [RSP + 0xc]
MOV ESI,0x52
MOV RDI,R14
CALL 0x001207c0
MOV ESI,0xb
MOV RDI,R14
CALL 0x0012083c
MOV dword ptr [RSP + 0x68],EAX
MOV ESI,dword ptr [RSP + 0x44]
MOV RDI,R14
CALL 0x00120437
MOV EAX,dword ptr [R13 + 0x44]
DEC EAX
MOV dword ptr [RSP + 0x44],EAX
MOV dword ptr [R13 + 0x44],EAX
CMP qword ptr [RBP + 0x48],0x0
JZ 0x0017ab8f
MOV ECX,EAX
MOV EDX,dword ptr [RSP + 0x74]
MOV ESI,0x32
MOV RDI,R14
CALL 0x001207c0
SUB R12D,dword ptr [RSP + 0x90]
MOV EBX,0x0
JMP 0x0017ae2a
MOV R12D,0x0
CMP RBP,R15
JNZ 0x0017ac48
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017aa6f
MOVZX EAX,word ptr [R15 + 0x5e]
ADD EAX,dword ptr [R14 + 0x90]
MOV dword ptr [RSP + 0x7c],EAX
MOV AL,byte ptr [RBP + 0x63]
AND EAX,0x3
CMP AL,0x2
MOV EAX,dword ptr [RSP + 0x2c]
CMOVZ EAX,dword ptr [RSP + 0x64]
MOV dword ptr [RSP + 0xa0],EAX
MOV R12D,0x0
MOV dword ptr [RSP + 0x80],0x34
MOV qword ptr [RSP + 0xa8],RBP
MOVZX EAX,word ptr [R15 + 0x5e]
CMP EAX,R12D
JG 0x0017ac57
MOV RBP,qword ptr [RSP + 0xa8]
JMP 0x0017aa6f
MOVSXD RDX,R12D
MOV RAX,qword ptr [R15 + 0x8]
MOVSX ESI,word ptr [RAX + RDX*0x2]
MOV RDI,RBP
CALL 0x00111273
MOVSX ECX,AX
MOV EAX,dword ptr [RSP + 0x2c]
LEA R8D,[RAX + R12*0x1]
MOV EDX,dword ptr [RSP + 0x68]
MOV ESI,0x59
MOV RDI,R14
CALL 0x00120767
INC R12
MOVZX EAX,word ptr [R15 + 0x5e]
CMP EAX,R12D
JG 0x0017ac16
JMP 0x0017abb0
MOVSXD RBP,R12D
MOV RAX,qword ptr [R15 + 0x40]
MOV RSI,qword ptr [RAX + RBP*0x8]
MOV RDI,R13
CALL 0x001372fb
MOV qword ptr [RSP + 0x98],RAX
MOV RAX,qword ptr [R15 + 0x8]
MOVSX ESI,word ptr [RAX + RBP*0x2]
MOVZX EAX,word ptr [R15 + 0x5e]
DEC EAX
CMP EAX,R12D
MOV ECX,dword ptr [RSP + 0x7c]
CMOVZ ECX,dword ptr [RSP + 0x18]
MOV dword ptr [RSP + 0x7c],ECX
MOV EAX,0x35
CMOVNZ EAX,dword ptr [RSP + 0x80]
MOV dword ptr [RSP + 0x80],EAX
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x001112f9
CWDE
MOV EDX,dword ptr [RSP + 0x110]
LEA EDX,[RDX + RAX*0x1 + 0x1]
SUB RSP,0x8
PUSH -0x2
MOV R9,qword ptr [RSP + 0xa8]
MOV EAX,dword ptr [RSP + 0xb0]
LEA R8D,[RAX + R12*0x1]
MOV ECX,dword ptr [RSP + 0x8c]
MOV ESI,dword ptr [RSP + 0x90]
MOV RDI,R14
CALL 0x00121136
MOV ESI,0x90
MOV RDI,R14
CALL 0x0010f49a
INC R12
ADD RSP,0x10
JMP 0x0017abff
CMP EBX,0x6
JNZ 0x0017aa8a
MOV R8D,dword ptr [RSP + 0x68]
MOV RCX,RBP
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x140]
MOV RDI,R13
CALL 0x00179afb
MOV ESI,dword ptr [RSP + 0x128]
MOV RDI,R14
CALL 0x00120941
JMP 0x0017ad47
MOV RDX,RBP
MOV ESI,EBX
MOV RDI,R13
CALL 0x0012834c
CMP RBP,qword ptr [RSP + 0x38]
JNZ 0x0017ae74
MOV EAX,dword ptr [RSP + 0x54]
LEA ESI,[RAX + 0x1]
MOV RDI,R14
CALL 0x00120941
MOV ESI,dword ptr [RSP + 0x84]
MOV RDI,R14
CALL 0x0010f4fb
MOV EBX,dword ptr [RSP + 0x64]
CMP dword ptr [RSP + 0x2c],EBX
JZ 0x0017a7ea
MOV EDX,dword ptr [RSP + 0x6c]
MOV ESI,dword ptr [RSP + 0x2c]
MOV RDI,R13
CALL 0x00110ba3
JMP 0x0017a7ea
MOV RDI,R14
CALL 0x0010f4bb
MOV RSI,qword ptr [RAX]
MOV RDI,qword ptr [RAX + 0x8]
MOV qword ptr [RSP + 0xb0],RSI
MOV qword ptr [RSP + 0xb8],RDI
MOV RDX,qword ptr [RAX + 0x10]
MOV qword ptr [RSP + 0xc0],RDX
MOV SIL,byte ptr [RAX]
CMP SIL,0x86
JZ 0x0017ae27
MOVZX ESI,SIL
MOVSXD RDX,ESI
LEA RCX,[0x196340]
MOV DL,byte ptr [RCX + RDX*0x1]
AND DL,0x1
MOV ECX,dword ptr [RSP + 0x44]
CMOVZ ECX,dword ptr [RAX + 0x8]
MOV DIL,byte ptr [RAX + 0x1]
CMP DIL,0xfd
JNZ 0x0017ae6a
MOVSXD R9,dword ptr [RSP + 0xc0]
MOV DX,word ptr [RAX + 0x2]
MOV word ptr [RSP + 0x24],DX
MOV EDX,dword ptr [RAX + 0x4]
SUB RSP,0x8
MOVSX EDI,DIL
PUSH RDI
MOV R8D,dword ptr [RAX + 0xc]
MOV RDI,R14
CALL 0x00121136
MOVZX ESI,word ptr [RSP + 0x34]
MOV RDI,R14
CALL 0x0010f49a
ADD RSP,0x10
INC RBX
MOV EAX,dword ptr [RSP + 0x90]
LEA ESI,[RAX + RBX*0x1]
MOV EAX,R12D
SUB EAX,EBX
TEST EAX,EAX
JG 0x0017ad93
MOV RDX,RBP
MOV ESI,0x2
MOV RDI,R13
CALL 0x0012834c
MOV ESI,dword ptr [RSP + 0x68]
MOV RDI,R14
CALL 0x0010f4fb
MOV dword ptr [RSP + 0x24],0x1
JMP 0x0017ad47
MOV R9,qword ptr [RSP + 0xc0]
JMP 0x0017adf5
MOV ESI,dword ptr [RSP + 0x18]
MOV RDI,R14
CALL 0x00120437
JMP 0x0017ad70
MOV ESI,dword ptr [RSP + 0x40]
MOV RDI,R14
CALL 0x00120941
JMP 0x0017a5dc
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
MOV EAX,dword ptr [RSP + 0x110]
MOV dword ptr [RSP + 0x8],EAX
MOV R8D,dword ptr [RSP + 0x20]
MOV ECX,0x0
MOV RDX,R12
MOV RSI,qword ptr [RSP + 0x140]
MOV RDI,R15
CALL 0x00179afb
MOV ESI,dword ptr [RSP + 0x128]
MOV RDI,R14
CALL 0x00120941
MOV dword ptr [RSP + 0x50],0x0
MOV dword ptr [RSP + 0x24],0x0
JMP 0x0017a4b3
CMP dword ptr [RSP + 0x110],0x0
JZ 0x0017ae96
MOV EBX,0x6
MOV dword ptr [RSP + 0x8],0x0
JMP 0x0017a437
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
MOV EAX,dword ptr [RSP + 0x110]
MOV dword ptr [RSP + 0x8],EAX
JMP 0x0017aed6
MOV R8D,dword ptr [RSP + 0x4]
MOV ECX,EBP
MOV EDX,dword ptr [RSP + 0x20]
MOV ESI,0x20
MOV RDI,R14
CALL 0x00120767
MOV EAX,dword ptr [RSP + 0x110]
MOV dword ptr [RSP + 0x8],EAX
MOV EBX,0x2
JMP 0x0017a496
(translation_unit "void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)\n\n{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}\n\n" (function_definition "void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)\n\n{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" identifier (parameter_list "(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "char param_8" primitive_type identifier) , (parameter_declaration "byte param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined4 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "long param_12" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_13" (sized_type_specifier "long" long) (pointer_declarator "*param_13" * identifier)) ))) (compound_statement "{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined8 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "bool bVar26;" primitive_type identifier ;) (declaration "bool bVar27;" primitive_type identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "uint local_fc;" type_identifier identifier ;) (declaration "int local_e4;" primitive_type identifier ;) (declaration "int local_dc;" primitive_type identifier ;) (declaration "long local_d0;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "uint local_c4;" type_identifier identifier ;) (declaration "long local_c0;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "long local_b0;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "byte local_74;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (expression_statement "local_74 = param_9;" (assignment_expression "local_74 = param_9" identifier = identifier) ;) (expression_statement "bVar26 = param_7 != 0;" (assignment_expression "bVar26 = param_7 != 0" identifier = (binary_expression "param_7 != 0" identifier != number_literal)) ;) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar14 = FUN_00121a1e();" (assignment_expression "lVar14 = FUN_00121a1e()" identifier = (call_expression "FUN_00121a1e()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar21 = *(uint *)(param_2 + 8);" (assignment_expression "uVar21 = *(uint *)(param_2 + 8)" identifier = (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" if (parenthesized_expression "((uVar21 & 0x80) == 0)" ( (binary_expression "(uVar21 & 0x80) == 0" (parenthesized_expression "(uVar21 & 0x80)" ( (binary_expression "uVar21 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    sVar2 = 1;\n    local_b0 = 0;\n  }" { (expression_statement "sVar2 = 1;" (assignment_expression "sVar2 = 1" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" else (compound_statement "{\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" { (expression_statement "local_b0 = FUN_00111247(param_2);" (assignment_expression "local_b0 = FUN_00111247(param_2)" identifier = (call_expression "FUN_00111247(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar2 = *(short *)(local_b0 + 0x5e);" (assignment_expression "sVar2 = *(short *)(local_b0 + 0x5e)" identifier = (pointer_expression "*(short *)(local_b0 + 0x5e)" * (cast_expression "(short *)(local_b0 + 0x5e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" if (parenthesized_expression "((uVar21 >> 0xb & 1) != 0)" ( (binary_expression "(uVar21 >> 0xb & 1) != 0" (parenthesized_expression "(uVar21 >> 0xb & 1)" ( (binary_expression "uVar21 >> 0xb & 1" (binary_expression "uVar21 >> 0xb" identifier >> number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" { (expression_statement "sVar7 = *(short *)((long)param_2 + 0x46);" (assignment_expression "sVar7 = *(short *)((long)param_2 + 0x46)" identifier = (pointer_expression "*(short *)((long)param_2 + 0x46)" * (cast_expression "(short *)((long)param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x46)" ( (binary_expression "(long)param_2 + 0x46" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (do_statement "do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );" do (compound_statement "{\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    }" { (for_statement "for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" for ( (assignment_expression "lVar23 = 0" identifier = number_literal) ; (binary_expression "(int)lVar23 < (int)sVar7" (cast_expression "(int)lVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "lVar23 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ) (compound_statement "{\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" { (expression_statement "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);" (assignment_expression "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1])" identifier = (cast_expression "(undefined8 *)(lVar23 * 0x20 + param_2[1])" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 * 0x20 + param_2[1])" ( (binary_expression "lVar23 * 0x20 + param_2[1]" (binary_expression "lVar23 * 0x20" identifier * number_literal) + (subscript_expression "param_2[1]" identifier [ number_literal ])) )))) ;) (expression_statement "bVar19 = *(byte *)(puVar25 + 3);" (assignment_expression "bVar19 = *(byte *)(puVar25 + 3)" identifier = (pointer_expression "*(byte *)(puVar25 + 3)" * (cast_expression "(byte *)(puVar25 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 3)" ( (binary_expression "puVar25 + 3" identifier + number_literal) ))))) ;) (if_statement "if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" if (parenthesized_expression "((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23))" ( (binary_expression "(bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) && (parenthesized_expression "((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" ( (binary_expression "(int)*(short *)((long)param_2 + 0x44) != (int)lVar23" (cast_expression "(int)*(short *)((long)param_2 + 0x44)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((long)param_2 + 0x44)" * (cast_expression "(short *)((long)param_2 + 0x44)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x44)" ( (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) != (cast_expression "(int)lVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" { (expression_statement "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;" (assignment_expression "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60" identifier = (binary_expression "*(uint *)((long)puVar25 + 0x1c) & 0x60" (pointer_expression "*(uint *)((long)puVar25 + 0x1c)" * (cast_expression "(uint *)((long)puVar25 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar25 + 0x1c)" ( (binary_expression "(long)puVar25 + 0x1c" (cast_expression "(long)puVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (if_statement "if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }" if (parenthesized_expression "((uVar21 == 0) || (bVar5))" ( (binary_expression "(uVar21 == 0) || (bVar5)" (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar5)" ( identifier ))) )) (compound_statement "{\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }" { (if_statement "if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" if (parenthesized_expression "(((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0))" ( (binary_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)" (parenthesized_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4)))" ( (binary_expression "(param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))" (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) || (parenthesized_expression "(-1 < *(int *)(param_12 + lVar23 * 4))" ( (binary_expression "-1 < *(int *)(param_12 + lVar23 * 4)" number_literal < (pointer_expression "*(int *)(param_12 + lVar23 * 4)" * (cast_expression "(int *)(param_12 + lVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + lVar23 * 4)" ( (binary_expression "param_12 + lVar23 * 4" identifier + (binary_expression "lVar23 * 4" identifier * number_literal)) ))))) ))) )) || (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) ))) )) (compound_statement "{\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" { (expression_statement "bVar18 = param_9;" (assignment_expression "bVar18 = param_9" identifier = identifier) ;) (if_statement "if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" if (parenthesized_expression "((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb))" ( (binary_expression "(param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)" (parenthesized_expression "(param_9 == 0xb)" ( (binary_expression "param_9 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar18 = bVar19, bVar19 == 0xb)" ( (comma_expression "bVar18 = bVar19, bVar19 == 0xb" (assignment_expression "bVar18 = bVar19" identifier = identifier) , (binary_expression "bVar19 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" statement_identifier : (if_statement "if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" if (parenthesized_expression "((bVar5) && (uVar21 == 0))" ( (binary_expression "(bVar5) && (uVar21 == 0)" (parenthesized_expression "(bVar5)" ( identifier )) && (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;))) }) (else_clause "else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" else (compound_statement "{\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" { (if_statement "if (bVar18 != 5) goto LAB_00179efc;" if (parenthesized_expression "(bVar18 != 5)" ( (binary_expression "bVar18 != 5" identifier != number_literal) )) (goto_statement "goto LAB_00179efc;" goto statement_identifier ;)) (if_statement "if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n                  bVar18 = 2;\n                }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) }) (else_clause "else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" else (if_statement "if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" if (parenthesized_expression "(puVar25[1] == 0)" ( (binary_expression "puVar25[1] == 0" (subscript_expression "puVar25[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  bVar18 = 2;\n                }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) })))) }))) (expression_statement "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);" (assignment_expression "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23)" identifier = (call_expression "FUN_001112f9(param_2,(int)(short)lVar23)" identifier (argument_list "(param_2,(int)(short)lVar23)" ( identifier , (cast_expression "(int)(short)lVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)lVar23" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) )))) ;) (expression_statement "iVar8 = param_6 + 1 + (int)sVar6;" (assignment_expression "iVar8 = param_6 + 1 + (int)sVar6" identifier = (binary_expression "param_6 + 1 + (int)sVar6" (binary_expression "param_6 + 1" identifier + number_literal) + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" if (parenthesized_expression "(bVar18 == 2)" ( (binary_expression "bVar18 == 2" identifier == number_literal) )) (compound_statement "{\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }" { (expression_statement "FUN_001115a2(param_1);" (call_expression "FUN_001115a2(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" statement_identifier : (expression_statement "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" (assignment_expression "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" identifier = (call_expression "FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" identifier (argument_list "(lVar3,"%s.%s",*param_2,*puVar25)" ( identifier , (string_literal ""%s.%s"" " string_content ") , (pointer_expression "*param_2" * identifier) , (pointer_expression "*puVar25" * identifier) )))) ;)) (expression_statement "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);" (call_expression "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8)" identifier (argument_list "(lVar14,0x43,0x513,bVar18,iVar8)" ( identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_0011aa64(lVar14,uVar16,0xfffffff9);" (call_expression "FUN_0011aa64(lVar14,uVar16,0xfffffff9)" identifier (argument_list "(lVar14,uVar16,0xfffffff9)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0010f49a(lVar14,1);" (call_expression "FUN_0010f49a(lVar14,1)" identifier (argument_list "(lVar14,1)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" else (compound_statement "{\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" { (if_statement "if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" if (parenthesized_expression "(bVar18 < 3)" ( (binary_expression "bVar18 < 3" identifier < number_literal) )) (compound_statement "{\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }" { (if_statement "if (bVar18 == 1) goto LAB_00179f5d;" if (parenthesized_expression "(bVar18 == 1)" ( (binary_expression "bVar18 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" else (compound_statement "{\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" { (if_statement "if (bVar18 == 3) goto LAB_00179f5d;" if (parenthesized_expression "(bVar18 == 3)" ( (binary_expression "bVar18 == 3" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) (if_statement "if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" if (parenthesized_expression "(bVar18 == 5)" ( (binary_expression "bVar18 == 5" identifier == number_literal) )) (compound_statement "{\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" { (expression_statement "uVar12 = FUN_00120894(lVar14,0x33,iVar8);" (assignment_expression "uVar12 = FUN_00120894(lVar14,0x33,iVar8)" identifier = (call_expression "FUN_00120894(lVar14,0x33,iVar8)" identifier (argument_list "(lVar14,0x33,iVar8)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_fc = local_fc + 1;" (assignment_expression "local_fc = local_fc + 1" identifier = (binary_expression "local_fc + 1" identifier + number_literal)) ;) (expression_statement "FUN_0015ba64(param_1,puVar25[1],iVar8);" (call_expression "FUN_0015ba64(param_1,puVar25[1],iVar8)" identifier (argument_list "(param_1,puVar25[1],iVar8)" ( identifier , (subscript_expression "puVar25[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" identifier (argument_list "(lVar14,uVar12)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;) })) }))) (expression_statement "FUN_001207c0(lVar14,0x32,iVar8,param_10);" (call_expression "FUN_001207c0(lVar14,0x32,iVar8,param_10)" identifier (argument_list "(lVar14,0x32,iVar8,param_10)" ( identifier , number_literal , identifier , identifier ))) ;) }))) })) }) (else_clause "else {\n            local_e4 = local_e4 + 1;\n          }" else (compound_statement "{\n            local_e4 = local_e4 + 1;\n          }" { (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" identifier = (binary_expression "local_e4 + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_00179e5a:" statement_identifier : (expression_statement "" ;)) })) (if_statement "if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;" if (parenthesized_expression "((local_fc == 0 && local_e4 == 0) || (bVar5))" ( (binary_expression "(local_fc == 0 && local_e4 == 0) || (bVar5)" (parenthesized_expression "(local_fc == 0 && local_e4 == 0)" ( (binary_expression "local_fc == 0 && local_e4 == 0" (binary_expression "local_fc == 0" identifier == number_literal) && (binary_expression "local_e4 == 0" identifier == number_literal)) )) || (parenthesized_expression "(bVar5)" ( identifier ))) )) (break_statement "break;" break ;)) (if_statement "if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" if (parenthesized_expression "((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0))" ( (binary_expression "(0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)" (parenthesized_expression "(0 < (int)local_fc)" ( (binary_expression "0 < (int)local_fc" number_literal < (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x60) != 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x60) != 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x60)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x60" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" { (expression_statement "FUN_0015bd19(param_1,param_6 + 1,param_2);" (call_expression "FUN_0015bd19(param_1,param_6 + 1,param_2)" identifier (argument_list "(param_1,param_6 + 1,param_2)" ( identifier , (binary_expression "param_6 + 1" identifier + number_literal) , identifier ))) ;) })) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "piVar4 = (int *)param_2[6];" (assignment_expression "piVar4 = (int *)param_2[6]" identifier = (cast_expression "(int *)param_2[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (if_statement "if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" if (parenthesized_expression "((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0))" ( (binary_expression "(piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 2)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 2" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" { (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (if_statement "if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }" if (parenthesized_expression "(param_9 != 0xb)" ( (binary_expression "param_9 != 0xb" identifier != number_literal) )) (compound_statement "{\n      bVar19 = param_9;\n    }" { (expression_statement "bVar19 = param_9;" (assignment_expression "bVar19 = param_9" identifier = identifier) ;) })) (for_statement "for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" for ( (assignment_expression "local_100 = 0" identifier = number_literal) ; (binary_expression "local_100 < *piVar4" identifier < (pointer_expression "*piVar4" * identifier)) ; (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ) (compound_statement "{\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" { (expression_statement "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);" (assignment_expression "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" identifier = (pointer_expression "*(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" * (cast_expression "(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 2)" ( (binary_expression "piVar4 + (long)local_100 * 6 + 2" (binary_expression "piVar4 + (long)local_100 * 6" identifier + (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (if_statement "if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" if (parenthesized_expression "((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0))" ( (binary_expression "(param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" ( (comma_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0" (assignment_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8)" identifier = (call_expression "FUN_001174e9(uVar16,param_12,param_8)" identifier (argument_list "(uVar16,param_12,param_8)" ( identifier , identifier , identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" { (if_statement "if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" { (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" identifier (argument_list "(lVar14,param_2,param_6 + 1)" ( identifier , identifier , (binary_expression "param_6 + 1" identifier + number_literal) ))) ;) })) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_00135319(lVar3,uVar16,0);" (assignment_expression "uVar16 = FUN_00135319(lVar3,uVar16,0)" identifier = (call_expression "FUN_00135319(lVar3,uVar16,0)" identifier (argument_list "(lVar3,uVar16,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" if (parenthesized_expression "(*(char *)(lVar3 + 0x61) == '\0')" ( (binary_expression "*(char *)(lVar3 + 0x61) == '\0'" (pointer_expression "*(char *)(lVar3 + 0x61)" * (cast_expression "(char *)(lVar3 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x61)" ( (binary_expression "lVar3 + 0x61" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" { (expression_statement "FUN_00159eda(param_1,uVar16,iVar8,0x10);" (call_expression "FUN_00159eda(param_1,uVar16,iVar8,0x10)" identifier (argument_list "(param_1,uVar16,iVar8,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) })) (expression_statement "FUN_0011c4af(lVar3,uVar16);" (call_expression "FUN_0011c4af(lVar3,uVar16)" identifier (argument_list "(lVar3,uVar16)" ( identifier , identifier ))) ;) (if_statement "if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" if (parenthesized_expression "(bVar19 == 4)" ( (binary_expression "bVar19 == 4" identifier == number_literal) )) (compound_statement "{\n          FUN_00120941(lVar14,param_10);\n        }" { (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" else (compound_statement "{\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" { (expression_statement "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);" (assignment_expression "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4)" identifier = (pointer_expression "*(long *)(piVar4 + (long)local_100 * 6 + 4)" * (cast_expression "(long *)(piVar4 + (long)local_100 * 6 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 4)" ( (binary_expression "piVar4 + (long)local_100 * 6 + 4" (binary_expression "piVar4 + (long)local_100 * 6" identifier + (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (if_statement "if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }" if (parenthesized_expression "(lVar23 == 0)" ( (binary_expression "lVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            lVar23 = *param_2;\n          }" { (expression_statement "lVar23 = *param_2;" (assignment_expression "lVar23 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (bVar19 == 5) {\n            bVar19 = 2;\n          }" if (parenthesized_expression "(bVar19 == 5)" ( (binary_expression "bVar19 == 5" identifier == number_literal) )) (compound_statement "{\n            bVar19 = 2;\n          }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) })) (expression_statement "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);" (call_expression "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3)" identifier (argument_list "(param_1,0x113,bVar19,lVar23,0,3)" ( identifier , number_literal , identifier , identifier , number_literal , number_literal ))) ;) }))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) })) })) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" if (parenthesized_expression "(param_13 == (long *)0x0)" ( (binary_expression "param_13 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" identifier = number_literal) ;) }) (else_clause "else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" else (if_statement "if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" if (parenthesized_expression "(*param_13 == 0)" ( (binary_expression "*param_13 == 0" (pointer_expression "*param_13" * identifier) == number_literal) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" identifier = number_literal) ;) (expression_statement "param_13 = (long *)0x0;" (assignment_expression "param_13 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 4;" (assignment_expression "local_74 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" else (compound_statement "{\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" { (expression_statement "local_d0 = param_13[4];" (assignment_expression "local_d0 = param_13[4]" identifier = (subscript_expression "param_13[4]" identifier [ number_literal ])) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" if (parenthesized_expression "(local_d0 != 0)" ( (binary_expression "local_d0 != 0" identifier != number_literal) )) (compound_statement "{\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" { (expression_statement "local_b4 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_b4 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) })) }))))) (if_statement "if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" if (parenthesized_expression "((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0)" ( (binary_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000) == 0" (parenthesized_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000)" ( (binary_expression "*(ulong *)(lVar3 + 0x30) & 0x6000" (pointer_expression "*(ulong *)(lVar3 + 0x30)" * (cast_expression "(ulong *)(lVar3 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }" { (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" else (compound_statement "{\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" { (if_statement "if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" if (parenthesized_expression "(((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0)" ( (binary_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0" (parenthesized_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1)" ( (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ulong *)(lVar3 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) )))) >> number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }" { (expression_statement "local_fc = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "local_fc = FUN_001116f3(param_1,param_2,0,0)" identifier = (call_expression "FUN_001116f3(param_1,param_2,0,0)" identifier (argument_list "(param_1,param_2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (labeled_statement "LAB_0017a0bd:\n      local_c8 = local_fc;" statement_identifier : (expression_statement "local_c8 = local_fc;" (assignment_expression "local_c8 = local_fc" identifier = identifier) ;)) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (if_statement "if (local_fc == 0) goto LAB_0017a102;" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017a102;" goto statement_identifier ;)) }) (else_clause "else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" else (compound_statement "{\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" { (expression_statement "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);" (assignment_expression "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier = (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier (argument_list "(param_1,param_2,0x7e,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" { (expression_statement "iVar8 = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "iVar8 = FUN_001116f3(param_1,param_2,0,0)" identifier = (call_expression "FUN_001116f3(param_1,param_2,0,0)" identifier (argument_list "(param_1,param_2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_fc = (uint)(iVar8 != 0);" (assignment_expression "local_fc = (uint)(iVar8 != 0)" identifier = (call_expression "(uint)(iVar8 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_0017a0bd;" goto statement_identifier ;) })) }))) (expression_statement "local_fc = (int)param_1[7] + 1;" (assignment_expression "local_fc = (int)param_1[7] + 1" identifier = (binary_expression "(int)param_1[7] + 1" (cast_expression "(int)param_1[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 7) = local_fc;" (assignment_expression "*(uint *)(param_1 + 7) = local_fc" (pointer_expression "*(uint *)(param_1 + 7)" * (cast_expression "(uint *)(param_1 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001207c0(lVar14,0x45,0,local_fc);" (call_expression "FUN_001207c0(lVar14,0x45,0,local_fc)" identifier (argument_list "(lVar14,0x45,0,local_fc)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "local_c8 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c8 = *(int *)((long)param_1 + 0x44) - 1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c8;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c8" (pointer_expression "*(uint *)((long)param_1 + 0x44)" * (cast_expression "(uint *)((long)param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" statement_identifier : (if_statement "if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" if (parenthesized_expression "((param_8 == '\0') || (local_b0 != 0))" ( (binary_expression "(param_8 == '\0') || (local_b0 != 0)" (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_b0 != 0)" ( (binary_expression "local_b0 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" { (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a4e9;" goto statement_identifier ;) }))) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "bVar19 = local_74;" (assignment_expression "bVar19 = local_74" identifier = identifier) ;) (if_statement "if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" if (parenthesized_expression "((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb))" ( (binary_expression "(local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" ( (comma_expression "bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb" (assignment_expression "bVar19 = *(byte *)((long)param_2 + 0x4e)" identifier = (pointer_expression "*(byte *)((long)param_2 + 0x4e)" * (cast_expression "(byte *)((long)param_2 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x4e)" ( (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (binary_expression "*(byte *)((long)param_2 + 0x4e) == 0xb" (pointer_expression "*(byte *)((long)param_2 + 0x4e)" * (cast_expression "(byte *)((long)param_2 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x4e)" ( (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (if_statement "if (param_13 != (long *)0x0) goto LAB_0017a14e;" if (parenthesized_expression "(param_13 != (long *)0x0)" ( (binary_expression "param_13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017a14e;" goto statement_identifier ;)) (if_statement "if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (goto_statement "goto switchD_0017a48f_caseD_1;" goto statement_identifier ;) })) (if_statement "if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" if (parenthesized_expression "(param_13 != (long *)0x0)" ( (binary_expression "param_13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" { (labeled_statement "LAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;" statement_identifier : (if_statement "if (param_13[4] != 0) goto LAB_0017a353;" if (parenthesized_expression "(param_13[4] != 0)" ( (binary_expression "param_13[4] != 0" (subscript_expression "param_13[4]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0017a353;" goto statement_identifier ;))) (if_statement "if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" if (parenthesized_expression "(param_13[2] != 0)" ( (binary_expression "param_13[2] != 0" (subscript_expression "param_13[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" { (if_statement "if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" { (expression_statement "bVar19 = 6;" (assignment_expression "bVar19 = 6" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_6;" goto statement_identifier ;) })) (if_statement "if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "bVar19 = 4;" (assignment_expression "bVar19 = 4" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_4;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" statement_identifier : (if_statement "if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" if (parenthesized_expression "(bVar19 == 5)" ( (binary_expression "bVar19 == 5" identifier == number_literal) )) (compound_statement "{\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" if (parenthesized_expression "((local_74 != 5) && (param_2[2] != 0))" ( (binary_expression "(local_74 != 5) && (param_2[2] != 0)" (parenthesized_expression "(local_74 != 5)" ( (binary_expression "local_74 != 5" identifier != number_literal) )) && (parenthesized_expression "(param_2[2] != 0)" ( (binary_expression "param_2[2] != 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" { (expression_statement "local_100 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_100 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" { (labeled_statement "LAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" statement_identifier : (expression_statement "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7)" identifier (argument_list "(lVar14,0x35,param_6,iVar8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) (goto_statement "goto LAB_0017a45f;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (labeled_statement "switchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" statement_identifier : (if_statement "if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }" { (if_statement "if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" if (parenthesized_expression "(param_2[2] == 0)" ( (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" else (compound_statement "{\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);" (call_expression "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff)" identifier (argument_list "(param_1,param_2,param_4,param_5,0,0xffffffff)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" else (compound_statement "{\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" identifier (argument_list "(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" identifier (argument_list "(lVar14,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "local_b8 = 1;" (assignment_expression "local_b8 = 1" identifier = number_literal) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })))) }) (else_clause "else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" else (compound_statement "{\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" { (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" statement_identifier : (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (switch_statement "switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" switch (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" { (case_statement "case 5:\n      goto switchD_0017a48f_caseD_5;" case number_literal : (goto_statement "goto switchD_0017a48f_caseD_5;" goto statement_identifier ;)) (case_statement "case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" case number_literal : (labeled_statement "switchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" statement_identifier : (expression_statement "FUN_00179afb(param_1,param_13,param_2,0,param_4);" (call_expression "FUN_00179afb(param_1,param_13,param_2,0,param_4)" identifier (argument_list "(param_1,param_13,param_2,0,param_4)" ( identifier , identifier , identifier , number_literal , identifier ))) ;))) (case_statement "case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);" statement_identifier : (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n      bVar19 = 2;" default : (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);" statement_identifier : (expression_statement "FUN_001300b2(param_1,bVar19,param_2);" (call_expression "FUN_001300b2(param_1,bVar19,param_2)" identifier (argument_list "(param_1,bVar19,param_2)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;)) })) })))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) (expression_statement "local_90 = local_100;" (assignment_expression "local_90 = local_100" identifier = identifier) ;) (if_statement "if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" { (expression_statement "local_90 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_90 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_100 + -1);" (call_expression "FUN_0010f4fb(lVar14,local_100 + -1)" identifier (argument_list "(lVar14,local_100 + -1)" ( identifier , (binary_expression "local_100 + -1" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_0017a4e9:\n  lVar23 = param_2[2];" statement_identifier : (expression_statement "lVar23 = param_2[2];" (assignment_expression "lVar23 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );" do (compound_statement "{\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  }" { (if_statement "if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" if (parenthesized_expression "(lVar23 == 0)" ( (binary_expression "lVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" { (if_statement "if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" { (expression_statement "FUN_00120941(lVar14,local_100);" (call_expression "FUN_00120941(lVar14,local_100)" identifier (argument_list "(lVar14,local_100)" ( identifier , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_90);" (call_expression "FUN_0010f4fb(lVar14,local_90)" identifier (argument_list "(lVar14,local_90)" ( identifier , identifier ))) ;) })) (if_statement "if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" { (expression_statement "FUN_001207c0(lVar14,0x14,local_fc,local_c4);" (call_expression "FUN_001207c0(lVar14,0x14,local_fc,local_c4)" identifier (argument_list "(lVar14,0x14,local_fc,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }" { (if_statement "if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" { (expression_statement "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7)" identifier (argument_list "(lVar14,0x35,param_6,local_c8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,local_c8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_001300b2(param_1,2,param_2);" (call_expression "FUN_001300b2(param_1,2,param_2)" identifier (argument_list "(param_1,2,param_2)" ( identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n          FUN_00120941(lVar14,local_c8);\n        }" else (compound_statement "{\n          FUN_00120941(lVar14,local_c8);\n        }" { (expression_statement "FUN_00120941(lVar14,local_c8);" (call_expression "FUN_00120941(lVar14,local_c8)" identifier (argument_list "(lVar14,local_c8)" ( identifier , identifier ))) ;) }))) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" identifier (argument_list "(lVar14,local_c4)" ( identifier , identifier ))) ;) })) (if_statement "if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }" if (parenthesized_expression "(((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5))" ( (binary_expression "((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" ( (comma_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5" (call_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" identifier (argument_list "(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" ( identifier , number_literal , (binary_expression "param_6 + 1" identifier + number_literal) , (cast_expression "(int)(short)param_2[9]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)param_2[9]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[9]" identifier [ number_literal ]))) , (pointer_expression "*(undefined4 *)(param_3 + (long)local_a8 * 4)" * (cast_expression "(undefined4 *)(param_3 + (long)local_a8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)local_a8 * 4)" ( (binary_expression "param_3 + (long)local_a8 * 4" identifier + (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ))) , (unary_expression "!bVar5" ! identifier)) ))) )) (compound_statement "{\n        FUN_0013c76e(lVar14,param_2,0);\n      }" { (expression_statement "FUN_0013c76e(lVar14,param_2,0);" (call_expression "FUN_0013c76e(lVar14,param_2,0)" identifier (argument_list "(lVar14,param_2,0)" ( identifier , identifier , number_literal ))) ;) })) (expression_statement "*param_11 = local_e4;" (assignment_expression "*param_11 = local_e4" (pointer_expression "*param_11" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar4 = (int *)(param_3 + (long)local_a8 * 4);" (assignment_expression "piVar4 = (int *)(param_3 + (long)local_a8 * 4)" identifier = (cast_expression "(int *)(param_3 + (long)local_a8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)local_a8 * 4)" ( (binary_expression "param_3 + (long)local_a8 * 4" identifier + (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (if_statement "if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) )) (compound_statement "{\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }" { (expression_statement "iVar8 = local_b4 + 1;" (assignment_expression "iVar8 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "local_84 = FUN_00120941(lVar14,0);" (assignment_expression "local_84 = FUN_00120941(lVar14,0)" identifier = (call_expression "FUN_00120941(lVar14,0)" identifier (argument_list "(lVar14,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_b4);" (call_expression "FUN_0010f4fb(lVar14,local_b4)" identifier (argument_list "(lVar14,local_b4)" ( identifier , identifier ))) ;) (if_statement "if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" { (labeled_statement "LAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);" statement_identifier : (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" identifier (argument_list "(lVar14,param_2,param_6 + 1)" ( identifier , identifier , (binary_expression "param_6 + 1" identifier + number_literal) ))) ;)) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) })) }) (else_clause "else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" else (compound_statement "{\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" { (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;" if (parenthesized_expression "((!bVar5) && (local_d0 == 0))" ( (binary_expression "(!bVar5) && (local_d0 == 0)" (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) && (parenthesized_expression "(local_d0 == 0)" ( (binary_expression "local_d0 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_0017a81c;" goto statement_identifier ;)) }))) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" if (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" ( (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" * (cast_expression "(long *)(lVar23 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" { (expression_statement "FUN_001207c0(lVar14,0x48,0,*piVar4);" (call_expression "FUN_001207c0(lVar14,0x48,0,*piVar4)" identifier (argument_list "(lVar14,0x48,0,*piVar4)" ( identifier , number_literal , number_literal , (pointer_expression "*piVar4" * identifier) ))) ;) (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);" (call_expression "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" identifier (argument_list "(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" ( identifier , (pointer_expression "*(undefined8 *)(lVar23 + 0x48)" * (cast_expression "(undefined8 *)(lVar23 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) , identifier , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar22 = *piVar4;" (assignment_expression "iVar22 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar9 = iVar22 + 1;" (assignment_expression "iVar9 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = iVar22 + 1;" (assignment_expression "iVar10 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (for_statement "for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" for ( (assignment_expression "iVar11 = 0" identifier = number_literal) ; (binary_expression "iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60)" identifier < (binary_expression "(int)(uint)*(ushort *)(lVar23 + 0x60)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(lVar23 + 0x60)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x60)" ( (binary_expression "lVar23 + 0x60" identifier + number_literal) ))))) ; (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ) (compound_statement "{\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" { (expression_statement "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);" (assignment_expression "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" identifier = (pointer_expression "*(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" * (cast_expression "(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" ( (binary_expression "*(long *)(lVar23 + 8) + (long)iVar11 * 2" (pointer_expression "*(long *)(lVar23 + 8)" * (cast_expression "(long *)(lVar23 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 8)" ( (binary_expression "lVar23 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar11 * 2" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) ;) (if_statement "if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" if (parenthesized_expression "(sVar7 == -2)" ( (binary_expression "sVar7 == -2" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }" { (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);" (call_expression "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" identifier (argument_list "(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" ( identifier , (pointer_expression "*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" * (cast_expression "(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" ( (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8" (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50)" (binary_expression "(long)iVar11 * 0x18" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + (pointer_expression "*(long *)(lVar23 + 0x50)" * (cast_expression "(long *)(lVar23 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x50)" ( (binary_expression "lVar23 + 0x50" identifier + number_literal) ))))) + number_literal) )))) , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" else (if_statement "if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" if (parenthesized_expression "((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44)))" ( (binary_expression "(sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))" (parenthesized_expression "(sVar7 == -1)" ( (binary_expression "sVar7 == -1" identifier == number_literal) )) || (parenthesized_expression "(sVar7 == *(short *)((long)param_2 + 0x44))" ( (binary_expression "sVar7 == *(short *)((long)param_2 + 0x44)" identifier == (pointer_expression "*(short *)((long)param_2 + 0x44)" * (cast_expression "(short *)((long)param_2 + 0x44)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x44)" ( (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }" { (expression_statement "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11)" identifier (argument_list "(lVar14,0x4f,param_6,iVar10 + iVar11)" ( identifier , number_literal , identifier , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) }) (else_clause "else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" else (compound_statement "{\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" { (expression_statement "sVar7 = FUN_001112f9(param_2);" (assignment_expression "sVar7 = FUN_001112f9(param_2)" identifier = (call_expression "FUN_001112f9(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" identifier (argument_list "(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" ( identifier , number_literal , (binary_expression "param_6 + 1 + (int)sVar7" (binary_expression "param_6 + 1" identifier + number_literal) + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) }))))) })) (expression_statement "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);" (call_expression "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" identifier (argument_list "(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" ( identifier , number_literal , identifier , (pointer_expression "*(ushort *)(lVar23 + 0x60)" * (cast_expression "(ushort *)(lVar23 + 0x60)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x60)" ( (binary_expression "lVar23 + 0x60" identifier + number_literal) )))) , (pointer_expression "*piVar4" * identifier) ))) ;) (expression_statement "bVar27 = lVar23 == local_b0;" (assignment_expression "bVar27 = lVar23 == local_b0" identifier = (binary_expression "lVar23 == local_b0" identifier == identifier)) ;) (if_statement "if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar26 && param_8 == '\0') && (bVar27))" ( (binary_expression "(bVar26 && param_8 == '\0') && (bVar27)" (parenthesized_expression "(bVar26 && param_8 == '\0')" ( (binary_expression "bVar26 && param_8 == '\0'" identifier && (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(bVar27)" ( identifier ))) )) (compound_statement "{\n        FUN_00120437(lVar14,iVar8);\n      }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" { (expression_statement "uVar21 = (uint)*(byte *)(lVar23 + 0x62);" (assignment_expression "uVar21 = (uint)*(byte *)(lVar23 + 0x62)" identifier = (binary_expression "(uint)*(byte *)(lVar23 + 0x62)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar23 + 0x62)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x62)" ( (binary_expression "lVar23 + 0x62" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" if (parenthesized_expression "(*(byte *)(lVar23 + 0x62) == 0)" ( (binary_expression "*(byte *)(lVar23 + 0x62) == 0" (pointer_expression "*(byte *)(lVar23 + 0x62)" * (cast_expression "(byte *)(lVar23 + 0x62)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x62)" ( (binary_expression "lVar23 + 0x62" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00120437(lVar14,iVar8);\n        }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" else (compound_statement "{\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" { (if_statement "if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }" if (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) (compound_statement "{\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }" { (if_statement "if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }" if (parenthesized_expression "(uVar21 == 0xb)" ( (binary_expression "uVar21 == 0xb" identifier == number_literal) )) (compound_statement "{\n              uVar21 = 2;\n            }" { (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" identifier = number_literal) ;) })) }) (else_clause "else {\n            uVar21 = (uint)local_74;\n          }" else (compound_statement "{\n            uVar21 = (uint)local_74;\n          }" { (expression_statement "uVar21 = (uint)local_74;" (assignment_expression "uVar21 = (uint)local_74" identifier = (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (if_statement "if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" { (expression_statement "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe)" ( (binary_expression "-(uint)(param_13[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(param_13[2] == 0)" - (call_expression "(uint)(param_13[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_13[2] == 0)" ( (binary_expression "param_13[2] == 0" (subscript_expression "param_13[2]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" if (parenthesized_expression "(((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))))" ( (binary_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" (parenthesized_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))" ( (binary_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27)" (parenthesized_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5))" ( (binary_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)" (parenthesized_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0))" ( (binary_expression "(local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)" (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(long *)(lVar23 + 0x28) == 0)" ( (binary_expression "*(long *)(lVar23 + 0x28) == 0" (pointer_expression "*(long *)(lVar23 + 0x28)" * (cast_expression "(long *)(lVar23 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x28)" ( (binary_expression "lVar23 + 0x28" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(uVar21 == 5)" ( (binary_expression "uVar21 == 5" identifier == number_literal) ))) )) && (parenthesized_expression "(bVar27)" ( identifier ))) )) && (parenthesized_expression "((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" ( (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))" ( (binary_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0))" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x20)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 0x20" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" ( (comma_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier = (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier (argument_list "(param_1,param_2,0x7e,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal )))) , (binary_expression "lVar15 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" ( (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x40)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 0x40" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" ( (parenthesized_expression "(param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))" ( (binary_expression "param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)" (binary_expression "param_2[4] == 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) == number_literal) && (parenthesized_expression "(lVar15 = FUN_00111606(param_2), lVar15 == 0)" ( (comma_expression "lVar15 = FUN_00111606(param_2), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111606(param_2)" identifier = (call_expression "FUN_00111606(param_2)" identifier (argument_list "(param_2)" ( identifier )))) , (binary_expression "lVar15 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) ))) )) (compound_statement "{\n            FUN_00120437(lVar14,iVar8);\n          }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" else (compound_statement "{\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" { (expression_statement "iVar10 = local_a8 + param_5;" (assignment_expression "iVar10 = local_a8 + param_5" identifier = (binary_expression "local_a8 + param_5" identifier + identifier)) ;) (expression_statement "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));" (assignment_expression "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" identifier = (call_expression "FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" identifier (argument_list "(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" ( identifier , number_literal , identifier , identifier , identifier , (pointer_expression "*(undefined2 *)(lVar23 + 0x5e)" * (cast_expression "(undefined2 *)(lVar23 + 0x5e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x5e)" ( (binary_expression "lVar23 + 0x5e" identifier + number_literal) )))) )))) ;) (expression_statement "local_dc = iVar9;" (assignment_expression "local_dc = iVar9" identifier = identifier) ;) (if_statement "if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" if (parenthesized_expression "(lVar23 != local_b0)" ( (binary_expression "lVar23 != local_b0" identifier != identifier) )) (compound_statement "{\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" { (expression_statement "local_dc = FUN_00110b75(param_1,sVar2);" (assignment_expression "local_dc = FUN_00110b75(param_1,sVar2)" identifier = (call_expression "FUN_00110b75(param_1,sVar2)" identifier (argument_list "(param_1,sVar2)" ( identifier , identifier )))) ;) })) (if_statement "if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((uVar21 == 5) || (bVar26))" ( (binary_expression "(uVar21 == 5) || (bVar26)" (parenthesized_expression "(uVar21 == 5)" ( (binary_expression "uVar21 == 5" identifier == number_literal) )) || (parenthesized_expression "(bVar26)" ( identifier ))) )) (compound_statement "{\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" { (if_statement "if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" if (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }" { (expression_statement "FUN_001207c0(lVar14,0x86,iVar10,local_dc);" (call_expression "FUN_001207c0(lVar14,0x86,iVar10,local_dc)" identifier (argument_list "(lVar14,0x86,iVar10,local_dc)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" { (expression_statement "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7)" identifier (argument_list "(lVar14,0x35,local_dc,iVar8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) })) }) (else_clause "else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" else (compound_statement "{\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (if_statement "if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" if (parenthesized_expression "(lVar23 != local_b0)" ( (binary_expression "lVar23 != local_b0" identifier != identifier) )) (compound_statement "{\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" { (for_statement "for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" for ( ; (binary_expression "iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" identifier < (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ; (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ) (compound_statement "{\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" { (expression_statement "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));" (assignment_expression "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" identifier = (call_expression "FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" identifier (argument_list "(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" * (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (binary_expression "*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2" (pointer_expression "*(long *)(local_b0 + 8)" * (cast_expression "(long *)(local_b0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 8)" ( (binary_expression "local_b0 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar13 * 2" (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) )))) ;) (expression_statement "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);" (call_expression "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" identifier (argument_list "(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" ( identifier , number_literal , identifier , (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "local_dc + iVar13" identifier + identifier) ))) ;) })) })) (if_statement "if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" { (expression_statement "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);" (assignment_expression "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" identifier = (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) )))) + (pointer_expression "*(int *)(lVar14 + 0x90)" * (cast_expression "(int *)(lVar14 + 0x90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x90)" ( (binary_expression "lVar14 + 0x90" identifier + number_literal) )))))) ;) (expression_statement "iVar13 = local_dc;" (assignment_expression "iVar13 = local_dc" identifier = identifier) ;) (if_statement "if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }" if (parenthesized_expression "((*(byte *)(lVar23 + 99) & 3) == 2)" ( (binary_expression "(*(byte *)(lVar23 + 99) & 3) == 2" (parenthesized_expression "(*(byte *)(lVar23 + 99) & 3)" ( (binary_expression "*(byte *)(lVar23 + 99) & 3" (pointer_expression "*(byte *)(lVar23 + 99)" * (cast_expression "(byte *)(lVar23 + 99)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 99)" ( (binary_expression "lVar23 + 99" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar13 = iVar9;\n                  }" { (expression_statement "iVar13 = iVar9;" (assignment_expression "iVar13 = iVar9" identifier = identifier) ;) })) (expression_statement "local_88 = 0x34;" (assignment_expression "local_88 = 0x34" identifier = number_literal) ;) (for_statement "for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" for ( (assignment_expression "iVar24 = 0" identifier = number_literal) ; (binary_expression "iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" identifier < (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ; (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ) (compound_statement "{\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" { (expression_statement "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));" (assignment_expression "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" identifier = (call_expression "FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" identifier (argument_list "(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" ( identifier , (pointer_expression "*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" * (cast_expression "(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" ( (binary_expression "*(long *)(local_b0 + 0x40) + (long)iVar24 * 8" (pointer_expression "*(long *)(local_b0 + 0x40)" * (cast_expression "(long *)(local_b0 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x40)" ( (binary_expression "local_b0 + 0x40" identifier + number_literal) )))) + (binary_expression "(long)iVar24 * 8" (cast_expression "(long)iVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) )))) ;) (expression_statement "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;" (assignment_expression "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24" identifier = (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1 == iVar24" (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1" (pointer_expression "*(ushort *)(local_b0 + 0x5e)" * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) )))) - number_literal) == identifier)) ;) (if_statement "if (bVar20) {\n                      local_8c = iVar8;\n                    }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                      local_8c = iVar8;\n                    }" { (expression_statement "local_8c = iVar8;" (assignment_expression "local_8c = iVar8" identifier = identifier) ;) })) (expression_statement "uVar12 = 0x35;" (assignment_expression "uVar12 = 0x35" identifier = number_literal) ;) (if_statement "if (!bVar20) {\n                      uVar12 = local_88;\n                    }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n                      uVar12 = local_88;\n                    }" { (expression_statement "uVar12 = local_88;" (assignment_expression "uVar12 = local_88" identifier = identifier) ;) })) (expression_statement "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));" (assignment_expression "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" identifier = (call_expression "FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" identifier (argument_list "(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" * (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (binary_expression "*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2" (pointer_expression "*(long *)(local_b0 + 8)" * (cast_expression "(long *)(local_b0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 8)" ( (binary_expression "local_b0 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar24 * 2" (cast_expression "(long)iVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) )))) ;) (expression_statement "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);" (call_expression "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" identifier (argument_list "(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" ( identifier , identifier , (binary_expression "param_7 + 1 + (int)sVar7" (binary_expression "param_7 + 1" identifier + number_literal) + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , (binary_expression "iVar13 + iVar24" identifier + identifier) , identifier , number_literal ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) })) })) }))) })) (if_statement "if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" if (parenthesized_expression "(uVar21 == 4)" ( (binary_expression "uVar21 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }" { (labeled_statement "LAB_0017ad29:\n              FUN_00120941(lVar14,param_10);" statement_identifier : (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;)) }) (else_clause "else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" else (compound_statement "{\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" { (if_statement "if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "((int)uVar21 < 5)" ( (binary_expression "(int)uVar21 < 5" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }" { (if_statement "if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" if (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" { (expression_statement "FUN_0012834c(param_1,uVar21,lVar23);" (call_expression "FUN_0012834c(param_1,uVar21,lVar23)" identifier (argument_list "(param_1,uVar21,lVar23)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad47;" goto statement_identifier ;) })) }) (else_clause "else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" else (if_statement "if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "(uVar21 == 6)" ( (binary_expression "uVar21 == 6" identifier == number_literal) )) (compound_statement "{\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" { (expression_statement "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);" (call_expression "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10)" identifier (argument_list "(param_1,param_13,param_2,lVar23,iVar10)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad29;" goto statement_identifier ;) })))) (expression_statement "iVar13 = *(int *)(lVar14 + 0x90);" (assignment_expression "iVar13 = *(int *)(lVar14 + 0x90)" identifier = (pointer_expression "*(int *)(lVar14 + 0x90)" * (cast_expression "(int *)(lVar14 + 0x90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x90)" ( (binary_expression "lVar14 + 0x90" identifier + number_literal) ))))) ;) (if_statement "if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_b8 = local_b8 + 1;" (assignment_expression "local_b8 = local_b8 + 1" identifier = (binary_expression "local_b8 + 1" identifier + number_literal)) ;) })) (expression_statement "bVar20 = local_c0 != 0 && bVar26;" (assignment_expression "bVar20 = local_c0 != 0 && bVar26" identifier = (binary_expression "local_c0 != 0 && bVar26" (binary_expression "local_c0 != 0" identifier != number_literal) && identifier)) ;) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" { (expression_statement "FUN_00120894(lVar14,0x9f,param_4);" (call_expression "FUN_00120894(lVar14,0x9f,param_4)" identifier (argument_list "(lVar14,0x9f,param_4)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" identifier (argument_list "(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal , identifier , identifier ))) ;) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" { (expression_statement "FUN_00120894(lVar14,0xa0,param_4);" (call_expression "FUN_00120894(lVar14,0xa0,param_4)" identifier (argument_list "(lVar14,0xa0,param_4)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) (if_statement "if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" { (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" identifier (argument_list "(lVar14,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "uVar12 = FUN_0012083c(lVar14,0xb);" (assignment_expression "uVar12 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" identifier (argument_list "(lVar14,local_c4)" ( identifier , identifier ))) ;) (expression_statement "local_c4 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c4 = *(int *)((long)param_1 + 0x44) - 1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c4;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c4" (pointer_expression "*(uint *)((long)param_1 + 0x44)" * (cast_expression "(uint *)((long)param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" if (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" ( (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" * (cast_expression "(long *)(lVar23 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" { (expression_statement "FUN_001207c0(lVar14,0x32,iVar22,local_c4);" (call_expression "FUN_001207c0(lVar14,0x32,iVar22,local_c4)" identifier (argument_list "(lVar14,0x32,iVar22,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) })) (for_statement "for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" for ( (assignment_expression "iVar22 = 0" identifier = number_literal) ; (binary_expression "0 < (iVar13 - iVar11) - iVar22" number_literal < (binary_expression "(iVar13 - iVar11) - iVar22" (parenthesized_expression "(iVar13 - iVar11)" ( (binary_expression "iVar13 - iVar11" identifier - identifier) )) - identifier)) ; (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ) (compound_statement "{\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" { (expression_statement "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);" (assignment_expression "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" identifier = (cast_expression "(byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010f4bb(lVar14,iVar11 + iVar22)" identifier (argument_list "(lVar14,iVar11 + iVar22)" ( identifier , (binary_expression "iVar11 + iVar22" identifier + identifier) ))))) ;) (expression_statement "lVar15 = *(long *)(pbVar17 + 0x10);" (assignment_expression "lVar15 = *(long *)(pbVar17 + 0x10)" identifier = (pointer_expression "*(long *)(pbVar17 + 0x10)" * (cast_expression "(long *)(pbVar17 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 0x10)" ( (binary_expression "pbVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar19 = *pbVar17;" (assignment_expression "bVar19 = *pbVar17" identifier = (pointer_expression "*pbVar17" * identifier)) ;) (if_statement "if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" if (parenthesized_expression "(bVar19 != 0x86)" ( (binary_expression "bVar19 != 0x86" identifier != number_literal) )) (compound_statement "{\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" { (expression_statement "uVar21 = local_c4;" (assignment_expression "uVar21 = local_c4" identifier = identifier) ;) (if_statement "if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" if (parenthesized_expression "(((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0)" ( (binary_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0" (parenthesized_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1)" ( (binary_expression "(&DAT_00196340)[(int)(uint)bVar19] & 1" (subscript_expression "(&DAT_00196340)[(int)(uint)bVar19]" (parenthesized_expression "(&DAT_00196340)" ( (pointer_expression "&DAT_00196340" & identifier) )) [ (cast_expression "(int)(uint)bVar19" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" { (expression_statement "uVar21 = *(uint *)(pbVar17 + 8);" (assignment_expression "uVar21 = *(uint *)(pbVar17 + 8)" identifier = (pointer_expression "*(uint *)(pbVar17 + 8)" * (cast_expression "(uint *)(pbVar17 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 8)" ( (binary_expression "pbVar17 + 8" identifier + number_literal) ))))) ;) })) (if_statement "if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" if (parenthesized_expression "(pbVar17[1] == 0xfd)" ( (binary_expression "pbVar17[1] == 0xfd" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" { (expression_statement "local_48 = (int)lVar15;" (assignment_expression "local_48 = (int)lVar15" identifier = (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar15 = (long)local_48;" (assignment_expression "lVar15 = (long)local_48" identifier = (cast_expression "(long)local_48" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) })) (expression_statement "uVar1 = *(undefined2 *)(pbVar17 + 2);" (assignment_expression "uVar1 = *(undefined2 *)(pbVar17 + 2)" identifier = (pointer_expression "*(undefined2 *)(pbVar17 + 2)" * (cast_expression "(undefined2 *)(pbVar17 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 2)" ( (binary_expression "pbVar17 + 2" identifier + number_literal) ))))) ;) (expression_statement "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);" (call_expression "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" identifier (argument_list "(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" ( identifier , identifier , (pointer_expression "*(undefined4 *)(pbVar17 + 4)" * (cast_expression "(undefined4 *)(pbVar17 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(pbVar17 + 0xc)" * (cast_expression "(undefined4 *)(pbVar17 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 0xc)" ( (binary_expression "pbVar17 + 0xc" identifier + number_literal) )))) , identifier , (cast_expression "(int)(char)pbVar17[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar17[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "FUN_0010f49a(lVar14,uVar1);" (call_expression "FUN_0010f49a(lVar14,uVar1)" identifier (argument_list "(lVar14,uVar1)" ( identifier , identifier ))) ;) })) })) (expression_statement "FUN_0012834c(param_1,2,lVar23);" (call_expression "FUN_0012834c(param_1,2,lVar23)" identifier (argument_list "(param_1,2,lVar23)" ( identifier , number_literal , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" identifier (argument_list "(lVar14,uVar12)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })) }))) (labeled_statement "LAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" statement_identifier : (if_statement "if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }" { (expression_statement "FUN_00120941(lVar14,local_b4 + 1);" (call_expression "FUN_00120941(lVar14,local_b4 + 1)" identifier (argument_list "(lVar14,local_b4 + 1)" ( identifier , (binary_expression "local_b4 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_84);" (call_expression "FUN_0010f4fb(lVar14,local_84)" identifier (argument_list "(lVar14,local_84)" ( identifier , identifier ))) ;) }) (else_clause "else {\n              FUN_00120437(lVar14,iVar8);\n            }" else (compound_statement "{\n              FUN_00120437(lVar14,iVar8);\n            }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) })))) (if_statement "if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" if (parenthesized_expression "(local_dc != iVar9)" ( (binary_expression "local_dc != iVar9" identifier != identifier) )) (compound_statement "{\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" { (expression_statement "FUN_00110ba3(param_1,local_dc,sVar2);" (call_expression "FUN_00110ba3(param_1,local_dc,sVar2)" identifier (argument_list "(param_1,local_dc,sVar2)" ( identifier , identifier , identifier ))) ;) })) }))) }))) }))) })) (expression_statement "lVar23 = *(long *)(lVar23 + 0x28);" (assignment_expression "lVar23 = *(long *)(lVar23 + 0x28)" identifier = (pointer_expression "*(long *)(lVar23 + 0x28)" * (cast_expression "(long *)(lVar23 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x28)" ( (binary_expression "lVar23 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_a8 = local_a8 + 1;" (assignment_expression "local_a8 = local_a8 + 1" identifier = (binary_expression "local_a8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)\n\n{\n  int *piVar1;\n  u16 p5;\n  short sVar2;\n  sqlite3 *db;\n  ExprList *pEVar3;\n  bool bVar4;\n  i16 iVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int p1;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int op;\n  Vdbe *p;\n  char *pcVar12;\n  Expr *pEVar13;\n  Trigger *pTVar14;\n  FKey *pFVar15;\n  CollSeq *zP4;\n  VdbeOp *pVVar16;\n  byte bVar17;\n  bool bVar18;\n  uint uVar19;\n  long lVar20;\n  Index *pIdx;\n  p4union zP4_00;\n  int iVar21;\n  Column *pCVar22;\n  bool bVar23;\n  bool eMode;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  Index *local_d0;\n  uint local_c8;\n  uint local_c4;\n  Trigger *local_c0;\n  uint local_b8;\n  int local_b4;\n  Index *local_b0;\n  int local_a8;\n  uint local_9c;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  byte local_74;\n  u8 isUpdate;\n  int local_48;\n  \n  local_74 = overrideError;\n  bVar23 = regOldData != 0;\n  db = pParse->db;\n  p = sqlite3GetVdbe(pParse);\n  uVar19 = pTab->tabFlags;\n  if ((uVar19 & 0x80) == 0) {\n    local_9c = 1;\n    local_b0 = (Index *)0x0;\n  }\n  else {\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }\n  if ((uVar19 >> 0xb & 1) != 0) {\n    sVar2 = pTab->nCol;\n    local_e4 = 0;\n    local_fc = 0;\n    bVar4 = false;\n    do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );\n  }\n  pEVar3 = pTab->pCheck;\n  bVar4 = false;\n  if ((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    pParse->iSelfTab = ~regNewData;\n    bVar17 = 2;\n    if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }\n    uVar19 = (uint)bVar17;\n    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }\n    pParse->iSelfTab = 0;\n  }\n  if (pUpsert == (Upsert *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n  }\n  else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }\n  if ((db->flags & 0x6000) == 0) {\n    local_c0 = (Trigger *)0x0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }\nLAB_0017a102:\n  if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = pParse->nLabel + -1;\n  pParse->nLabel = iVar8;\n  bVar17 = local_74;\n  if ((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)) {\n    uVar19 = 2;\n    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;\n    if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    uVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  uVar19 = (uint)bVar17;\n  if (pUpsert != (Upsert *)0x0) {\nLAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;\n    if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (uVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  sqlite3VdbeResolveLabel(p,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = sqlite3VdbeAddOp0(p,0xb);\n    sqlite3VdbeJumpHere(p,local_100 + -1);\n  }\nLAB_0017a4e9:\n  pIdx = pTab->pIndex;\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }\n    piVar1 = aRegIdx + local_a8;\n    if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }\n    pIdx = pIdx->pNext;\n    local_a8 = local_a8 + 1;\n  } while( true );\n}\n\n" (function_definition "void sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)\n\n{\n  int *piVar1;\n  u16 p5;\n  short sVar2;\n  sqlite3 *db;\n  ExprList *pEVar3;\n  bool bVar4;\n  i16 iVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int p1;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int op;\n  Vdbe *p;\n  char *pcVar12;\n  Expr *pEVar13;\n  Trigger *pTVar14;\n  FKey *pFVar15;\n  CollSeq *zP4;\n  VdbeOp *pVVar16;\n  byte bVar17;\n  bool bVar18;\n  uint uVar19;\n  long lVar20;\n  Index *pIdx;\n  p4union zP4_00;\n  int iVar21;\n  Column *pCVar22;\n  bool bVar23;\n  bool eMode;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  Index *local_d0;\n  uint local_c8;\n  uint local_c4;\n  Trigger *local_c0;\n  uint local_b8;\n  int local_b4;\n  Index *local_b0;\n  int local_a8;\n  uint local_9c;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  byte local_74;\n  u8 isUpdate;\n  int local_48;\n  \n  local_74 = overrideError;\n  bVar23 = regOldData != 0;\n  db = pParse->db;\n  p = sqlite3GetVdbe(pParse);\n  uVar19 = pTab->tabFlags;\n  if ((uVar19 & 0x80) == 0) {\n    local_9c = 1;\n    local_b0 = (Index *)0x0;\n  }\n  else {\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }\n  if ((uVar19 >> 0xb & 1) != 0) {\n    sVar2 = pTab->nCol;\n    local_e4 = 0;\n    local_fc = 0;\n    bVar4 = false;\n    do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );\n  }\n  pEVar3 = pTab->pCheck;\n  bVar4 = false;\n  if ((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    pParse->iSelfTab = ~regNewData;\n    bVar17 = 2;\n    if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }\n    uVar19 = (uint)bVar17;\n    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }\n    pParse->iSelfTab = 0;\n  }\n  if (pUpsert == (Upsert *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n  }\n  else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }\n  if ((db->flags & 0x6000) == 0) {\n    local_c0 = (Trigger *)0x0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }\nLAB_0017a102:\n  if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = pParse->nLabel + -1;\n  pParse->nLabel = iVar8;\n  bVar17 = local_74;\n  if ((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)) {\n    uVar19 = 2;\n    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;\n    if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    uVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  uVar19 = (uint)bVar17;\n  if (pUpsert != (Upsert *)0x0) {\nLAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;\n    if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (uVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  sqlite3VdbeResolveLabel(p,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = sqlite3VdbeAddOp0(p,0xb);\n    sqlite3VdbeJumpHere(p,local_100 + -1);\n  }\nLAB_0017a4e9:\n  pIdx = pTab->pIndex;\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }\n    piVar1 = aRegIdx + local_a8;\n    if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }\n    pIdx = pIdx->pNext;\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" primitive_type (function_declarator "sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)" identifier (parameter_list "(Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "int *aRegIdx" primitive_type (pointer_declarator "*aRegIdx" * identifier)) , (parameter_declaration "int iDataCur" primitive_type identifier) , (parameter_declaration "int iIdxCur" primitive_type identifier) , (parameter_declaration "int regNewData" primitive_type identifier) , (parameter_declaration "int regOldData" primitive_type identifier) , (parameter_declaration "u8 pkChng" type_identifier identifier) , (parameter_declaration "u8 overrideError" type_identifier identifier) , (parameter_declaration "int ignoreDest" primitive_type identifier) , (parameter_declaration "int *pbMayReplace" primitive_type (pointer_declarator "*pbMayReplace" * identifier)) , (parameter_declaration "int *aiChng" primitive_type (pointer_declarator "*aiChng" * identifier)) , (parameter_declaration "Upsert *pUpsert" type_identifier (pointer_declarator "*pUpsert" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  u16 p5;\n  short sVar2;\n  sqlite3 *db;\n  ExprList *pEVar3;\n  bool bVar4;\n  i16 iVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int p1;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int op;\n  Vdbe *p;\n  char *pcVar12;\n  Expr *pEVar13;\n  Trigger *pTVar14;\n  FKey *pFVar15;\n  CollSeq *zP4;\n  VdbeOp *pVVar16;\n  byte bVar17;\n  bool bVar18;\n  uint uVar19;\n  long lVar20;\n  Index *pIdx;\n  p4union zP4_00;\n  int iVar21;\n  Column *pCVar22;\n  bool bVar23;\n  bool eMode;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  Index *local_d0;\n  uint local_c8;\n  uint local_c4;\n  Trigger *local_c0;\n  uint local_b8;\n  int local_b4;\n  Index *local_b0;\n  int local_a8;\n  uint local_9c;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  byte local_74;\n  u8 isUpdate;\n  int local_48;\n  \n  local_74 = overrideError;\n  bVar23 = regOldData != 0;\n  db = pParse->db;\n  p = sqlite3GetVdbe(pParse);\n  uVar19 = pTab->tabFlags;\n  if ((uVar19 & 0x80) == 0) {\n    local_9c = 1;\n    local_b0 = (Index *)0x0;\n  }\n  else {\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }\n  if ((uVar19 >> 0xb & 1) != 0) {\n    sVar2 = pTab->nCol;\n    local_e4 = 0;\n    local_fc = 0;\n    bVar4 = false;\n    do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );\n  }\n  pEVar3 = pTab->pCheck;\n  bVar4 = false;\n  if ((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    pParse->iSelfTab = ~regNewData;\n    bVar17 = 2;\n    if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }\n    uVar19 = (uint)bVar17;\n    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }\n    pParse->iSelfTab = 0;\n  }\n  if (pUpsert == (Upsert *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n  }\n  else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }\n  if ((db->flags & 0x6000) == 0) {\n    local_c0 = (Trigger *)0x0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }\nLAB_0017a102:\n  if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = pParse->nLabel + -1;\n  pParse->nLabel = iVar8;\n  bVar17 = local_74;\n  if ((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)) {\n    uVar19 = 2;\n    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;\n    if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    uVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  uVar19 = (uint)bVar17;\n  if (pUpsert != (Upsert *)0x0) {\nLAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;\n    if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (uVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  sqlite3VdbeResolveLabel(p,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = sqlite3VdbeAddOp0(p,0xb);\n    sqlite3VdbeJumpHere(p,local_100 + -1);\n  }\nLAB_0017a4e9:\n  pIdx = pTab->pIndex;\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }\n    piVar1 = aRegIdx + local_a8;\n    if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }\n    pIdx = pIdx->pNext;\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "u16 p5;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "ExprList *pEVar3;" type_identifier (pointer_declarator "*pEVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "i16 iVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int p1;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int op;" primitive_type identifier ;) (declaration "Vdbe *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "Expr *pEVar13;" type_identifier (pointer_declarator "*pEVar13" * identifier) ;) (declaration "Trigger *pTVar14;" type_identifier (pointer_declarator "*pTVar14" * identifier) ;) (declaration "FKey *pFVar15;" type_identifier (pointer_declarator "*pFVar15" * identifier) ;) (declaration "CollSeq *zP4;" type_identifier (pointer_declarator "*zP4" * identifier) ;) (declaration "VdbeOp *pVVar16;" type_identifier (pointer_declarator "*pVVar16" * identifier) ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "Index *pIdx;" type_identifier (pointer_declarator "*pIdx" * identifier) ;) (declaration "p4union zP4_00;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "Column *pCVar22;" type_identifier (pointer_declarator "*pCVar22" * identifier) ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "bool eMode;" primitive_type identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "uint local_fc;" type_identifier identifier ;) (declaration "int local_e4;" primitive_type identifier ;) (declaration "int local_dc;" primitive_type identifier ;) (declaration "Index *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "uint local_c4;" type_identifier identifier ;) (declaration "Trigger *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "Index *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "byte local_74;" type_identifier identifier ;) (declaration "u8 isUpdate;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (expression_statement "local_74 = overrideError;" (assignment_expression "local_74 = overrideError" identifier = identifier) ;) (expression_statement "bVar23 = regOldData != 0;" (assignment_expression "bVar23 = regOldData != 0" identifier = (binary_expression "regOldData != 0" identifier != number_literal)) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "p = sqlite3GetVdbe(pParse);" (assignment_expression "p = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) ;) (expression_statement "uVar19 = pTab->tabFlags;" (assignment_expression "uVar19 = pTab->tabFlags" identifier = (field_expression "pTab->tabFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar19 & 0x80) == 0) {\n    local_9c = 1;\n    local_b0 = (Index *)0x0;\n  }\n  else {\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }" if (parenthesized_expression "((uVar19 & 0x80) == 0)" ( (binary_expression "(uVar19 & 0x80) == 0" (parenthesized_expression "(uVar19 & 0x80)" ( (binary_expression "uVar19 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    local_9c = 1;\n    local_b0 = (Index *)0x0;\n  }" { (expression_statement "local_9c = 1;" (assignment_expression "local_9c = 1" identifier = number_literal) ;) (expression_statement "local_b0 = (Index *)0x0;" (assignment_expression "local_b0 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }" else (compound_statement "{\n    local_b0 = sqlite3PrimaryKeyIndex(pTab);\n    local_9c = (uint)local_b0->nKeyCol;\n  }" { (expression_statement "local_b0 = sqlite3PrimaryKeyIndex(pTab);" (assignment_expression "local_b0 = sqlite3PrimaryKeyIndex(pTab)" identifier = (call_expression "sqlite3PrimaryKeyIndex(pTab)" identifier (argument_list "(pTab)" ( identifier )))) ;) (expression_statement "local_9c = (uint)local_b0->nKeyCol;" (assignment_expression "local_9c = (uint)local_b0->nKeyCol" identifier = (cast_expression "(uint)local_b0->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_b0->nKeyCol" identifier -> field_identifier))) ;) }))) (if_statement "if ((uVar19 >> 0xb & 1) != 0) {\n    sVar2 = pTab->nCol;\n    local_e4 = 0;\n    local_fc = 0;\n    bVar4 = false;\n    do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );\n  }" if (parenthesized_expression "((uVar19 >> 0xb & 1) != 0)" ( (binary_expression "(uVar19 >> 0xb & 1) != 0" (parenthesized_expression "(uVar19 >> 0xb & 1)" ( (binary_expression "uVar19 >> 0xb & 1" (binary_expression "uVar19 >> 0xb" identifier >> number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    sVar2 = pTab->nCol;\n    local_e4 = 0;\n    local_fc = 0;\n    bVar4 = false;\n    do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );\n  }" { (expression_statement "sVar2 = pTab->nCol;" (assignment_expression "sVar2 = pTab->nCol" identifier = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (do_statement "do {\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    } while( true );" do (compound_statement "{\n      for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;\n      if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }\n      bVar4 = true;\n    }" { (for_statement "for (lVar20 = 0; (int)lVar20 < (int)sVar2; lVar20 = lVar20 + 1) {\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" for ( (assignment_expression "lVar20 = 0" identifier = number_literal) ; (binary_expression "(int)lVar20 < (int)sVar2" (cast_expression "(int)lVar20" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ) (compound_statement "{\n        pCVar22 = pTab->aCol + lVar20;\n        uVar19 = (uint)pCVar22->notNull;\n        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" { (expression_statement "pCVar22 = pTab->aCol + lVar20;" (assignment_expression "pCVar22 = pTab->aCol + lVar20" identifier = (binary_expression "pTab->aCol + lVar20" (field_expression "pTab->aCol" identifier -> field_identifier) + identifier)) ;) (expression_statement "uVar19 = (uint)pCVar22->notNull;" (assignment_expression "uVar19 = (uint)pCVar22->notNull" identifier = (cast_expression "(uint)pCVar22->notNull" ( (type_descriptor "uint" type_identifier) ) (field_expression "pCVar22->notNull" identifier -> field_identifier))) ;) (if_statement "if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)) {\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" if (parenthesized_expression "((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20))" ( (binary_expression "(pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)lVar20)" (parenthesized_expression "(pCVar22->notNull != 0)" ( (binary_expression "pCVar22->notNull != 0" (field_expression "pCVar22->notNull" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "((int)pTab->iPKey != (int)lVar20)" ( (binary_expression "(int)pTab->iPKey != (int)lVar20" (cast_expression "(int)pTab->iPKey" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->iPKey" identifier -> field_identifier)) != (cast_expression "(int)lVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar6 = *(uint *)&pCVar22->colFlags & 0x60;\n          if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" { (expression_statement "uVar6 = *(uint *)&pCVar22->colFlags & 0x60;" (assignment_expression "uVar6 = *(uint *)&pCVar22->colFlags & 0x60" identifier = (binary_expression "*(uint *)&pCVar22->colFlags & 0x60" (pointer_expression "*(uint *)&pCVar22->colFlags" * (cast_expression "(uint *)&pCVar22->colFlags" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pCVar22->colFlags" & (field_expression "pCVar22->colFlags" identifier -> field_identifier)))) & number_literal)) ;) (if_statement "if ((uVar6 == 0) || (bVar4)) {\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }" if (parenthesized_expression "((uVar6 == 0) || (bVar4))" ( (binary_expression "(uVar6 == 0) || (bVar4)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar4)" ( identifier ))) )) (compound_statement "{\n            if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }\n          }" { (if_statement "if (((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)) {\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }" if (parenthesized_expression "(((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0))" ( (binary_expression "((aiChng == (int *)0x0) || (-1 < aiChng[lVar20])) || (uVar6 != 0)" (parenthesized_expression "((aiChng == (int *)0x0) || (-1 < aiChng[lVar20]))" ( (binary_expression "(aiChng == (int *)0x0) || (-1 < aiChng[lVar20])" (parenthesized_expression "(aiChng == (int *)0x0)" ( (binary_expression "aiChng == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(-1 < aiChng[lVar20])" ( (binary_expression "-1 < aiChng[lVar20]" number_literal < (subscript_expression "aiChng[lVar20]" identifier [ identifier ])) ))) )) || (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) ))) )) (compound_statement "{\n              if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }\n              iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);\n              iVar8 = regNewData + 1 + (int)iVar5;\n              if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }\n            }" { (if_statement "if (overrideError == '\v') {\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }" if (parenthesized_expression "(overrideError == '\v')" ( (binary_expression "overrideError == '\v'" identifier == (char_literal "'\v'" ' escape_sequence ')) )) (compound_statement "{\n                if (uVar19 != 0xb) goto LAB_00179e91;\n                uVar19 = 2;\nLAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;\n              }" { (if_statement "if (uVar19 != 0xb) goto LAB_00179e91;" if (parenthesized_expression "(uVar19 != 0xb)" ( (binary_expression "uVar19 != 0xb" identifier != number_literal) )) (goto_statement "goto LAB_00179e91;" goto statement_identifier ;)) (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00179efc:\n                if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;" statement_identifier : (if_statement "if ((bVar4) && (uVar6 == 0)) goto LAB_00179e5a;" if (parenthesized_expression "((bVar4) && (uVar6 == 0))" ( (binary_expression "(bVar4) && (uVar6 == 0)" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;))) }) (else_clause "else {\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }" else (compound_statement "{\n                uVar19 = (uint)overrideError;\nLAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;\n                if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }\n              }" { (expression_statement "uVar19 = (uint)overrideError;" (assignment_expression "uVar19 = (uint)overrideError" identifier = (cast_expression "(uint)overrideError" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00179e91:\n                if (uVar19 != 5) goto LAB_00179efc;" statement_identifier : (if_statement "if (uVar19 != 5) goto LAB_00179efc;" if (parenthesized_expression "(uVar19 != 5)" ( (binary_expression "uVar19 != 5" identifier != number_literal) )) (goto_statement "goto LAB_00179efc;" goto statement_identifier ;))) (if_statement "if (bVar4) {\n                  uVar19 = 2;\n                }\n                else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n                  uVar19 = 2;\n                }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) }) (else_clause "else if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }" else (if_statement "if (pCVar22->pDflt == (Expr *)0x0) {\n                  uVar19 = 2;\n                }" if (parenthesized_expression "(pCVar22->pDflt == (Expr *)0x0)" ( (binary_expression "pCVar22->pDflt == (Expr *)0x0" (field_expression "pCVar22->pDflt" identifier -> field_identifier) == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar19 = 2;\n                }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) })))) }))) (expression_statement "iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20);" (assignment_expression "iVar5 = sqlite3TableColumnToStorage(pTab,(i16)lVar20)" identifier = (call_expression "sqlite3TableColumnToStorage(pTab,(i16)lVar20)" identifier (argument_list "(pTab,(i16)lVar20)" ( identifier , (cast_expression "(i16)lVar20" ( (type_descriptor "i16" type_identifier) ) identifier) )))) ;) (expression_statement "iVar8 = regNewData + 1 + (int)iVar5;" (assignment_expression "iVar8 = regNewData + 1 + (int)iVar5" identifier = (binary_expression "regNewData + 1 + (int)iVar5" (binary_expression "regNewData + 1" identifier + number_literal) + (cast_expression "(int)iVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar19 == 2) {\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }\n              else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }" if (parenthesized_expression "(uVar19 == 2)" ( (binary_expression "uVar19 == 2" identifier == number_literal) )) (compound_statement "{\n                sqlite3MayAbort(pParse);\nLAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);\n                sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);\n                sqlite3VdbeAppendP4(p,pcVar12,-7);\n                sqlite3VdbeChangeP5(p,1);\n              }" { (expression_statement "sqlite3MayAbort(pParse);" (call_expression "sqlite3MayAbort(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) (labeled_statement "LAB_00179f5d:\n                pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);" statement_identifier : (expression_statement "pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName);" (assignment_expression "pcVar12 = sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName)" identifier = (call_expression "sqlite3MPrintf(db,"%s.%s",pTab->zName,pCVar22->zName)" identifier (argument_list "(db,"%s.%s",pTab->zName,pCVar22->zName)" ( identifier , (string_literal ""%s.%s"" " string_content ") , (field_expression "pTab->zName" identifier -> field_identifier) , (field_expression "pCVar22->zName" identifier -> field_identifier) )))) ;)) (expression_statement "sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8);" (call_expression "sqlite3VdbeAddOp3(p,0x43,0x513,uVar19,iVar8)" identifier (argument_list "(p,0x43,0x513,uVar19,iVar8)" ( identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeAppendP4(p,pcVar12,-7);" (call_expression "sqlite3VdbeAppendP4(p,pcVar12,-7)" identifier (argument_list "(p,pcVar12,-7)" ( identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeChangeP5(p,1);" (call_expression "sqlite3VdbeChangeP5(p,1)" identifier (argument_list "(p,1)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }" else (compound_statement "{\n                if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }\n                sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);\n              }" { (if_statement "if (uVar19 < 3) {\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }" if (parenthesized_expression "(uVar19 < 3)" ( (binary_expression "uVar19 < 3" identifier < number_literal) )) (compound_statement "{\n                  if (uVar19 == 1) goto LAB_00179f5d;\n                }" { (if_statement "if (uVar19 == 1) goto LAB_00179f5d;" if (parenthesized_expression "(uVar19 == 1)" ( (binary_expression "uVar19 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }" else (compound_statement "{\n                  if (uVar19 == 3) goto LAB_00179f5d;\n                  if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }\n                }" { (if_statement "if (uVar19 == 3) goto LAB_00179f5d;" if (parenthesized_expression "(uVar19 == 3)" ( (binary_expression "uVar19 == 3" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) (if_statement "if (uVar19 == 5) {\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }" if (parenthesized_expression "(uVar19 == 5)" ( (binary_expression "uVar19 == 5" identifier == number_literal) )) (compound_statement "{\n                    iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);\n                    sqlite3VdbeJumpHere(p,iVar7);\n                    goto LAB_00179e5a;\n                  }" { (expression_statement "iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8);" (assignment_expression "iVar7 = sqlite3VdbeAddOp1(p,0x33,iVar8)" identifier = (call_expression "sqlite3VdbeAddOp1(p,0x33,iVar8)" identifier (argument_list "(p,0x33,iVar8)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_fc = local_fc + 1;" (assignment_expression "local_fc = local_fc + 1" identifier = (binary_expression "local_fc + 1" identifier + number_literal)) ;) (expression_statement "sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8);" (call_expression "sqlite3ExprCodeCopy(pParse,pCVar22->pDflt,iVar8)" identifier (argument_list "(pParse,pCVar22->pDflt,iVar8)" ( identifier , (field_expression "pCVar22->pDflt" identifier -> field_identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeJumpHere(p,iVar7);" (call_expression "sqlite3VdbeJumpHere(p,iVar7)" identifier (argument_list "(p,iVar7)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;) })) }))) (expression_statement "sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest);" (call_expression "sqlite3VdbeAddOp2(p,0x32,iVar8,ignoreDest)" identifier (argument_list "(p,0x32,iVar8,ignoreDest)" ( identifier , number_literal , identifier , identifier ))) ;) }))) })) }) (else_clause "else {\n            local_e4 = local_e4 + 1;\n          }" else (compound_statement "{\n            local_e4 = local_e4 + 1;\n          }" { (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" identifier = (binary_expression "local_e4 + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_00179e5a:" statement_identifier : (expression_statement "" ;)) })) (if_statement "if ((local_fc == 0 && local_e4 == 0) || (bVar4)) break;" if (parenthesized_expression "((local_fc == 0 && local_e4 == 0) || (bVar4))" ( (binary_expression "(local_fc == 0 && local_e4 == 0) || (bVar4)" (parenthesized_expression "(local_fc == 0 && local_e4 == 0)" ( (binary_expression "local_fc == 0 && local_e4 == 0" (binary_expression "local_fc == 0" identifier == number_literal) && (binary_expression "local_e4 == 0" identifier == number_literal)) )) || (parenthesized_expression "(bVar4)" ( identifier ))) )) (break_statement "break;" break ;)) (if_statement "if ((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)) {\n        sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);\n      }" if (parenthesized_expression "((0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0))" ( (binary_expression "(0 < (int)local_fc) && ((pTab->tabFlags & 0x60) != 0)" (parenthesized_expression "(0 < (int)local_fc)" ( (binary_expression "0 < (int)local_fc" number_literal < (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (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,regNewData + 1,pTab);\n      }" { (expression_statement "sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab);" (call_expression "sqlite3ComputeGeneratedColumns(pParse,regNewData + 1,pTab)" identifier (argument_list "(pParse,regNewData + 1,pTab)" ( identifier , (binary_expression "regNewData + 1" identifier + number_literal) , identifier ))) ;) })) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "pEVar3 = pTab->pCheck;" (assignment_expression "pEVar3 = pTab->pCheck" identifier = (field_expression "pTab->pCheck" identifier -> field_identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (if_statement "if ((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    pParse->iSelfTab = ~regNewData;\n    bVar17 = 2;\n    if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }\n    uVar19 = (uint)bVar17;\n    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }\n    pParse->iSelfTab = 0;\n  }" if (parenthesized_expression "((pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0))" ( (binary_expression "(pEVar3 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)" (parenthesized_expression "(pEVar3 != (ExprList *)0x0)" ( (binary_expression "pEVar3 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((db->flags & 0x200) == 0)" ( (binary_expression "(db->flags & 0x200) == 0" (parenthesized_expression "(db->flags & 0x200)" ( (binary_expression "db->flags & 0x200" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    pParse->iSelfTab = ~regNewData;\n    bVar17 = 2;\n    if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }\n    uVar19 = (uint)bVar17;\n    for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }\n    pParse->iSelfTab = 0;\n  }" { (expression_statement "pParse->iSelfTab = ~regNewData;" (assignment_expression "pParse->iSelfTab = ~regNewData" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = (unary_expression "~regNewData" ~ identifier)) ;) (expression_statement "bVar17 = 2;" (assignment_expression "bVar17 = 2" identifier = number_literal) ;) (if_statement "if (overrideError != '\v') {\n      bVar17 = overrideError;\n    }" if (parenthesized_expression "(overrideError != '\v')" ( (binary_expression "overrideError != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (compound_statement "{\n      bVar17 = overrideError;\n    }" { (expression_statement "bVar17 = overrideError;" (assignment_expression "bVar17 = overrideError" identifier = identifier) ;) })) (expression_statement "uVar19 = (uint)bVar17;" (assignment_expression "uVar19 = (uint)bVar17" identifier = (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (for_statement "for (local_100 = 0; local_100 < pEVar3->nExpr; local_100 = local_100 + 1) {\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }" for ( (assignment_expression "local_100 = 0" identifier = number_literal) ; (binary_expression "local_100 < pEVar3->nExpr" identifier < (field_expression "pEVar3->nExpr" identifier -> field_identifier)) ; (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ) (compound_statement "{\n      pEVar13 = pEVar3->a[local_100].pExpr;\n      if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }\n    }" { (expression_statement "pEVar13 = pEVar3->a[local_100].pExpr;" (assignment_expression "pEVar13 = pEVar3->a[local_100].pExpr" identifier = (field_expression "pEVar3->a[local_100].pExpr" (subscript_expression "pEVar3->a[local_100]" (field_expression "pEVar3->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if ((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)) {\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }" if (parenthesized_expression "((aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0))" ( (binary_expression "(aiChng == (int *)0x0) ||\n         (iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)" (parenthesized_expression "(aiChng == (int *)0x0)" ( (binary_expression "aiChng == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0)" ( (comma_expression "iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng), iVar8 != 0" (assignment_expression "iVar8 = sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng)" identifier = (call_expression "sqlite3ExprReferencesUpdatedColumn(pEVar13,aiChng,(uint)pkChng)" identifier (argument_list "(pEVar13,aiChng,(uint)pkChng)" ( identifier , identifier , (cast_expression "(uint)pkChng" ( (type_descriptor "uint" type_identifier) ) identifier) )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        pEVar13 = sqlite3ExprDup(db,pEVar13,0);\n        if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }\n        sqlite3ExprDelete(db,pEVar13);\n        if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }\n        sqlite3VdbeResolveLabel(p,iVar8);\n        bVar4 = true;\n      }" { (if_statement "if (!bVar4) {\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n        }" { (expression_statement "sqlite3TableAffinity(p,pTab,regNewData + 1);" (call_expression "sqlite3TableAffinity(p,pTab,regNewData + 1)" identifier (argument_list "(p,pTab,regNewData + 1)" ( identifier , identifier , (binary_expression "regNewData + 1" identifier + number_literal) ))) ;) })) (expression_statement "iVar8 = pParse->nLabel + -1;" (assignment_expression "iVar8 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar8;" (assignment_expression "pParse->nLabel = iVar8" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pEVar13 = sqlite3ExprDup(db,pEVar13,0);" (assignment_expression "pEVar13 = sqlite3ExprDup(db,pEVar13,0)" identifier = (call_expression "sqlite3ExprDup(db,pEVar13,0)" identifier (argument_list "(db,pEVar13,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (db->mallocFailed == '\0') {\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);\n        }" { (expression_statement "sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10);" (call_expression "sqlite3ExprIfTrue(pParse,pEVar13,iVar8,0x10)" identifier (argument_list "(pParse,pEVar13,iVar8,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) })) (expression_statement "sqlite3ExprDelete(db,pEVar13);" (call_expression "sqlite3ExprDelete(db,pEVar13)" identifier (argument_list "(db,pEVar13)" ( identifier , identifier ))) ;) (if_statement "if (uVar19 == 4) {\n          sqlite3VdbeGoto(p,ignoreDest);\n        }\n        else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }" if (parenthesized_expression "(uVar19 == 4)" ( (binary_expression "uVar19 == 4" identifier == number_literal) )) (compound_statement "{\n          sqlite3VdbeGoto(p,ignoreDest);\n        }" { (expression_statement "sqlite3VdbeGoto(p,ignoreDest);" (call_expression "sqlite3VdbeGoto(p,ignoreDest)" identifier (argument_list "(p,ignoreDest)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }" else (compound_statement "{\n          pcVar12 = pEVar3->a[local_100].zEName;\n          if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }\n          if (uVar19 == 5) {\n            uVar19 = 2;\n          }\n          sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');\n        }" { (expression_statement "pcVar12 = pEVar3->a[local_100].zEName;" (assignment_expression "pcVar12 = pEVar3->a[local_100].zEName" identifier = (field_expression "pEVar3->a[local_100].zEName" (subscript_expression "pEVar3->a[local_100]" (field_expression "pEVar3->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (pcVar12 == (char *)0x0) {\n            pcVar12 = pTab->zName;\n          }" if (parenthesized_expression "(pcVar12 == (char *)0x0)" ( (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar12 = pTab->zName;\n          }" { (expression_statement "pcVar12 = pTab->zName;" (assignment_expression "pcVar12 = pTab->zName" identifier = (field_expression "pTab->zName" identifier -> field_identifier)) ;) })) (if_statement "if (uVar19 == 5) {\n            uVar19 = 2;\n          }" if (parenthesized_expression "(uVar19 == 5)" ( (binary_expression "uVar19 == 5" identifier == number_literal) )) (compound_statement "{\n            uVar19 = 2;\n          }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) })) (expression_statement "sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03');" (call_expression "sqlite3HaltConstraint(pParse,0x113,uVar19,pcVar12,'\0','\x03')" identifier (argument_list "(pParse,0x113,uVar19,pcVar12,'\0','\x03')" ( identifier , number_literal , identifier , identifier , (char_literal "'\0'" ' escape_sequence ') , (char_literal "'\x03'" ' escape_sequence ') ))) ;) }))) (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) })) })) (expression_statement "pParse->iSelfTab = 0;" (assignment_expression "pParse->iSelfTab = 0" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = number_literal) ;) })) (if_statement "if (pUpsert == (Upsert *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n  }\n  else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }" if (parenthesized_expression "(pUpsert == (Upsert *)0x0)" ( (binary_expression "pUpsert == (Upsert *)0x0" identifier == (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (Index *)0x0;" (assignment_expression "local_d0 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }" else (if_statement "if (pUpsert->pUpsertTarget == (ExprList *)0x0) {\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }" if (parenthesized_expression "(pUpsert->pUpsertTarget == (ExprList *)0x0)" ( (binary_expression "pUpsert->pUpsertTarget == (ExprList *)0x0" (field_expression "pUpsert->pUpsertTarget" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = (Index *)0x0;\n    pUpsert = (Upsert *)0x0;\n    local_74 = 4;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (Index *)0x0;" (assignment_expression "local_d0 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pUpsert = (Upsert *)0x0;" (assignment_expression "pUpsert = (Upsert *)0x0" identifier = (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 4;" (assignment_expression "local_74 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }" else (compound_statement "{\n    local_d0 = pUpsert->pUpsertIdx;\n    local_b4 = 0;\n    if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }\n  }" { (expression_statement "local_d0 = pUpsert->pUpsertIdx;" (assignment_expression "local_d0 = pUpsert->pUpsertIdx" identifier = (field_expression "pUpsert->pUpsertIdx" identifier -> field_identifier)) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (local_d0 != (Index *)0x0) {\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }" if (parenthesized_expression "(local_d0 != (Index *)0x0)" ( (binary_expression "local_d0 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_b4 = sqlite3VdbeAddOp0(p,0xb);\n    }" { (expression_statement "local_b4 = sqlite3VdbeAddOp0(p,0xb);" (assignment_expression "local_b4 = sqlite3VdbeAddOp0(p,0xb)" identifier = (call_expression "sqlite3VdbeAddOp0(p,0xb)" identifier (argument_list "(p,0xb)" ( identifier , number_literal )))) ;) })) }))))) (if_statement "if ((db->flags & 0x6000) == 0) {\n    local_c0 = (Trigger *)0x0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }" if (parenthesized_expression "((db->flags & 0x6000) == 0)" ( (binary_expression "(db->flags & 0x6000) == 0" (parenthesized_expression "(db->flags & 0x6000)" ( (binary_expression "db->flags & 0x6000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_c0 = (Trigger *)0x0;\n    local_c8 = 0;\n    local_fc = 0;\n  }" { (expression_statement "local_c0 = (Trigger *)0x0;" (assignment_expression "local_c0 = (Trigger *)0x0" identifier = (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }" else (compound_statement "{\n    if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = pParse->nMem + 1;\n    pParse->nMem = local_fc;\n    sqlite3VdbeAddOp2(p,0x45,0,local_fc);\n    local_c8 = pParse->nLabel - 1;\n    pParse->nLabel = local_c8;\n  }" { (if_statement "if (((uint)db->flags >> 0xd & 1) == 0) {\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" if (parenthesized_expression "(((uint)db->flags >> 0xd & 1) == 0)" ( (binary_expression "((uint)db->flags >> 0xd & 1) == 0" (parenthesized_expression "((uint)db->flags >> 0xd & 1)" ( (binary_expression "(uint)db->flags >> 0xd & 1" (binary_expression "(uint)db->flags >> 0xd" (cast_expression "(uint)db->flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "db->flags" identifier -> field_identifier)) >> number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = (Trigger *)0x0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }" { (expression_statement "local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);" (assignment_expression "local_fc = sqlite3FkRequired(pParse,pTab,(int *)0x0,0)" identifier = (call_expression "sqlite3FkRequired(pParse,pTab,(int *)0x0,0)" identifier (argument_list "(pParse,pTab,(int *)0x0,0)" ( identifier , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (labeled_statement "LAB_0017a0bd:\n      local_c8 = local_fc;" statement_identifier : (expression_statement "local_c8 = local_fc;" (assignment_expression "local_c8 = local_fc" identifier = identifier) ;)) (expression_statement "local_c0 = (Trigger *)0x0;" (assignment_expression "local_c0 = (Trigger *)0x0" identifier = (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_fc == 0) goto LAB_0017a102;" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017a102;" goto statement_identifier ;)) }) (else_clause "else {\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" else (compound_statement "{\n      local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);\n      if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" { (expression_statement "local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0);" (assignment_expression "local_c0 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" identifier = (call_expression "sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" identifier (argument_list "(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" ( identifier , identifier , number_literal , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (local_c0 == (Trigger *)0x0) {\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" if (parenthesized_expression "(local_c0 == (Trigger *)0x0)" ( (binary_expression "local_c0 == (Trigger *)0x0" identifier == (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" { (expression_statement "iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0);" (assignment_expression "iVar8 = sqlite3FkRequired(pParse,pTab,(int *)0x0,0)" identifier = (call_expression "sqlite3FkRequired(pParse,pTab,(int *)0x0,0)" identifier (argument_list "(pParse,pTab,(int *)0x0,0)" ( identifier , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (expression_statement "local_fc = (uint)(iVar8 != 0);" (assignment_expression "local_fc = (uint)(iVar8 != 0)" identifier = (call_expression "(uint)(iVar8 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_0017a0bd;" goto statement_identifier ;) })) }))) (expression_statement "local_fc = pParse->nMem + 1;" (assignment_expression "local_fc = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = local_fc;" (assignment_expression "pParse->nMem = local_fc" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp2(p,0x45,0,local_fc);" (call_expression "sqlite3VdbeAddOp2(p,0x45,0,local_fc)" identifier (argument_list "(p,0x45,0,local_fc)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "local_c8 = pParse->nLabel - 1;" (assignment_expression "local_c8 = pParse->nLabel - 1" identifier = (binary_expression "pParse->nLabel - 1" (field_expression "pParse->nLabel" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse->nLabel = local_c8;" (assignment_expression "pParse->nLabel = local_c8" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) }))) (labeled_statement "LAB_0017a102:\n  if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" statement_identifier : (if_statement "if ((pkChng == '\0') || (local_b0 != (Index *)0x0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" if (parenthesized_expression "((pkChng == '\0') || (local_b0 != (Index *)0x0))" ( (binary_expression "(pkChng == '\0') || (local_b0 != (Index *)0x0)" (parenthesized_expression "(pkChng == '\0')" ( (binary_expression "pkChng == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_b0 != (Index *)0x0)" ( (binary_expression "local_b0 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" { (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a4e9;" goto statement_identifier ;) }))) (expression_statement "iVar8 = pParse->nLabel + -1;" (assignment_expression "iVar8 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar8;" (assignment_expression "pParse->nLabel = iVar8" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "bVar17 = local_74;" (assignment_expression "bVar17 = local_74" identifier = identifier) ;) (if_statement "if ((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)) {\n    uVar19 = 2;\n    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;\n    if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    uVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" if (parenthesized_expression "((local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb))" ( (binary_expression "(local_74 == 0xb) && (bVar17 = pTab->keyConf, pTab->keyConf == 0xb)" (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar17 = pTab->keyConf, pTab->keyConf == 0xb)" ( (comma_expression "bVar17 = pTab->keyConf, pTab->keyConf == 0xb" (assignment_expression "bVar17 = pTab->keyConf" identifier = (field_expression "pTab->keyConf" identifier -> field_identifier)) , (binary_expression "pTab->keyConf == 0xb" (field_expression "pTab->keyConf" identifier -> field_identifier) == number_literal)) ))) )) (compound_statement "{\n    uVar19 = 2;\n    if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;\n    if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    uVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) (if_statement "if (pUpsert != (Upsert *)0x0) goto LAB_0017a14e;" if (parenthesized_expression "(pUpsert != (Upsert *)0x0)" ( (binary_expression "pUpsert != (Upsert *)0x0" identifier != (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017a14e;" goto statement_identifier ;)) (if_statement "if (regOldData != 0) {\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n      uVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,iVar8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = regOldData;" (assignment_expression "local_100 = regOldData" identifier = identifier) ;) (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) (goto_statement "goto switchD_0017a48f_caseD_1;" goto statement_identifier ;) })) (expression_statement "uVar19 = (uint)bVar17;" (assignment_expression "uVar19 = (uint)bVar17" identifier = (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pUpsert != (Upsert *)0x0) {\nLAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;\n    if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    goto switchD_0017a48f_caseD_4;\n  }" if (parenthesized_expression "(pUpsert != (Upsert *)0x0)" ( (binary_expression "pUpsert != (Upsert *)0x0" identifier != (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;\n    if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    local_100 = regOldData;\n    goto switchD_0017a48f_caseD_4;\n  }" { (labeled_statement "LAB_0017a14e:\n    if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;" statement_identifier : (if_statement "if (pUpsert->pUpsertIdx != (Index *)0x0) goto LAB_0017a353;" if (parenthesized_expression "(pUpsert->pUpsertIdx != (Index *)0x0)" ( (binary_expression "pUpsert->pUpsertIdx != (Index *)0x0" (field_expression "pUpsert->pUpsertIdx" identifier -> field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017a353;" goto statement_identifier ;))) (if_statement "if (pUpsert->pUpsertSet != (ExprList *)0x0) {\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }" if (parenthesized_expression "(pUpsert->pUpsertSet != (ExprList *)0x0)" ( (binary_expression "pUpsert->pUpsertSet != (ExprList *)0x0" (field_expression "pUpsert->pUpsertSet" identifier -> field_identifier) != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n      local_100 = regOldData;\n      goto switchD_0017a48f_caseD_6;\n    }" { (if_statement "if (regOldData != 0) {\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n        uVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" { (expression_statement "uVar19 = 6;" (assignment_expression "uVar19 = 6" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,iVar8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = regOldData;" (assignment_expression "local_100 = regOldData" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_6;" goto statement_identifier ;) })) (if_statement "if (regOldData != 0) {\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n      uVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "uVar19 = 4;" (assignment_expression "uVar19 = 4" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,iVar8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = regOldData;" (assignment_expression "local_100 = regOldData" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_4;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a353:\n  if (uVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" statement_identifier : (if_statement "if (uVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" if (parenthesized_expression "(uVar19 == 5)" ( (binary_expression "uVar19 == 5" identifier == number_literal) )) (compound_statement "{\n    local_100 = 0;\n    if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if ((local_74 != 5) && (pTab->pIndex != (Index *)0x0)) {\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }" if (parenthesized_expression "((local_74 != 5) && (pTab->pIndex != (Index *)0x0))" ( (binary_expression "(local_74 != 5) && (pTab->pIndex != (Index *)0x0)" (parenthesized_expression "(local_74 != 5)" ( (binary_expression "local_74 != 5" identifier != number_literal) )) && (parenthesized_expression "(pTab->pIndex != (Index *)0x0)" ( (binary_expression "pTab->pIndex != (Index *)0x0" (field_expression "pTab->pIndex" identifier -> field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      local_100 = sqlite3VdbeAddOp0(p,0xb);\n      local_100 = local_100 + 1;\n    }" { (expression_statement "local_100 = sqlite3VdbeAddOp0(p,0xb);" (assignment_expression "local_100 = sqlite3VdbeAddOp0(p,0xb)" identifier = (call_expression "sqlite3VdbeAddOp0(p,0xb)" identifier (argument_list "(p,0xb)" ( identifier , number_literal )))) ;) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) })) (if_statement "if (regOldData != 0) {\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);\n      sqlite3VdbeChangeP5(p,0x90);\n      goto LAB_0017a45f;\n    }" { (labeled_statement "LAB_0017a437:\n      sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData);" (call_expression "sqlite3VdbeAddOp3(p,0x35,regNewData,iVar8,regOldData)" identifier (argument_list "(p,0x35,regNewData,iVar8,regOldData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (expression_statement "sqlite3VdbeChangeP5(p,0x90);" (call_expression "sqlite3VdbeChangeP5(p,0x90)" identifier (argument_list "(p,0x90)" ( identifier , number_literal ))) ;) (goto_statement "goto LAB_0017a45f;" goto statement_identifier ;) })) (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,iVar8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (labeled_statement "switchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" statement_identifier : (if_statement "if (local_fc == 0) {\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (compound_statement "{\n      if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }" { (if_statement "if (pTab->pIndex == (Index *)0x0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" if (parenthesized_expression "(pTab->pIndex == (Index *)0x0)" ( (binary_expression "pTab->pIndex == (Index *)0x0" (field_expression "pTab->pIndex" identifier -> field_identifier) == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" else (compound_statement "{\n        sqlite3MultiWrite(pParse);\n        sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "sqlite3MultiWrite(pParse);" (call_expression "sqlite3MultiWrite(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) (expression_statement "sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1);" (call_expression "sqlite3GenerateRowIndexDelete(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1)" identifier (argument_list "(pParse,pTab,iDataCur,iIdxCur,(int *)0x0,-1)" ( identifier , identifier , identifier , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" else (compound_statement "{\n      sqlite3MultiWrite(pParse);\n      sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);\n      sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" { (expression_statement "sqlite3MultiWrite(pParse);" (call_expression "sqlite3MultiWrite(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) (expression_statement "sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1);" (call_expression "sqlite3GenerateRowDelete\n                (pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1)" identifier (argument_list "(pParse,pTab,local_c0,iDataCur,iIdxCur,regNewData,1,'\0','\x05','\x01',-1)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , (char_literal "'\0'" ' escape_sequence ') , (char_literal "'\x05'" ' escape_sequence ') , (char_literal "'\x01'" ' escape_sequence ') , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp2(p,0x52,local_fc,1);" (call_expression "sqlite3VdbeAddOp2(p,0x52,local_fc,1)" identifier (argument_list "(p,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "local_b8 = 1;" (assignment_expression "local_b8 = 1" identifier = number_literal) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })))) }) (else_clause "else {\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" else (compound_statement "{\n    local_100 = regOldData;\n    if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);\n    switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" { (expression_statement "local_100 = regOldData;" (assignment_expression "local_100 = regOldData" identifier = identifier) ;) (if_statement "if (regOldData != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a45f:\n    sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,iVar8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,iVar8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (switch_statement "switch(uVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" switch (parenthesized_expression "(uVar19)" ( identifier )) (compound_statement "{\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      uVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" { (case_statement "case 5:\n      goto switchD_0017a48f_caseD_5;" case number_literal : (goto_statement "goto switchD_0017a48f_caseD_5;" goto statement_identifier ;)) (case_statement "case 6:\nswitchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);" case number_literal : (labeled_statement "switchD_0017a48f_caseD_6:\n      sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);" statement_identifier : (expression_statement "sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur);" (call_expression "sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,(Index *)0x0,iDataCur)" identifier (argument_list "(pParse,pUpsert,pTab,(Index *)0x0,iDataCur)" ( identifier , identifier , identifier , (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier ))) ;))) (case_statement "case 4:\nswitchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_4:\n      sqlite3VdbeGoto(p,ignoreDest);" statement_identifier : (expression_statement "sqlite3VdbeGoto(p,ignoreDest);" (call_expression "sqlite3VdbeGoto(p,ignoreDest)" identifier (argument_list "(p,ignoreDest)" ( identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n      uVar19 = 2;" default : (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:\nswitchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);\n      local_b8 = 0;\n      local_e4 = 0;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_1:\n      sqlite3RowidConstraint(pParse,uVar19,pTab);" statement_identifier : (expression_statement "sqlite3RowidConstraint(pParse,uVar19,pTab);" (call_expression "sqlite3RowidConstraint(pParse,uVar19,pTab)" identifier (argument_list "(pParse,uVar19,pTab)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;)) })) })))) (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) (expression_statement "local_90 = local_100;" (assignment_expression "local_90 = local_100" identifier = identifier) ;) (if_statement "if (local_100 != 0) {\n    local_90 = sqlite3VdbeAddOp0(p,0xb);\n    sqlite3VdbeJumpHere(p,local_100 + -1);\n  }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n    local_90 = sqlite3VdbeAddOp0(p,0xb);\n    sqlite3VdbeJumpHere(p,local_100 + -1);\n  }" { (expression_statement "local_90 = sqlite3VdbeAddOp0(p,0xb);" (assignment_expression "local_90 = sqlite3VdbeAddOp0(p,0xb)" identifier = (call_expression "sqlite3VdbeAddOp0(p,0xb)" identifier (argument_list "(p,0xb)" ( identifier , number_literal )))) ;) (expression_statement "sqlite3VdbeJumpHere(p,local_100 + -1);" (call_expression "sqlite3VdbeJumpHere(p,local_100 + -1)" identifier (argument_list "(p,local_100 + -1)" ( identifier , (binary_expression "local_100 + -1" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_0017a4e9:\n  pIdx = pTab->pIndex;" statement_identifier : (expression_statement "pIdx = pTab->pIndex;" (assignment_expression "pIdx = pTab->pIndex" identifier = (field_expression "pTab->pIndex" identifier -> field_identifier)) ;)) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }\n    piVar1 = aRegIdx + local_a8;\n    if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }\n    pIdx = pIdx->pNext;\n    local_a8 = local_a8 + 1;\n  } while( true );" do (compound_statement "{\n    if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }\n    piVar1 = aRegIdx + local_a8;\n    if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }\n    pIdx = pIdx->pNext;\n    local_a8 = local_a8 + 1;\n  }" { (if_statement "if (pIdx == (Index *)0x0) {\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }" if (parenthesized_expression "(pIdx == (Index *)0x0)" ( (binary_expression "pIdx == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }\n      if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }\n      if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }\n      *pbMayReplace = local_e4;\n      return;\n    }" { (if_statement "if (local_100 != 0) {\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n        sqlite3VdbeGoto(p,local_100);\n        sqlite3VdbeJumpHere(p,local_90);\n      }" { (expression_statement "sqlite3VdbeGoto(p,local_100);" (call_expression "sqlite3VdbeGoto(p,local_100)" identifier (argument_list "(p,local_100)" ( identifier , identifier ))) ;) (expression_statement "sqlite3VdbeJumpHere(p,local_90);" (call_expression "sqlite3VdbeJumpHere(p,local_90)" identifier (argument_list "(p,local_90)" ( identifier , identifier ))) ;) })) (if_statement "if (local_b8 != 0) {\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\n        sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);\n        if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }\n        sqlite3VdbeResolveLabel(p,local_c4);\n      }" { (expression_statement "sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4);" (call_expression "sqlite3VdbeAddOp2(p,0x14,local_fc,local_c4)" identifier (argument_list "(p,0x14,local_fc,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (local_b0 == (Index *)0x0) {\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }\n        else {\n          sqlite3VdbeGoto(p,local_c8);\n        }" if (parenthesized_expression "(local_b0 == (Index *)0x0)" ( (binary_expression "local_b0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }\n          sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);\n          sqlite3RowidConstraint(pParse,2,pTab);\n        }" { (if_statement "if (regOldData != 0) {\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);\n            sqlite3VdbeChangeP5(p,0x90);\n          }" { (expression_statement "sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData);" (call_expression "sqlite3VdbeAddOp3(p,0x35,regNewData,local_c8,regOldData)" identifier (argument_list "(p,0x35,regNewData,local_c8,regOldData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeChangeP5(p,0x90);" (call_expression "sqlite3VdbeChangeP5(p,0x90)" identifier (argument_list "(p,0x90)" ( identifier , number_literal ))) ;) })) (expression_statement "sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData);" (call_expression "sqlite3VdbeAddOp3(p,0x20,iDataCur,local_c8,regNewData)" identifier (argument_list "(p,0x20,iDataCur,local_c8,regNewData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "sqlite3RowidConstraint(pParse,2,pTab);" (call_expression "sqlite3RowidConstraint(pParse,2,pTab)" identifier (argument_list "(pParse,2,pTab)" ( identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n          sqlite3VdbeGoto(p,local_c8);\n        }" else (compound_statement "{\n          sqlite3VdbeGoto(p,local_c8);\n        }" { (expression_statement "sqlite3VdbeGoto(p,local_c8);" (call_expression "sqlite3VdbeGoto(p,local_c8)" identifier (argument_list "(p,local_c8)" ( identifier , identifier ))) ;) }))) (expression_statement "sqlite3VdbeResolveLabel(p,local_c4);" (call_expression "sqlite3VdbeResolveLabel(p,local_c4)" identifier (argument_list "(p,local_c4)" ( identifier , identifier ))) ;) })) (if_statement "if (((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)) {\n        sqlite3TableAffinity(p,pTab,0);\n      }" if (parenthesized_expression "(((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4))" ( (binary_expression "((pTab->tabFlags & 0x80) == 0) &&\n         (sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)" (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) )) && (parenthesized_expression "(sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4)" ( (comma_expression "sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8]), !bVar4" (call_expression "sqlite3VdbeAddOp3(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8])" identifier (argument_list "(p,0x5b,regNewData + 1,(int)pTab->nNVCol,aRegIdx[local_a8])" ( identifier , number_literal , (binary_expression "regNewData + 1" identifier + number_literal) , (cast_expression "(int)pTab->nNVCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nNVCol" identifier -> field_identifier)) , (subscript_expression "aRegIdx[local_a8]" identifier [ identifier ]) ))) , (unary_expression "!bVar4" ! identifier)) ))) )) (compound_statement "{\n        sqlite3TableAffinity(p,pTab,0);\n      }" { (expression_statement "sqlite3TableAffinity(p,pTab,0);" (call_expression "sqlite3TableAffinity(p,pTab,0)" identifier (argument_list "(p,pTab,0)" ( identifier , identifier , number_literal ))) ;) })) (expression_statement "*pbMayReplace = local_e4;" (assignment_expression "*pbMayReplace = local_e4" (pointer_expression "*pbMayReplace" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar1 = aRegIdx + local_a8;" (assignment_expression "piVar1 = aRegIdx + local_a8" identifier = (binary_expression "aRegIdx + local_a8" identifier + identifier)) ;) (if_statement "if (*piVar1 != 0) {\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*piVar1 != 0)" ( (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n      if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }\n      iVar7 = *piVar1;\n      p1 = iVar7 + 1;\n      iVar9 = iVar7 + 1;\n      for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }\n      sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);\n      eMode = pIdx == local_b0;\n      if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (pIdx == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }\n      else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }" if (parenthesized_expression "(pIdx == local_d0)" ( (binary_expression "pIdx == local_d0" identifier == identifier) )) (compound_statement "{\n        iVar8 = local_b4 + 1;\n        local_84 = sqlite3VdbeGoto(p,0);\n        sqlite3VdbeJumpHere(p,local_b4);\n        if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }\n      }" { (expression_statement "iVar8 = local_b4 + 1;" (assignment_expression "iVar8 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "local_84 = sqlite3VdbeGoto(p,0);" (assignment_expression "local_84 = sqlite3VdbeGoto(p,0)" identifier = (call_expression "sqlite3VdbeGoto(p,0)" identifier (argument_list "(p,0)" ( identifier , number_literal )))) ;) (expression_statement "sqlite3VdbeJumpHere(p,local_b4);" (call_expression "sqlite3VdbeJumpHere(p,local_b4)" identifier (argument_list "(p,local_b4)" ( identifier , identifier ))) ;) (if_statement "if (!bVar4) {\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\nLAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);\n          bVar4 = true;\n        }" { (labeled_statement "LAB_0017a81c:\n          sqlite3TableAffinity(p,pTab,regNewData + 1);" statement_identifier : (expression_statement "sqlite3TableAffinity(p,pTab,regNewData + 1);" (call_expression "sqlite3TableAffinity(p,pTab,regNewData + 1)" identifier (argument_list "(p,pTab,regNewData + 1)" ( identifier , identifier , (binary_expression "regNewData + 1" identifier + number_literal) ))) ;)) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) })) }) (else_clause "else {\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }" else (compound_statement "{\n        iVar8 = pParse->nLabel + -1;\n        pParse->nLabel = iVar8;\n        if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;\n      }" { (expression_statement "iVar8 = pParse->nLabel + -1;" (assignment_expression "iVar8 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar8;" (assignment_expression "pParse->nLabel = iVar8" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (if_statement "if ((!bVar4) && (local_d0 == (Index *)0x0)) goto LAB_0017a81c;" if (parenthesized_expression "((!bVar4) && (local_d0 == (Index *)0x0))" ( (binary_expression "(!bVar4) && (local_d0 == (Index *)0x0)" (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) && (parenthesized_expression "(local_d0 == (Index *)0x0)" ( (binary_expression "local_d0 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_0017a81c;" goto statement_identifier ;)) }))) (if_statement "if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }" if (parenthesized_expression "(pIdx->pPartIdxWhere != (Expr *)0x0)" ( (binary_expression "pIdx->pPartIdxWhere != (Expr *)0x0" (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sqlite3VdbeAddOp2(p,0x48,0,*piVar1);\n        pParse->iSelfTab = ~regNewData;\n        sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);\n        pParse->iSelfTab = 0;\n      }" { (expression_statement "sqlite3VdbeAddOp2(p,0x48,0,*piVar1);" (call_expression "sqlite3VdbeAddOp2(p,0x48,0,*piVar1)" identifier (argument_list "(p,0x48,0,*piVar1)" ( identifier , number_literal , number_literal , (pointer_expression "*piVar1" * identifier) ))) ;) (expression_statement "pParse->iSelfTab = ~regNewData;" (assignment_expression "pParse->iSelfTab = ~regNewData" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = (unary_expression "~regNewData" ~ identifier)) ;) (expression_statement "sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10);" (call_expression "sqlite3ExprIfFalseDup(pParse,pIdx->pPartIdxWhere,iVar8,0x10)" identifier (argument_list "(pParse,pIdx->pPartIdxWhere,iVar8,0x10)" ( identifier , (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) , identifier , number_literal ))) ;) (expression_statement "pParse->iSelfTab = 0;" (assignment_expression "pParse->iSelfTab = 0" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "iVar7 = *piVar1;" (assignment_expression "iVar7 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "p1 = iVar7 + 1;" (assignment_expression "p1 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar7 + 1;" (assignment_expression "iVar9 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (for_statement "for (iVar10 = 0; iVar10 < (int)(uint)pIdx->nColumn; iVar10 = iVar10 + 1) {\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }" for ( (assignment_expression "iVar10 = 0" identifier = number_literal) ; (binary_expression "iVar10 < (int)(uint)pIdx->nColumn" identifier < (cast_expression "(int)(uint)pIdx->nColumn" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pIdx->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nColumn" identifier -> field_identifier)))) ; (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ) (compound_statement "{\n        sVar2 = pIdx->aiColumn[iVar10];\n        if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }\n      }" { (expression_statement "sVar2 = pIdx->aiColumn[iVar10];" (assignment_expression "sVar2 = pIdx->aiColumn[iVar10]" identifier = (subscript_expression "pIdx->aiColumn[iVar10]" (field_expression "pIdx->aiColumn" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (sVar2 == -2) {\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }\n        else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }" if (parenthesized_expression "(sVar2 == -2)" ( (binary_expression "sVar2 == -2" identifier == number_literal) )) (compound_statement "{\n          pParse->iSelfTab = ~regNewData;\n          sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);\n          pParse->iSelfTab = 0;\n        }" { (expression_statement "pParse->iSelfTab = ~regNewData;" (assignment_expression "pParse->iSelfTab = ~regNewData" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = (unary_expression "~regNewData" ~ identifier)) ;) (expression_statement "sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10);" (call_expression "sqlite3ExprCodeCopy(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10)" identifier (argument_list "(pParse,pIdx->aColExpr->a[iVar10].pExpr,iVar9 + iVar10)" ( identifier , (field_expression "pIdx->aColExpr->a[iVar10].pExpr" (subscript_expression "pIdx->aColExpr->a[iVar10]" (field_expression "pIdx->aColExpr->a" (field_expression "pIdx->aColExpr" identifier -> field_identifier) -> field_identifier) [ identifier ]) . field_identifier) , (binary_expression "iVar9 + iVar10" identifier + identifier) ))) ;) (expression_statement "pParse->iSelfTab = 0;" (assignment_expression "pParse->iSelfTab = 0" (field_expression "pParse->iSelfTab" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }" else (if_statement "if ((sVar2 == -1) || (sVar2 == pTab->iPKey)) {\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }\n        else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }" if (parenthesized_expression "((sVar2 == -1) || (sVar2 == pTab->iPKey))" ( (binary_expression "(sVar2 == -1) || (sVar2 == pTab->iPKey)" (parenthesized_expression "(sVar2 == -1)" ( (binary_expression "sVar2 == -1" identifier == number_literal) )) || (parenthesized_expression "(sVar2 == pTab->iPKey)" ( (binary_expression "sVar2 == pTab->iPKey" identifier == (field_expression "pTab->iPKey" identifier -> field_identifier)) ))) )) (compound_statement "{\n          sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);\n        }" { (expression_statement "sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10);" (call_expression "sqlite3VdbeAddOp2(p,0x4f,regNewData,iVar9 + iVar10)" identifier (argument_list "(p,0x4f,regNewData,iVar9 + iVar10)" ( identifier , number_literal , identifier , (binary_expression "iVar9 + iVar10" identifier + identifier) ))) ;) }) (else_clause "else {\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }" else (compound_statement "{\n          iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);\n          sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);\n        }" { (expression_statement "iVar5 = sqlite3TableColumnToStorage(pTab,sVar2);" (assignment_expression "iVar5 = sqlite3TableColumnToStorage(pTab,sVar2)" identifier = (call_expression "sqlite3TableColumnToStorage(pTab,sVar2)" identifier (argument_list "(pTab,sVar2)" ( identifier , identifier )))) ;) (expression_statement "sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10);" (call_expression "sqlite3VdbeAddOp2(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10)" identifier (argument_list "(p,0x4e,regNewData + 1 + (int)iVar5,iVar9 + iVar10)" ( identifier , number_literal , (binary_expression "regNewData + 1 + (int)iVar5" (binary_expression "regNewData + 1" identifier + number_literal) + (cast_expression "(int)iVar5" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "iVar9 + iVar10" identifier + identifier) ))) ;) }))))) })) (expression_statement "sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1);" (call_expression "sqlite3VdbeAddOp3(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1)" identifier (argument_list "(p,0x5b,p1,(uint)pIdx->nColumn,*piVar1)" ( identifier , number_literal , identifier , (cast_expression "(uint)pIdx->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nColumn" identifier -> field_identifier)) , (pointer_expression "*piVar1" * identifier) ))) ;) (expression_statement "eMode = pIdx == local_b0;" (assignment_expression "eMode = pIdx == local_b0" identifier = (binary_expression "pIdx == local_b0" identifier == identifier)) ;) (if_statement "if ((bVar23 && pkChng == '\0') && (eMode)) {\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }\n      else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar23 && pkChng == '\0') && (eMode))" ( (binary_expression "(bVar23 && pkChng == '\0') && (eMode)" (parenthesized_expression "(bVar23 && pkChng == '\0')" ( (binary_expression "bVar23 && pkChng == '\0'" identifier && (binary_expression "pkChng == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(eMode)" ( identifier ))) )) (compound_statement "{\n        sqlite3VdbeResolveLabel(p,iVar8);\n      }" { (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar19 = (uint)pIdx->onError;\n        if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }\n      }" { (expression_statement "uVar19 = (uint)pIdx->onError;" (assignment_expression "uVar19 = (uint)pIdx->onError" identifier = (cast_expression "(uint)pIdx->onError" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->onError" identifier -> field_identifier))) ;) (if_statement "if (pIdx->onError == 0) {\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }" if (parenthesized_expression "(pIdx->onError == 0)" ( (binary_expression "pIdx->onError == 0" (field_expression "pIdx->onError" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          sqlite3VdbeResolveLabel(p,iVar8);\n        }" { (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }" else (compound_statement "{\n          if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }\n          if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }\n        }" { (if_statement "if (local_74 == 0xb) {\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }\n          else {\n            uVar19 = (uint)local_74;\n          }" if (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) (compound_statement "{\n            if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }\n          }" { (if_statement "if (uVar19 == 0xb) {\n              uVar19 = 2;\n            }" if (parenthesized_expression "(uVar19 == 0xb)" ( (binary_expression "uVar19 == 0xb" identifier == number_literal) )) (compound_statement "{\n              uVar19 = 2;\n            }" { (expression_statement "uVar19 = 2;" (assignment_expression "uVar19 = 2" identifier = number_literal) ;) })) }) (else_clause "else {\n            uVar19 = (uint)local_74;\n          }" else (compound_statement "{\n            uVar19 = (uint)local_74;\n          }" { (expression_statement "uVar19 = (uint)local_74;" (assignment_expression "uVar19 = (uint)local_74" identifier = (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (if_statement "if (pIdx == local_d0) {\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }" if (parenthesized_expression "(pIdx == local_d0)" ( (binary_expression "pIdx == local_d0" identifier == identifier) )) (compound_statement "{\n            uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n          }" { (expression_statement "uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;" (assignment_expression "uVar19 = (-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe)" ( (binary_expression "-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0) & 0xfffffffe" (unary_expression "-(uint)(pUpsert->pUpsertSet == (ExprList *)0x0)" - (call_expression "(uint)(pUpsert->pUpsertSet == (ExprList *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pUpsert->pUpsertSet == (ExprList *)0x0)" ( (binary_expression "pUpsert->pUpsertSet == (ExprList *)0x0" (field_expression "pUpsert->pUpsertSet" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))) {\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }\n          else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }" if (parenthesized_expression "(((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0))))))))" ( (binary_expression "((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)) &&\n             ((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))" (parenthesized_expression "((((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode))" ( (binary_expression "(((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)) && (eMode)" (parenthesized_expression "(((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5))" ( (binary_expression "((local_a8 == 0) && (pIdx->pNext == (Index *)0x0)) && (uVar19 == 5)" (parenthesized_expression "((local_a8 == 0) && (pIdx->pNext == (Index *)0x0))" ( (binary_expression "(local_a8 == 0) && (pIdx->pNext == (Index *)0x0)" (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) && (parenthesized_expression "(pIdx->pNext == (Index *)0x0)" ( (binary_expression "pIdx->pNext == (Index *)0x0" (field_expression "pIdx->pNext" identifier -> field_identifier) == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(uVar19 == 5)" ( (binary_expression "uVar19 == 5" identifier == number_literal) ))) )) && (parenthesized_expression "(eMode)" ( identifier ))) )) && (parenthesized_expression "((((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))))" ( (parenthesized_expression "(((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0))))))" ( (binary_expression "((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)) &&\n              (((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))" (parenthesized_expression "((db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0))" ( (binary_expression "(db->flags & 0x2000) == 0 ||\n               (pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)" (binary_expression "(db->flags & 0x2000) == 0" (parenthesized_expression "(db->flags & 0x2000)" ( (binary_expression "db->flags & 0x2000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "(pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0)" ( (comma_expression "pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0),\n               pTVar14 == (Trigger *)0x0" (assignment_expression "pTVar14 = sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" identifier = (call_expression "sqlite3TriggersExist(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" identifier (argument_list "(pParse,pTab,0x7e,(ExprList *)0x0,(int *)0x0)" ( identifier , identifier , number_literal , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pTVar14 == (Trigger *)0x0" identifier == (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))))" ( (parenthesized_expression "((db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0))))" ( (binary_expression "(db->flags & 0x4000) == 0 ||\n               ((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))" (binary_expression "(db->flags & 0x4000) == 0" (parenthesized_expression "(db->flags & 0x4000)" ( (binary_expression "db->flags & 0x4000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "((pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)))" ( (parenthesized_expression "(pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0))" ( (binary_expression "pTab->pFKey == (FKey *)0x0 &&\n                (pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)" (binary_expression "pTab->pFKey == (FKey *)0x0" (field_expression "pTab->pFKey" identifier -> field_identifier) == (cast_expression "(FKey *)0x0" ( (type_descriptor "FKey *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0)" ( (comma_expression "pFVar15 = sqlite3FkReferences(pTab), pFVar15 == (FKey *)0x0" (assignment_expression "pFVar15 = sqlite3FkReferences(pTab)" identifier = (call_expression "sqlite3FkReferences(pTab)" identifier (argument_list "(pTab)" ( identifier )))) , (binary_expression "pFVar15 == (FKey *)0x0" identifier == (cast_expression "(FKey *)0x0" ( (type_descriptor "FKey *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) ))) )) ))) )) (compound_statement "{\n            sqlite3VdbeResolveLabel(p,iVar8);\n          }" { (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }" else (compound_statement "{\n            iVar9 = local_a8 + iIdxCur;\n            iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);\n            local_dc = p1;\n            if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }\n            if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }\n            if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }\n            if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }\n          }" { (expression_statement "iVar9 = local_a8 + iIdxCur;" (assignment_expression "iVar9 = local_a8 + iIdxCur" identifier = (binary_expression "local_a8 + iIdxCur" identifier + identifier)) ;) (expression_statement "iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol);" (assignment_expression "iVar10 = sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol)" identifier = (call_expression "sqlite3VdbeAddOp4Int(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol)" identifier (argument_list "(p,0x1c,iVar9,iVar8,p1,(uint)pIdx->nKeyCol)" ( identifier , number_literal , identifier , identifier , identifier , (cast_expression "(uint)pIdx->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nKeyCol" identifier -> field_identifier)) )))) ;) (expression_statement "local_dc = p1;" (assignment_expression "local_dc = p1" identifier = identifier) ;) (if_statement "if (pIdx != local_b0) {\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }" if (parenthesized_expression "(pIdx != local_b0)" ( (binary_expression "pIdx != local_b0" identifier != identifier) )) (compound_statement "{\n              local_dc = sqlite3GetTempRange(pParse,local_9c);\n            }" { (expression_statement "local_dc = sqlite3GetTempRange(pParse,local_9c);" (assignment_expression "local_dc = sqlite3GetTempRange(pParse,local_9c)" identifier = (call_expression "sqlite3GetTempRange(pParse,local_9c)" identifier (argument_list "(pParse,local_9c)" ( identifier , identifier )))) ;) })) (if_statement "if ((uVar19 == 5) || (bVar23)) {\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((uVar19 == 5) || (bVar23))" ( (binary_expression "(uVar19 == 5) || (bVar23)" (parenthesized_expression "(uVar19 == 5)" ( (binary_expression "uVar19 == 5" identifier == number_literal) )) || (parenthesized_expression "(bVar23)" ( identifier ))) )) (compound_statement "{\n              if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }\n            }" { (if_statement "if ((pTab->tabFlags & 0x80) == 0) {\n                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }\n              else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\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                sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);\n                if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }\n              }" { (expression_statement "sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc);" (call_expression "sqlite3VdbeAddOp2(p,0x86,iVar9,local_dc)" identifier (argument_list "(p,0x86,iVar9,local_dc)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (regOldData != 0) {\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);\n                  sqlite3VdbeChangeP5(p,0x90);\n                }" { (expression_statement "sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData);" (call_expression "sqlite3VdbeAddOp3(p,0x35,local_dc,iVar8,regOldData)" identifier (argument_list "(p,0x35,local_dc,iVar8,regOldData)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeChangeP5(p,0x90);" (call_expression "sqlite3VdbeChangeP5(p,0x90)" identifier (argument_list "(p,0x90)" ( identifier , number_literal ))) ;) })) }) (else_clause "else {\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }" else (compound_statement "{\n                iVar11 = 0;\n                if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }\n                if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }\n              }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (if_statement "if (pIdx != local_b0) {\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }" if (parenthesized_expression "(pIdx != local_b0)" ( (binary_expression "pIdx != local_b0" identifier != identifier) )) (compound_statement "{\n                  for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }\n                }" { (for_statement "for (; iVar11 < (int)(uint)local_b0->nKeyCol; iVar11 = iVar11 + 1) {\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }" for ( ; (binary_expression "iVar11 < (int)(uint)local_b0->nKeyCol" identifier < (cast_expression "(int)(uint)local_b0->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_b0->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_b0->nKeyCol" identifier -> field_identifier)))) ; (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ) (compound_statement "{\n                    iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);\n                    sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);\n                  }" { (expression_statement "iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11]);" (assignment_expression "iVar5 = sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11])" identifier = (call_expression "sqlite3TableColumnToIndex(pIdx,local_b0->aiColumn[iVar11])" identifier (argument_list "(pIdx,local_b0->aiColumn[iVar11])" ( identifier , (subscript_expression "local_b0->aiColumn[iVar11]" (field_expression "local_b0->aiColumn" identifier -> field_identifier) [ identifier ]) )))) ;) (expression_statement "sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11);" (call_expression "sqlite3VdbeAddOp3(p,0x59,iVar9,(int)iVar5,local_dc + iVar11)" identifier (argument_list "(p,0x59,iVar9,(int)iVar5,local_dc + iVar11)" ( identifier , number_literal , identifier , (cast_expression "(int)iVar5" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "local_dc + iVar11" identifier + identifier) ))) ;) })) })) (if_statement "if (regOldData != 0) {\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }" if (parenthesized_expression "(regOldData != 0)" ( (binary_expression "regOldData != 0" identifier != number_literal) )) (compound_statement "{\n                  local_8c = (uint)local_b0->nKeyCol + p->nOp;\n                  iVar11 = local_dc;\n                  if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }\n                  local_88 = 0x34;\n                  for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }\n                }" { (expression_statement "local_8c = (uint)local_b0->nKeyCol + p->nOp;" (assignment_expression "local_8c = (uint)local_b0->nKeyCol + p->nOp" identifier = (binary_expression "(uint)local_b0->nKeyCol + p->nOp" (cast_expression "(uint)local_b0->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_b0->nKeyCol" identifier -> field_identifier)) + (field_expression "p->nOp" identifier -> field_identifier))) ;) (expression_statement "iVar11 = local_dc;" (assignment_expression "iVar11 = local_dc" identifier = identifier) ;) (if_statement "if ((pIdx->field_0x63 & 3) == 2) {\n                    iVar11 = p1;\n                  }" if (parenthesized_expression "((pIdx->field_0x63 & 3) == 2)" ( (binary_expression "(pIdx->field_0x63 & 3) == 2" (parenthesized_expression "(pIdx->field_0x63 & 3)" ( (binary_expression "pIdx->field_0x63 & 3" (field_expression "pIdx->field_0x63" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar11 = p1;\n                  }" { (expression_statement "iVar11 = p1;" (assignment_expression "iVar11 = p1" identifier = identifier) ;) })) (expression_statement "local_88 = 0x34;" (assignment_expression "local_88 = 0x34" identifier = number_literal) ;) (for_statement "for (iVar21 = 0; iVar21 < (int)(uint)local_b0->nKeyCol; iVar21 = iVar21 + 1) {\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }" for ( (assignment_expression "iVar21 = 0" identifier = number_literal) ; (binary_expression "iVar21 < (int)(uint)local_b0->nKeyCol" identifier < (cast_expression "(int)(uint)local_b0->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_b0->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_b0->nKeyCol" identifier -> field_identifier)))) ; (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ) (compound_statement "{\n                    zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);\n                    bVar18 = local_b0->nKeyCol - 1 == iVar21;\n                    if (bVar18) {\n                      local_8c = iVar8;\n                    }\n                    op = 0x35;\n                    if (!bVar18) {\n                      op = local_88;\n                    }\n                    iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);\n                    sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);\n                    sqlite3VdbeChangeP5(p,0x90);\n                    local_88 = op;\n                  }" { (expression_statement "zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21]);" (assignment_expression "zP4 = sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21])" identifier = (call_expression "sqlite3LocateCollSeq(pParse,local_b0->azColl[iVar21])" identifier (argument_list "(pParse,local_b0->azColl[iVar21])" ( identifier , (subscript_expression "local_b0->azColl[iVar21]" (field_expression "local_b0->azColl" identifier -> field_identifier) [ identifier ]) )))) ;) (expression_statement "bVar18 = local_b0->nKeyCol - 1 == iVar21;" (assignment_expression "bVar18 = local_b0->nKeyCol - 1 == iVar21" identifier = (binary_expression "local_b0->nKeyCol - 1 == iVar21" (binary_expression "local_b0->nKeyCol - 1" (field_expression "local_b0->nKeyCol" identifier -> field_identifier) - number_literal) == identifier)) ;) (if_statement "if (bVar18) {\n                      local_8c = iVar8;\n                    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n                      local_8c = iVar8;\n                    }" { (expression_statement "local_8c = iVar8;" (assignment_expression "local_8c = iVar8" identifier = identifier) ;) })) (expression_statement "op = 0x35;" (assignment_expression "op = 0x35" identifier = number_literal) ;) (if_statement "if (!bVar18) {\n                      op = local_88;\n                    }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n                      op = local_88;\n                    }" { (expression_statement "op = local_88;" (assignment_expression "op = local_88" identifier = identifier) ;) })) (expression_statement "iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21]);" (assignment_expression "iVar5 = sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21])" identifier = (call_expression "sqlite3TableColumnToStorage(pTab,local_b0->aiColumn[iVar21])" identifier (argument_list "(pTab,local_b0->aiColumn[iVar21])" ( identifier , (subscript_expression "local_b0->aiColumn[iVar21]" (field_expression "local_b0->aiColumn" identifier -> field_identifier) [ identifier ]) )))) ;) (expression_statement "sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2);" (call_expression "sqlite3VdbeAddOp4(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2)" identifier (argument_list "(p,op,regOldData + 1 + (int)iVar5,local_8c,iVar11 + iVar21,\n                                      (char *)zP4,-2)" ( identifier , identifier , (binary_expression "regOldData + 1 + (int)iVar5" (binary_expression "regOldData + 1" identifier + number_literal) + (cast_expression "(int)iVar5" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , (binary_expression "iVar11 + iVar21" identifier + identifier) , (cast_expression "(char *)zP4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3VdbeChangeP5(p,0x90);" (call_expression "sqlite3VdbeChangeP5(p,0x90)" identifier (argument_list "(p,0x90)" ( identifier , number_literal ))) ;) (expression_statement "local_88 = op;" (assignment_expression "local_88 = op" identifier = identifier) ;) })) })) }))) })) (if_statement "if (uVar19 == 4) {\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }\n            else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }" if (parenthesized_expression "(uVar19 == 4)" ( (binary_expression "uVar19 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);\n            }" { (labeled_statement "LAB_0017ad29:\n              sqlite3VdbeGoto(p,ignoreDest);" statement_identifier : (expression_statement "sqlite3VdbeGoto(p,ignoreDest);" (call_expression "sqlite3VdbeGoto(p,ignoreDest)" identifier (argument_list "(p,ignoreDest)" ( identifier , identifier ))) ;)) }) (else_clause "else {\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }" else (compound_statement "{\n              if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }\n              iVar11 = p->nOp;\n              if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }\n              bVar18 = local_c0 != (Trigger *)0x0 && bVar23;\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }\n              sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);\n              if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }\n            }" { (if_statement "if ((int)uVar19 < 5) {\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "((int)uVar19 < 5)" ( (binary_expression "(int)uVar19 < 5" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }\n              }" { (if_statement "if (0 < (int)uVar19) {\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                  sqlite3UniqueConstraint(pParse,uVar19,pIdx);\n                  goto LAB_0017ad47;\n                }" { (expression_statement "sqlite3UniqueConstraint(pParse,uVar19,pIdx);" (call_expression "sqlite3UniqueConstraint(pParse,uVar19,pIdx)" identifier (argument_list "(pParse,uVar19,pIdx)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad47;" goto statement_identifier ;) })) }) (else_clause "else if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }" else (if_statement "if (uVar19 == 6) {\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "(uVar19 == 6)" ( (binary_expression "uVar19 == 6" identifier == number_literal) )) (compound_statement "{\n                sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);\n                goto LAB_0017ad29;\n              }" { (expression_statement "sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9);" (call_expression "sqlite3UpsertDoUpdate(pParse,pUpsert,pTab,pIdx,iVar9)" identifier (argument_list "(pParse,pUpsert,pTab,pIdx,iVar9)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad29;" goto statement_identifier ;) })))) (expression_statement "iVar11 = p->nOp;" (assignment_expression "iVar11 = p->nOp" identifier = (field_expression "p->nOp" identifier -> field_identifier)) ;) (if_statement "if (local_fc != 0) {\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                sqlite3MultiWrite(pParse);\n                local_b8 = local_b8 + 1;\n              }" { (expression_statement "sqlite3MultiWrite(pParse);" (call_expression "sqlite3MultiWrite(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) (expression_statement "local_b8 = local_b8 + 1;" (assignment_expression "local_b8 = local_b8 + 1" identifier = (binary_expression "local_b8 + 1" identifier + number_literal)) ;) })) (expression_statement "bVar18 = local_c0 != (Trigger *)0x0 && bVar23;" (assignment_expression "bVar18 = local_c0 != (Trigger *)0x0 && bVar23" identifier = (binary_expression "local_c0 != (Trigger *)0x0 && bVar23" (binary_expression "local_c0 != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (bVar18) {\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n                sqlite3VdbeAddOp1(p,0x9f,iDataCur);\n              }" { (expression_statement "sqlite3VdbeAddOp1(p,0x9f,iDataCur);" (call_expression "sqlite3VdbeAddOp1(p,0x9f,iDataCur)" identifier (argument_list "(p,0x9f,iDataCur)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9);" (call_expression "sqlite3GenerateRowDelete\n                        (pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9)" identifier (argument_list "(pParse,pTab,local_c0,iDataCur,iIdxCur,local_dc,(i16)local_9c,'\0','\x05',\n                         eMode,iVar9)" ( identifier , identifier , identifier , identifier , identifier , identifier , (cast_expression "(i16)local_9c" ( (type_descriptor "i16" type_identifier) ) identifier) , (char_literal "'\0'" ' escape_sequence ') , (char_literal "'\x05'" ' escape_sequence ') , identifier , identifier ))) ;) (if_statement "if (bVar18) {\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n                sqlite3VdbeAddOp1(p,0xa0,iDataCur);\n              }" { (expression_statement "sqlite3VdbeAddOp1(p,0xa0,iDataCur);" (call_expression "sqlite3VdbeAddOp1(p,0xa0,iDataCur)" identifier (argument_list "(p,0xa0,iDataCur)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) (if_statement "if (local_fc != 0) {\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                sqlite3VdbeAddOp2(p,0x52,local_fc,1);\n                iVar9 = sqlite3VdbeAddOp0(p,0xb);\n                sqlite3VdbeResolveLabel(p,local_c4);\n                local_c4 = pParse->nLabel - 1;\n                pParse->nLabel = local_c4;\n                if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }\n                for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }\n                sqlite3UniqueConstraint(pParse,2,pIdx);\n                sqlite3VdbeJumpHere(p,iVar9);\n                local_e4 = 1;\n              }" { (expression_statement "sqlite3VdbeAddOp2(p,0x52,local_fc,1);" (call_expression "sqlite3VdbeAddOp2(p,0x52,local_fc,1)" identifier (argument_list "(p,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "iVar9 = sqlite3VdbeAddOp0(p,0xb);" (assignment_expression "iVar9 = sqlite3VdbeAddOp0(p,0xb)" identifier = (call_expression "sqlite3VdbeAddOp0(p,0xb)" identifier (argument_list "(p,0xb)" ( identifier , number_literal )))) ;) (expression_statement "sqlite3VdbeResolveLabel(p,local_c4);" (call_expression "sqlite3VdbeResolveLabel(p,local_c4)" identifier (argument_list "(p,local_c4)" ( identifier , identifier ))) ;) (expression_statement "local_c4 = pParse->nLabel - 1;" (assignment_expression "local_c4 = pParse->nLabel - 1" identifier = (binary_expression "pParse->nLabel - 1" (field_expression "pParse->nLabel" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse->nLabel = local_c4;" (assignment_expression "pParse->nLabel = local_c4" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (if_statement "if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }" if (parenthesized_expression "(pIdx->pPartIdxWhere != (Expr *)0x0)" ( (binary_expression "pIdx->pPartIdxWhere != (Expr *)0x0" (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);\n                }" { (expression_statement "sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4);" (call_expression "sqlite3VdbeAddOp2(p,0x32,iVar7,local_c4)" identifier (argument_list "(p,0x32,iVar7,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) })) (for_statement "for (iVar7 = 0; 0 < (iVar11 - iVar10) - iVar7; iVar7 = iVar7 + 1) {\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }" for ( (assignment_expression "iVar7 = 0" identifier = number_literal) ; (binary_expression "0 < (iVar11 - iVar10) - iVar7" number_literal < (binary_expression "(iVar11 - iVar10) - iVar7" (parenthesized_expression "(iVar11 - iVar10)" ( (binary_expression "iVar11 - iVar10" identifier - identifier) )) - identifier)) ; (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n                  pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);\n                  zP4_00 = pVVar16->p4;\n                  bVar17 = pVVar16->opcode;\n                  if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }\n                }" { (expression_statement "pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7);" (assignment_expression "pVVar16 = sqlite3VdbeGetOp(p,iVar10 + iVar7)" identifier = (call_expression "sqlite3VdbeGetOp(p,iVar10 + iVar7)" identifier (argument_list "(p,iVar10 + iVar7)" ( identifier , (binary_expression "iVar10 + iVar7" identifier + identifier) )))) ;) (expression_statement "zP4_00 = pVVar16->p4;" (assignment_expression "zP4_00 = pVVar16->p4" identifier = (field_expression "pVVar16->p4" identifier -> field_identifier)) ;) (expression_statement "bVar17 = pVVar16->opcode;" (assignment_expression "bVar17 = pVVar16->opcode" identifier = (field_expression "pVVar16->opcode" identifier -> field_identifier)) ;) (if_statement "if (bVar17 != 0x86) {\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }" if (parenthesized_expression "(bVar17 != 0x86)" ( (binary_expression "bVar17 != 0x86" identifier != number_literal) )) (compound_statement "{\n                    uVar19 = local_c4;\n                    if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }\n                    if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }\n                    p5 = pVVar16->p5;\n                    sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);\n                    sqlite3VdbeChangeP5(p,p5);\n                  }" { (expression_statement "uVar19 = local_c4;" (assignment_expression "uVar19 = local_c4" identifier = identifier) ;) (if_statement "if ((""[(int)(uint)bVar17] & 1) == 0) {\n                      uVar19 = pVVar16->p2;\n                    }" if (parenthesized_expression "((""[(int)(uint)bVar17] & 1) == 0)" ( (binary_expression "(""[(int)(uint)bVar17] & 1) == 0" (parenthesized_expression "(""[(int)(uint)bVar17] & 1)" ( (binary_expression """[(int)(uint)bVar17] & 1" (subscript_expression """[(int)(uint)bVar17]" (string_literal """" " ") [ (cast_expression "(int)(uint)bVar17" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                      uVar19 = pVVar16->p2;\n                    }" { (expression_statement "uVar19 = pVVar16->p2;" (assignment_expression "uVar19 = pVVar16->p2" identifier = (field_expression "pVVar16->p2" identifier -> field_identifier)) ;) })) (if_statement "if (pVVar16->p4type == -3) {\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }" if (parenthesized_expression "(pVVar16->p4type == -3)" ( (binary_expression "pVVar16->p4type == -3" (field_expression "pVVar16->p4type" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                      local_48 = zP4_00.i;\n                      zP4_00 = (p4union)(long)local_48;\n                    }" { (expression_statement "local_48 = zP4_00.i;" (assignment_expression "local_48 = zP4_00.i" identifier = (field_expression "zP4_00.i" identifier . field_identifier)) ;) (expression_statement "zP4_00 = (p4union)(long)local_48;" (assignment_expression "zP4_00 = (p4union)(long)local_48" identifier = (cast_expression "(p4union)(long)local_48" ( (type_descriptor "p4union" type_identifier) ) (cast_expression "(long)local_48" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (expression_statement "p5 = pVVar16->p5;" (assignment_expression "p5 = pVVar16->p5" identifier = (field_expression "pVVar16->p5" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type);" (call_expression "sqlite3VdbeAddOp4(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type)" identifier (argument_list "(p,(uint)bVar17,pVVar16->p1,uVar19,pVVar16->p3,zP4_00.z,\n                                      (int)pVVar16->p4type)" ( identifier , (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) , (field_expression "pVVar16->p1" identifier -> field_identifier) , identifier , (field_expression "pVVar16->p3" identifier -> field_identifier) , (field_expression "zP4_00.z" identifier . field_identifier) , (cast_expression "(int)pVVar16->p4type" ( (type_descriptor "int" primitive_type) ) (field_expression "pVVar16->p4type" identifier -> field_identifier)) ))) ;) (expression_statement "sqlite3VdbeChangeP5(p,p5);" (call_expression "sqlite3VdbeChangeP5(p,p5)" identifier (argument_list "(p,p5)" ( identifier , identifier ))) ;) })) })) (expression_statement "sqlite3UniqueConstraint(pParse,2,pIdx);" (call_expression "sqlite3UniqueConstraint(pParse,2,pIdx)" identifier (argument_list "(pParse,2,pIdx)" ( identifier , number_literal , identifier ))) ;) (expression_statement "sqlite3VdbeJumpHere(p,iVar9);" (call_expression "sqlite3VdbeJumpHere(p,iVar9)" identifier (argument_list "(p,iVar9)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })) }))) (labeled_statement "LAB_0017ad47:\n            if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }" statement_identifier : (if_statement "if (pIdx == local_d0) {\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }\n            else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }" if (parenthesized_expression "(pIdx == local_d0)" ( (binary_expression "pIdx == local_d0" identifier == identifier) )) (compound_statement "{\n              sqlite3VdbeGoto(p,local_b4 + 1);\n              sqlite3VdbeJumpHere(p,local_84);\n            }" { (expression_statement "sqlite3VdbeGoto(p,local_b4 + 1);" (call_expression "sqlite3VdbeGoto(p,local_b4 + 1)" identifier (argument_list "(p,local_b4 + 1)" ( identifier , (binary_expression "local_b4 + 1" identifier + number_literal) ))) ;) (expression_statement "sqlite3VdbeJumpHere(p,local_84);" (call_expression "sqlite3VdbeJumpHere(p,local_84)" identifier (argument_list "(p,local_84)" ( identifier , identifier ))) ;) }) (else_clause "else {\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }" else (compound_statement "{\n              sqlite3VdbeResolveLabel(p,iVar8);\n            }" { (expression_statement "sqlite3VdbeResolveLabel(p,iVar8);" (call_expression "sqlite3VdbeResolveLabel(p,iVar8)" identifier (argument_list "(p,iVar8)" ( identifier , identifier ))) ;) })))) (if_statement "if (local_dc != p1) {\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }" if (parenthesized_expression "(local_dc != p1)" ( (binary_expression "local_dc != p1" identifier != identifier) )) (compound_statement "{\n              sqlite3ReleaseTempRange(pParse,local_dc,local_9c);\n            }" { (expression_statement "sqlite3ReleaseTempRange(pParse,local_dc,local_9c);" (call_expression "sqlite3ReleaseTempRange(pParse,local_dc,local_9c)" identifier (argument_list "(pParse,local_dc,local_9c)" ( identifier , identifier , identifier ))) ;) })) }))) }))) }))) })) (expression_statement "pIdx = pIdx->pNext;" (assignment_expression "pIdx = pIdx->pNext" identifier = (field_expression "pIdx->pNext" identifier -> field_identifier)) ;) (expression_statement "local_a8 = local_a8 + 1;" (assignment_expression "local_a8 = local_a8 + 1" identifier = (binary_expression "local_a8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)\n\n{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}\n\n" (function_definition "void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)\n\n{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" identifier (parameter_list "(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "char param_8" primitive_type identifier) , (parameter_declaration "byte param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined4 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "long param_12" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_13" (sized_type_specifier "long" long) (pointer_declarator "*param_13" * identifier)) ))) (compound_statement "{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined8 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "bool bVar26;" primitive_type identifier ;) (declaration "bool bVar27;" primitive_type identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "uint local_fc;" type_identifier identifier ;) (declaration "int local_e4;" primitive_type identifier ;) (declaration "int local_dc;" primitive_type identifier ;) (declaration "long local_d0;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "uint local_c4;" type_identifier identifier ;) (declaration "long local_c0;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "long local_b0;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "byte local_74;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (expression_statement "local_74 = param_9;" (assignment_expression "local_74 = param_9" identifier = identifier) ;) (expression_statement "bVar26 = param_7 != 0;" (assignment_expression "bVar26 = param_7 != 0" identifier = (binary_expression "param_7 != 0" identifier != number_literal)) ;) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar14 = FUN_00121a1e();" (assignment_expression "lVar14 = FUN_00121a1e()" identifier = (call_expression "FUN_00121a1e()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar21 = *(uint *)(param_2 + 8);" (assignment_expression "uVar21 = *(uint *)(param_2 + 8)" identifier = (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" if (parenthesized_expression "((uVar21 & 0x80) == 0)" ( (binary_expression "(uVar21 & 0x80) == 0" (parenthesized_expression "(uVar21 & 0x80)" ( (binary_expression "uVar21 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    sVar2 = 1;\n    local_b0 = 0;\n  }" { (expression_statement "sVar2 = 1;" (assignment_expression "sVar2 = 1" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" else (compound_statement "{\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" { (expression_statement "local_b0 = FUN_00111247(param_2);" (assignment_expression "local_b0 = FUN_00111247(param_2)" identifier = (call_expression "FUN_00111247(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar2 = *(short *)(local_b0 + 0x5e);" (assignment_expression "sVar2 = *(short *)(local_b0 + 0x5e)" identifier = (pointer_expression "*(short *)(local_b0 + 0x5e)" * (cast_expression "(short *)(local_b0 + 0x5e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" if (parenthesized_expression "((uVar21 >> 0xb & 1) != 0)" ( (binary_expression "(uVar21 >> 0xb & 1) != 0" (parenthesized_expression "(uVar21 >> 0xb & 1)" ( (binary_expression "uVar21 >> 0xb & 1" (binary_expression "uVar21 >> 0xb" identifier >> number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" { (expression_statement "sVar7 = *(short *)((long)param_2 + 0x46);" (assignment_expression "sVar7 = *(short *)((long)param_2 + 0x46)" identifier = (pointer_expression "*(short *)((long)param_2 + 0x46)" * (cast_expression "(short *)((long)param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x46)" ( (binary_expression "(long)param_2 + 0x46" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (do_statement "do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );" do (compound_statement "{\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    }" { (for_statement "for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" for ( (assignment_expression "lVar23 = 0" identifier = number_literal) ; (binary_expression "(int)lVar23 < (int)sVar7" (cast_expression "(int)lVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "lVar23 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ) (compound_statement "{\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" { (expression_statement "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);" (assignment_expression "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1])" identifier = (cast_expression "(undefined8 *)(lVar23 * 0x20 + param_2[1])" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 * 0x20 + param_2[1])" ( (binary_expression "lVar23 * 0x20 + param_2[1]" (binary_expression "lVar23 * 0x20" identifier * number_literal) + (subscript_expression "param_2[1]" identifier [ number_literal ])) )))) ;) (expression_statement "bVar19 = *(byte *)(puVar25 + 3);" (assignment_expression "bVar19 = *(byte *)(puVar25 + 3)" identifier = (pointer_expression "*(byte *)(puVar25 + 3)" * (cast_expression "(byte *)(puVar25 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 3)" ( (binary_expression "puVar25 + 3" identifier + number_literal) ))))) ;) (if_statement "if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" if (parenthesized_expression "((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23))" ( (binary_expression "(bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) && (parenthesized_expression "((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" ( (binary_expression "(int)*(short *)((long)param_2 + 0x44) != (int)lVar23" (cast_expression "(int)*(short *)((long)param_2 + 0x44)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((long)param_2 + 0x44)" * (cast_expression "(short *)((long)param_2 + 0x44)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x44)" ( (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) != (cast_expression "(int)lVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" { (expression_statement "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;" (assignment_expression "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60" identifier = (binary_expression "*(uint *)((long)puVar25 + 0x1c) & 0x60" (pointer_expression "*(uint *)((long)puVar25 + 0x1c)" * (cast_expression "(uint *)((long)puVar25 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar25 + 0x1c)" ( (binary_expression "(long)puVar25 + 0x1c" (cast_expression "(long)puVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (if_statement "if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }" if (parenthesized_expression "((uVar21 == 0) || (bVar5))" ( (binary_expression "(uVar21 == 0) || (bVar5)" (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar5)" ( identifier ))) )) (compound_statement "{\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }" { (if_statement "if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" if (parenthesized_expression "(((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0))" ( (binary_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)" (parenthesized_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4)))" ( (binary_expression "(param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))" (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) || (parenthesized_expression "(-1 < *(int *)(param_12 + lVar23 * 4))" ( (binary_expression "-1 < *(int *)(param_12 + lVar23 * 4)" number_literal < (pointer_expression "*(int *)(param_12 + lVar23 * 4)" * (cast_expression "(int *)(param_12 + lVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + lVar23 * 4)" ( (binary_expression "param_12 + lVar23 * 4" identifier + (binary_expression "lVar23 * 4" identifier * number_literal)) ))))) ))) )) || (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) ))) )) (compound_statement "{\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" { (expression_statement "bVar18 = param_9;" (assignment_expression "bVar18 = param_9" identifier = identifier) ;) (if_statement "if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" if (parenthesized_expression "((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb))" ( (binary_expression "(param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)" (parenthesized_expression "(param_9 == 0xb)" ( (binary_expression "param_9 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar18 = bVar19, bVar19 == 0xb)" ( (comma_expression "bVar18 = bVar19, bVar19 == 0xb" (assignment_expression "bVar18 = bVar19" identifier = identifier) , (binary_expression "bVar19 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" statement_identifier : (if_statement "if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" if (parenthesized_expression "((bVar5) && (uVar21 == 0))" ( (binary_expression "(bVar5) && (uVar21 == 0)" (parenthesized_expression "(bVar5)" ( identifier )) && (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;))) }) (else_clause "else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" else (compound_statement "{\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" { (if_statement "if (bVar18 != 5) goto LAB_00179efc;" if (parenthesized_expression "(bVar18 != 5)" ( (binary_expression "bVar18 != 5" identifier != number_literal) )) (goto_statement "goto LAB_00179efc;" goto statement_identifier ;)) (if_statement "if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n                  bVar18 = 2;\n                }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) }) (else_clause "else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" else (if_statement "if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" if (parenthesized_expression "(puVar25[1] == 0)" ( (binary_expression "puVar25[1] == 0" (subscript_expression "puVar25[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  bVar18 = 2;\n                }" { (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" identifier = number_literal) ;) })))) }))) (expression_statement "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);" (assignment_expression "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23)" identifier = (call_expression "FUN_001112f9(param_2,(int)(short)lVar23)" identifier (argument_list "(param_2,(int)(short)lVar23)" ( identifier , (cast_expression "(int)(short)lVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)lVar23" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) )))) ;) (expression_statement "iVar8 = param_6 + 1 + (int)sVar6;" (assignment_expression "iVar8 = param_6 + 1 + (int)sVar6" identifier = (binary_expression "param_6 + 1 + (int)sVar6" (binary_expression "param_6 + 1" identifier + number_literal) + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" if (parenthesized_expression "(bVar18 == 2)" ( (binary_expression "bVar18 == 2" identifier == number_literal) )) (compound_statement "{\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }" { (expression_statement "FUN_001115a2(param_1);" (call_expression "FUN_001115a2(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" statement_identifier : (expression_statement "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" (assignment_expression "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" identifier = (call_expression "FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" identifier (argument_list "(lVar3,"%s.%s",*param_2,*puVar25)" ( identifier , (string_literal ""%s.%s"" " string_content ") , (pointer_expression "*param_2" * identifier) , (pointer_expression "*puVar25" * identifier) )))) ;)) (expression_statement "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);" (call_expression "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8)" identifier (argument_list "(lVar14,0x43,0x513,bVar18,iVar8)" ( identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_0011aa64(lVar14,uVar16,0xfffffff9);" (call_expression "FUN_0011aa64(lVar14,uVar16,0xfffffff9)" identifier (argument_list "(lVar14,uVar16,0xfffffff9)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0010f49a(lVar14,1);" (call_expression "FUN_0010f49a(lVar14,1)" identifier (argument_list "(lVar14,1)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" else (compound_statement "{\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" { (if_statement "if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" if (parenthesized_expression "(bVar18 < 3)" ( (binary_expression "bVar18 < 3" identifier < number_literal) )) (compound_statement "{\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }" { (if_statement "if (bVar18 == 1) goto LAB_00179f5d;" if (parenthesized_expression "(bVar18 == 1)" ( (binary_expression "bVar18 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) }) (else_clause "else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" else (compound_statement "{\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" { (if_statement "if (bVar18 == 3) goto LAB_00179f5d;" if (parenthesized_expression "(bVar18 == 3)" ( (binary_expression "bVar18 == 3" identifier == number_literal) )) (goto_statement "goto LAB_00179f5d;" goto statement_identifier ;)) (if_statement "if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" if (parenthesized_expression "(bVar18 == 5)" ( (binary_expression "bVar18 == 5" identifier == number_literal) )) (compound_statement "{\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" { (expression_statement "uVar12 = FUN_00120894(lVar14,0x33,iVar8);" (assignment_expression "uVar12 = FUN_00120894(lVar14,0x33,iVar8)" identifier = (call_expression "FUN_00120894(lVar14,0x33,iVar8)" identifier (argument_list "(lVar14,0x33,iVar8)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_fc = local_fc + 1;" (assignment_expression "local_fc = local_fc + 1" identifier = (binary_expression "local_fc + 1" identifier + number_literal)) ;) (expression_statement "FUN_0015ba64(param_1,puVar25[1],iVar8);" (call_expression "FUN_0015ba64(param_1,puVar25[1],iVar8)" identifier (argument_list "(param_1,puVar25[1],iVar8)" ( identifier , (subscript_expression "puVar25[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" identifier (argument_list "(lVar14,uVar12)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_00179e5a;" goto statement_identifier ;) })) }))) (expression_statement "FUN_001207c0(lVar14,0x32,iVar8,param_10);" (call_expression "FUN_001207c0(lVar14,0x32,iVar8,param_10)" identifier (argument_list "(lVar14,0x32,iVar8,param_10)" ( identifier , number_literal , identifier , identifier ))) ;) }))) })) }) (else_clause "else {\n            local_e4 = local_e4 + 1;\n          }" else (compound_statement "{\n            local_e4 = local_e4 + 1;\n          }" { (expression_statement "local_e4 = local_e4 + 1;" (assignment_expression "local_e4 = local_e4 + 1" identifier = (binary_expression "local_e4 + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_00179e5a:" statement_identifier : (expression_statement "" ;)) })) (if_statement "if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;" if (parenthesized_expression "((local_fc == 0 && local_e4 == 0) || (bVar5))" ( (binary_expression "(local_fc == 0 && local_e4 == 0) || (bVar5)" (parenthesized_expression "(local_fc == 0 && local_e4 == 0)" ( (binary_expression "local_fc == 0 && local_e4 == 0" (binary_expression "local_fc == 0" identifier == number_literal) && (binary_expression "local_e4 == 0" identifier == number_literal)) )) || (parenthesized_expression "(bVar5)" ( identifier ))) )) (break_statement "break;" break ;)) (if_statement "if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" if (parenthesized_expression "((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0))" ( (binary_expression "(0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)" (parenthesized_expression "(0 < (int)local_fc)" ( (binary_expression "0 < (int)local_fc" number_literal < (cast_expression "(int)local_fc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x60) != 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x60) != 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x60)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x60" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" { (expression_statement "FUN_0015bd19(param_1,param_6 + 1,param_2);" (call_expression "FUN_0015bd19(param_1,param_6 + 1,param_2)" identifier (argument_list "(param_1,param_6 + 1,param_2)" ( identifier , (binary_expression "param_6 + 1" identifier + number_literal) , identifier ))) ;) })) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "piVar4 = (int *)param_2[6];" (assignment_expression "piVar4 = (int *)param_2[6]" identifier = (cast_expression "(int *)param_2[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (if_statement "if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" if (parenthesized_expression "((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0))" ( (binary_expression "(piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 2)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 2" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" { (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (if_statement "if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }" if (parenthesized_expression "(param_9 != 0xb)" ( (binary_expression "param_9 != 0xb" identifier != number_literal) )) (compound_statement "{\n      bVar19 = param_9;\n    }" { (expression_statement "bVar19 = param_9;" (assignment_expression "bVar19 = param_9" identifier = identifier) ;) })) (for_statement "for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" for ( (assignment_expression "local_100 = 0" identifier = number_literal) ; (binary_expression "local_100 < *piVar4" identifier < (pointer_expression "*piVar4" * identifier)) ; (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ) (compound_statement "{\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" { (expression_statement "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);" (assignment_expression "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" identifier = (pointer_expression "*(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" * (cast_expression "(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 2)" ( (binary_expression "piVar4 + (long)local_100 * 6 + 2" (binary_expression "piVar4 + (long)local_100 * 6" identifier + (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (if_statement "if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" if (parenthesized_expression "((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0))" ( (binary_expression "(param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" ( (comma_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0" (assignment_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8)" identifier = (call_expression "FUN_001174e9(uVar16,param_12,param_8)" identifier (argument_list "(uVar16,param_12,param_8)" ( identifier , identifier , identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" { (if_statement "if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" { (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" identifier (argument_list "(lVar14,param_2,param_6 + 1)" ( identifier , identifier , (binary_expression "param_6 + 1" identifier + number_literal) ))) ;) })) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_00135319(lVar3,uVar16,0);" (assignment_expression "uVar16 = FUN_00135319(lVar3,uVar16,0)" identifier = (call_expression "FUN_00135319(lVar3,uVar16,0)" identifier (argument_list "(lVar3,uVar16,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" if (parenthesized_expression "(*(char *)(lVar3 + 0x61) == '\0')" ( (binary_expression "*(char *)(lVar3 + 0x61) == '\0'" (pointer_expression "*(char *)(lVar3 + 0x61)" * (cast_expression "(char *)(lVar3 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x61)" ( (binary_expression "lVar3 + 0x61" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" { (expression_statement "FUN_00159eda(param_1,uVar16,iVar8,0x10);" (call_expression "FUN_00159eda(param_1,uVar16,iVar8,0x10)" identifier (argument_list "(param_1,uVar16,iVar8,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) })) (expression_statement "FUN_0011c4af(lVar3,uVar16);" (call_expression "FUN_0011c4af(lVar3,uVar16)" identifier (argument_list "(lVar3,uVar16)" ( identifier , identifier ))) ;) (if_statement "if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" if (parenthesized_expression "(bVar19 == 4)" ( (binary_expression "bVar19 == 4" identifier == number_literal) )) (compound_statement "{\n          FUN_00120941(lVar14,param_10);\n        }" { (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" else (compound_statement "{\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" { (expression_statement "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);" (assignment_expression "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4)" identifier = (pointer_expression "*(long *)(piVar4 + (long)local_100 * 6 + 4)" * (cast_expression "(long *)(piVar4 + (long)local_100 * 6 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 4)" ( (binary_expression "piVar4 + (long)local_100 * 6 + 4" (binary_expression "piVar4 + (long)local_100 * 6" identifier + (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (if_statement "if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }" if (parenthesized_expression "(lVar23 == 0)" ( (binary_expression "lVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            lVar23 = *param_2;\n          }" { (expression_statement "lVar23 = *param_2;" (assignment_expression "lVar23 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) (if_statement "if (bVar19 == 5) {\n            bVar19 = 2;\n          }" if (parenthesized_expression "(bVar19 == 5)" ( (binary_expression "bVar19 == 5" identifier == number_literal) )) (compound_statement "{\n            bVar19 = 2;\n          }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) })) (expression_statement "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);" (call_expression "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3)" identifier (argument_list "(param_1,0x113,bVar19,lVar23,0,3)" ( identifier , number_literal , identifier , identifier , number_literal , number_literal ))) ;) }))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) })) })) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" if (parenthesized_expression "(param_13 == (long *)0x0)" ( (binary_expression "param_13 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" identifier = number_literal) ;) }) (else_clause "else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" else (if_statement "if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" if (parenthesized_expression "(*param_13 == 0)" ( (binary_expression "*param_13 == 0" (pointer_expression "*param_13" * identifier) == number_literal) )) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" identifier = number_literal) ;) (expression_statement "param_13 = (long *)0x0;" (assignment_expression "param_13 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 4;" (assignment_expression "local_74 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" else (compound_statement "{\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" { (expression_statement "local_d0 = param_13[4];" (assignment_expression "local_d0 = param_13[4]" identifier = (subscript_expression "param_13[4]" identifier [ number_literal ])) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (if_statement "if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" if (parenthesized_expression "(local_d0 != 0)" ( (binary_expression "local_d0 != 0" identifier != number_literal) )) (compound_statement "{\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" { (expression_statement "local_b4 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_b4 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) })) }))))) (if_statement "if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" if (parenthesized_expression "((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0)" ( (binary_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000) == 0" (parenthesized_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000)" ( (binary_expression "*(ulong *)(lVar3 + 0x30) & 0x6000" (pointer_expression "*(ulong *)(lVar3 + 0x30)" * (cast_expression "(ulong *)(lVar3 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }" { (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" identifier = number_literal) ;) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" else (compound_statement "{\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" { (if_statement "if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" if (parenthesized_expression "(((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0)" ( (binary_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0" (parenthesized_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1)" ( (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ulong *)(lVar3 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) )))) >> number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }" { (expression_statement "local_fc = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "local_fc = FUN_001116f3(param_1,param_2,0,0)" identifier = (call_expression "FUN_001116f3(param_1,param_2,0,0)" identifier (argument_list "(param_1,param_2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (labeled_statement "LAB_0017a0bd:\n      local_c8 = local_fc;" statement_identifier : (expression_statement "local_c8 = local_fc;" (assignment_expression "local_c8 = local_fc" identifier = identifier) ;)) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (if_statement "if (local_fc == 0) goto LAB_0017a102;" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017a102;" goto statement_identifier ;)) }) (else_clause "else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" else (compound_statement "{\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" { (expression_statement "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);" (assignment_expression "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier = (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier (argument_list "(param_1,param_2,0x7e,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" { (expression_statement "iVar8 = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "iVar8 = FUN_001116f3(param_1,param_2,0,0)" identifier = (call_expression "FUN_001116f3(param_1,param_2,0,0)" identifier (argument_list "(param_1,param_2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_fc = (uint)(iVar8 != 0);" (assignment_expression "local_fc = (uint)(iVar8 != 0)" identifier = (call_expression "(uint)(iVar8 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_0017a0bd;" goto statement_identifier ;) })) }))) (expression_statement "local_fc = (int)param_1[7] + 1;" (assignment_expression "local_fc = (int)param_1[7] + 1" identifier = (binary_expression "(int)param_1[7] + 1" (cast_expression "(int)param_1[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 7) = local_fc;" (assignment_expression "*(uint *)(param_1 + 7) = local_fc" (pointer_expression "*(uint *)(param_1 + 7)" * (cast_expression "(uint *)(param_1 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001207c0(lVar14,0x45,0,local_fc);" (call_expression "FUN_001207c0(lVar14,0x45,0,local_fc)" identifier (argument_list "(lVar14,0x45,0,local_fc)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "local_c8 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c8 = *(int *)((long)param_1 + 0x44) - 1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c8;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c8" (pointer_expression "*(uint *)((long)param_1 + 0x44)" * (cast_expression "(uint *)((long)param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" statement_identifier : (if_statement "if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" if (parenthesized_expression "((param_8 == '\0') || (local_b0 != 0))" ( (binary_expression "(param_8 == '\0') || (local_b0 != 0)" (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_b0 != 0)" ( (binary_expression "local_b0 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" { (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a4e9;" goto statement_identifier ;) }))) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "bVar19 = local_74;" (assignment_expression "bVar19 = local_74" identifier = identifier) ;) (if_statement "if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" if (parenthesized_expression "((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb))" ( (binary_expression "(local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" ( (comma_expression "bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb" (assignment_expression "bVar19 = *(byte *)((long)param_2 + 0x4e)" identifier = (pointer_expression "*(byte *)((long)param_2 + 0x4e)" * (cast_expression "(byte *)((long)param_2 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x4e)" ( (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (binary_expression "*(byte *)((long)param_2 + 0x4e) == 0xb" (pointer_expression "*(byte *)((long)param_2 + 0x4e)" * (cast_expression "(byte *)((long)param_2 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x4e)" ( (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (if_statement "if (param_13 != (long *)0x0) goto LAB_0017a14e;" if (parenthesized_expression "(param_13 != (long *)0x0)" ( (binary_expression "param_13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017a14e;" goto statement_identifier ;)) (if_statement "if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;) (goto_statement "goto switchD_0017a48f_caseD_1;" goto statement_identifier ;) })) (if_statement "if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" if (parenthesized_expression "(param_13 != (long *)0x0)" ( (binary_expression "param_13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" { (labeled_statement "LAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;" statement_identifier : (if_statement "if (param_13[4] != 0) goto LAB_0017a353;" if (parenthesized_expression "(param_13[4] != 0)" ( (binary_expression "param_13[4] != 0" (subscript_expression "param_13[4]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0017a353;" goto statement_identifier ;))) (if_statement "if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" if (parenthesized_expression "(param_13[2] != 0)" ( (binary_expression "param_13[2] != 0" (subscript_expression "param_13[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" { (if_statement "if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" { (expression_statement "bVar19 = 6;" (assignment_expression "bVar19 = 6" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_6;" goto statement_identifier ;) })) (if_statement "if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "bVar19 = 4;" (assignment_expression "bVar19 = 4" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (goto_statement "goto switchD_0017a48f_caseD_4;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" statement_identifier : (if_statement "if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" if (parenthesized_expression "(bVar19 == 5)" ( (binary_expression "bVar19 == 5" identifier == number_literal) )) (compound_statement "{\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" if (parenthesized_expression "((local_74 != 5) && (param_2[2] != 0))" ( (binary_expression "(local_74 != 5) && (param_2[2] != 0)" (parenthesized_expression "(local_74 != 5)" ( (binary_expression "local_74 != 5" identifier != number_literal) )) && (parenthesized_expression "(param_2[2] != 0)" ( (binary_expression "param_2[2] != 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" { (expression_statement "local_100 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_100 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" { (labeled_statement "LAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" statement_identifier : (expression_statement "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7)" identifier (argument_list "(lVar14,0x35,param_6,iVar8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) (goto_statement "goto LAB_0017a45f;" goto statement_identifier ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (labeled_statement "switchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" statement_identifier : (if_statement "if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" if (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }" { (if_statement "if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" if (parenthesized_expression "(param_2[2] == 0)" ( (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" else (compound_statement "{\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);" (call_expression "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff)" identifier (argument_list "(param_1,param_2,param_4,param_5,0,0xffffffff)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" identifier = identifier) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" else (compound_statement "{\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" identifier (argument_list "(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" identifier (argument_list "(lVar14,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "local_b8 = 1;" (assignment_expression "local_b8 = 1" identifier = number_literal) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })))) }) (else_clause "else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" else (compound_statement "{\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" { (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017a437;" goto statement_identifier ;) })) (labeled_statement "LAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" statement_identifier : (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;)) (switch_statement "switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" switch (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" { (case_statement "case 5:\n      goto switchD_0017a48f_caseD_5;" case number_literal : (goto_statement "goto switchD_0017a48f_caseD_5;" goto statement_identifier ;)) (case_statement "case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" case number_literal : (labeled_statement "switchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" statement_identifier : (expression_statement "FUN_00179afb(param_1,param_13,param_2,0,param_4);" (call_expression "FUN_00179afb(param_1,param_13,param_2,0,param_4)" identifier (argument_list "(param_1,param_13,param_2,0,param_4)" ( identifier , identifier , identifier , number_literal , identifier ))) ;))) (case_statement "case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);" statement_identifier : (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n      bVar19 = 2;" default : (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" identifier = number_literal) ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;" case number_literal : (labeled_statement "switchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);" statement_identifier : (expression_statement "FUN_001300b2(param_1,bVar19,param_2);" (call_expression "FUN_001300b2(param_1,bVar19,param_2)" identifier (argument_list "(param_1,bVar19,param_2)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;)) })) })))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) (expression_statement "local_90 = local_100;" (assignment_expression "local_90 = local_100" identifier = identifier) ;) (if_statement "if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" { (expression_statement "local_90 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_90 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_100 + -1);" (call_expression "FUN_0010f4fb(lVar14,local_100 + -1)" identifier (argument_list "(lVar14,local_100 + -1)" ( identifier , (binary_expression "local_100 + -1" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_0017a4e9:\n  lVar23 = param_2[2];" statement_identifier : (expression_statement "lVar23 = param_2[2];" (assignment_expression "lVar23 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" identifier = identifier) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );" do (compound_statement "{\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  }" { (if_statement "if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" if (parenthesized_expression "(lVar23 == 0)" ( (binary_expression "lVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" { (if_statement "if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" if (parenthesized_expression "(local_100 != 0)" ( (binary_expression "local_100 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" { (expression_statement "FUN_00120941(lVar14,local_100);" (call_expression "FUN_00120941(lVar14,local_100)" identifier (argument_list "(lVar14,local_100)" ( identifier , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_90);" (call_expression "FUN_0010f4fb(lVar14,local_90)" identifier (argument_list "(lVar14,local_90)" ( identifier , identifier ))) ;) })) (if_statement "if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" { (expression_statement "FUN_001207c0(lVar14,0x14,local_fc,local_c4);" (call_expression "FUN_001207c0(lVar14,0x14,local_fc,local_c4)" identifier (argument_list "(lVar14,0x14,local_fc,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }" { (if_statement "if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" { (expression_statement "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7)" identifier (argument_list "(lVar14,0x35,param_6,local_c8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6)" identifier (argument_list "(lVar14,0x20,param_4,local_c8,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_001300b2(param_1,2,param_2);" (call_expression "FUN_001300b2(param_1,2,param_2)" identifier (argument_list "(param_1,2,param_2)" ( identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n          FUN_00120941(lVar14,local_c8);\n        }" else (compound_statement "{\n          FUN_00120941(lVar14,local_c8);\n        }" { (expression_statement "FUN_00120941(lVar14,local_c8);" (call_expression "FUN_00120941(lVar14,local_c8)" identifier (argument_list "(lVar14,local_c8)" ( identifier , identifier ))) ;) }))) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" identifier (argument_list "(lVar14,local_c4)" ( identifier , identifier ))) ;) })) (if_statement "if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }" if (parenthesized_expression "(((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5))" ( (binary_expression "((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" ( (comma_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5" (call_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" identifier (argument_list "(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" ( identifier , number_literal , (binary_expression "param_6 + 1" identifier + number_literal) , (cast_expression "(int)(short)param_2[9]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)param_2[9]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[9]" identifier [ number_literal ]))) , (pointer_expression "*(undefined4 *)(param_3 + (long)local_a8 * 4)" * (cast_expression "(undefined4 *)(param_3 + (long)local_a8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)local_a8 * 4)" ( (binary_expression "param_3 + (long)local_a8 * 4" identifier + (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ))) , (unary_expression "!bVar5" ! identifier)) ))) )) (compound_statement "{\n        FUN_0013c76e(lVar14,param_2,0);\n      }" { (expression_statement "FUN_0013c76e(lVar14,param_2,0);" (call_expression "FUN_0013c76e(lVar14,param_2,0)" identifier (argument_list "(lVar14,param_2,0)" ( identifier , identifier , number_literal ))) ;) })) (expression_statement "*param_11 = local_e4;" (assignment_expression "*param_11 = local_e4" (pointer_expression "*param_11" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar4 = (int *)(param_3 + (long)local_a8 * 4);" (assignment_expression "piVar4 = (int *)(param_3 + (long)local_a8 * 4)" identifier = (cast_expression "(int *)(param_3 + (long)local_a8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (long)local_a8 * 4)" ( (binary_expression "param_3 + (long)local_a8 * 4" identifier + (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (if_statement "if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) )) (compound_statement "{\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }" { (expression_statement "iVar8 = local_b4 + 1;" (assignment_expression "iVar8 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "local_84 = FUN_00120941(lVar14,0);" (assignment_expression "local_84 = FUN_00120941(lVar14,0)" identifier = (call_expression "FUN_00120941(lVar14,0)" identifier (argument_list "(lVar14,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_b4);" (call_expression "FUN_0010f4fb(lVar14,local_b4)" identifier (argument_list "(lVar14,local_b4)" ( identifier , identifier ))) ;) (if_statement "if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" { (labeled_statement "LAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);" statement_identifier : (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" identifier (argument_list "(lVar14,param_2,param_6 + 1)" ( identifier , identifier , (binary_expression "param_6 + 1" identifier + number_literal) ))) ;)) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) })) }) (else_clause "else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" else (compound_statement "{\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" { (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;" if (parenthesized_expression "((!bVar5) && (local_d0 == 0))" ( (binary_expression "(!bVar5) && (local_d0 == 0)" (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) && (parenthesized_expression "(local_d0 == 0)" ( (binary_expression "local_d0 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_0017a81c;" goto statement_identifier ;)) }))) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" if (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" ( (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" * (cast_expression "(long *)(lVar23 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" { (expression_statement "FUN_001207c0(lVar14,0x48,0,*piVar4);" (call_expression "FUN_001207c0(lVar14,0x48,0,*piVar4)" identifier (argument_list "(lVar14,0x48,0,*piVar4)" ( identifier , number_literal , number_literal , (pointer_expression "*piVar4" * identifier) ))) ;) (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);" (call_expression "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" identifier (argument_list "(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" ( identifier , (pointer_expression "*(undefined8 *)(lVar23 + 0x48)" * (cast_expression "(undefined8 *)(lVar23 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) , identifier , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar22 = *piVar4;" (assignment_expression "iVar22 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar9 = iVar22 + 1;" (assignment_expression "iVar9 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = iVar22 + 1;" (assignment_expression "iVar10 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (for_statement "for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" for ( (assignment_expression "iVar11 = 0" identifier = number_literal) ; (binary_expression "iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60)" identifier < (binary_expression "(int)(uint)*(ushort *)(lVar23 + 0x60)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(lVar23 + 0x60)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x60)" ( (binary_expression "lVar23 + 0x60" identifier + number_literal) ))))) ; (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ) (compound_statement "{\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" { (expression_statement "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);" (assignment_expression "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" identifier = (pointer_expression "*(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" * (cast_expression "(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" ( (binary_expression "*(long *)(lVar23 + 8) + (long)iVar11 * 2" (pointer_expression "*(long *)(lVar23 + 8)" * (cast_expression "(long *)(lVar23 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 8)" ( (binary_expression "lVar23 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar11 * 2" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) ;) (if_statement "if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" if (parenthesized_expression "(sVar7 == -2)" ( (binary_expression "sVar7 == -2" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }" { (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (unary_expression "~param_6" ~ identifier)) ;) (expression_statement "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);" (call_expression "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" identifier (argument_list "(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" ( identifier , (pointer_expression "*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" * (cast_expression "(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" ( (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8" (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50)" (binary_expression "(long)iVar11 * 0x18" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + (pointer_expression "*(long *)(lVar23 + 0x50)" * (cast_expression "(long *)(lVar23 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x50)" ( (binary_expression "lVar23 + 0x50" identifier + number_literal) ))))) + number_literal) )))) , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" else (if_statement "if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" if (parenthesized_expression "((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44)))" ( (binary_expression "(sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))" (parenthesized_expression "(sVar7 == -1)" ( (binary_expression "sVar7 == -1" identifier == number_literal) )) || (parenthesized_expression "(sVar7 == *(short *)((long)param_2 + 0x44))" ( (binary_expression "sVar7 == *(short *)((long)param_2 + 0x44)" identifier == (pointer_expression "*(short *)((long)param_2 + 0x44)" * (cast_expression "(short *)((long)param_2 + 0x44)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x44)" ( (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }" { (expression_statement "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11)" identifier (argument_list "(lVar14,0x4f,param_6,iVar10 + iVar11)" ( identifier , number_literal , identifier , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) }) (else_clause "else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" else (compound_statement "{\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" { (expression_statement "sVar7 = FUN_001112f9(param_2);" (assignment_expression "sVar7 = FUN_001112f9(param_2)" identifier = (call_expression "FUN_001112f9(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" identifier (argument_list "(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" ( identifier , number_literal , (binary_expression "param_6 + 1 + (int)sVar7" (binary_expression "param_6 + 1" identifier + number_literal) + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "iVar10 + iVar11" identifier + identifier) ))) ;) }))))) })) (expression_statement "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);" (call_expression "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" identifier (argument_list "(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" ( identifier , number_literal , identifier , (pointer_expression "*(ushort *)(lVar23 + 0x60)" * (cast_expression "(ushort *)(lVar23 + 0x60)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x60)" ( (binary_expression "lVar23 + 0x60" identifier + number_literal) )))) , (pointer_expression "*piVar4" * identifier) ))) ;) (expression_statement "bVar27 = lVar23 == local_b0;" (assignment_expression "bVar27 = lVar23 == local_b0" identifier = (binary_expression "lVar23 == local_b0" identifier == identifier)) ;) (if_statement "if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar26 && param_8 == '\0') && (bVar27))" ( (binary_expression "(bVar26 && param_8 == '\0') && (bVar27)" (parenthesized_expression "(bVar26 && param_8 == '\0')" ( (binary_expression "bVar26 && param_8 == '\0'" identifier && (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(bVar27)" ( identifier ))) )) (compound_statement "{\n        FUN_00120437(lVar14,iVar8);\n      }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" { (expression_statement "uVar21 = (uint)*(byte *)(lVar23 + 0x62);" (assignment_expression "uVar21 = (uint)*(byte *)(lVar23 + 0x62)" identifier = (binary_expression "(uint)*(byte *)(lVar23 + 0x62)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar23 + 0x62)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x62)" ( (binary_expression "lVar23 + 0x62" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" if (parenthesized_expression "(*(byte *)(lVar23 + 0x62) == 0)" ( (binary_expression "*(byte *)(lVar23 + 0x62) == 0" (pointer_expression "*(byte *)(lVar23 + 0x62)" * (cast_expression "(byte *)(lVar23 + 0x62)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x62)" ( (binary_expression "lVar23 + 0x62" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00120437(lVar14,iVar8);\n        }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" else (compound_statement "{\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" { (if_statement "if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }" if (parenthesized_expression "(local_74 == 0xb)" ( (binary_expression "local_74 == 0xb" identifier == number_literal) )) (compound_statement "{\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }" { (if_statement "if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }" if (parenthesized_expression "(uVar21 == 0xb)" ( (binary_expression "uVar21 == 0xb" identifier == number_literal) )) (compound_statement "{\n              uVar21 = 2;\n            }" { (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" identifier = number_literal) ;) })) }) (else_clause "else {\n            uVar21 = (uint)local_74;\n          }" else (compound_statement "{\n            uVar21 = (uint)local_74;\n          }" { (expression_statement "uVar21 = (uint)local_74;" (assignment_expression "uVar21 = (uint)local_74" identifier = (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (if_statement "if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" { (expression_statement "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe)" ( (binary_expression "-(uint)(param_13[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(param_13[2] == 0)" - (call_expression "(uint)(param_13[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_13[2] == 0)" ( (binary_expression "param_13[2] == 0" (subscript_expression "param_13[2]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" if (parenthesized_expression "(((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))))" ( (binary_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" (parenthesized_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))" ( (binary_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27)" (parenthesized_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5))" ( (binary_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)" (parenthesized_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0))" ( (binary_expression "(local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)" (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(long *)(lVar23 + 0x28) == 0)" ( (binary_expression "*(long *)(lVar23 + 0x28) == 0" (pointer_expression "*(long *)(lVar23 + 0x28)" * (cast_expression "(long *)(lVar23 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x28)" ( (binary_expression "lVar23 + 0x28" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(uVar21 == 5)" ( (binary_expression "uVar21 == 5" identifier == number_literal) ))) )) && (parenthesized_expression "(bVar27)" ( identifier ))) )) && (parenthesized_expression "((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" ( (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))" ( (binary_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0))" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x20)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 0x20" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" ( (comma_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier = (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" identifier (argument_list "(param_1,param_2,0x7e,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal )))) , (binary_expression "lVar15 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" ( (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))" ( (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x40)" ( (binary_expression "*(byte *)(lVar3 + 0x31) & 0x40" (pointer_expression "*(byte *)(lVar3 + 0x31)" * (cast_expression "(byte *)(lVar3 + 0x31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x31)" ( (binary_expression "lVar3 + 0x31" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" ( (parenthesized_expression "(param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))" ( (binary_expression "param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)" (binary_expression "param_2[4] == 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) == number_literal) && (parenthesized_expression "(lVar15 = FUN_00111606(param_2), lVar15 == 0)" ( (comma_expression "lVar15 = FUN_00111606(param_2), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111606(param_2)" identifier = (call_expression "FUN_00111606(param_2)" identifier (argument_list "(param_2)" ( identifier )))) , (binary_expression "lVar15 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) ))) )) (compound_statement "{\n            FUN_00120437(lVar14,iVar8);\n          }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" else (compound_statement "{\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" { (expression_statement "iVar10 = local_a8 + param_5;" (assignment_expression "iVar10 = local_a8 + param_5" identifier = (binary_expression "local_a8 + param_5" identifier + identifier)) ;) (expression_statement "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));" (assignment_expression "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" identifier = (call_expression "FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" identifier (argument_list "(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" ( identifier , number_literal , identifier , identifier , identifier , (pointer_expression "*(undefined2 *)(lVar23 + 0x5e)" * (cast_expression "(undefined2 *)(lVar23 + 0x5e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x5e)" ( (binary_expression "lVar23 + 0x5e" identifier + number_literal) )))) )))) ;) (expression_statement "local_dc = iVar9;" (assignment_expression "local_dc = iVar9" identifier = identifier) ;) (if_statement "if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" if (parenthesized_expression "(lVar23 != local_b0)" ( (binary_expression "lVar23 != local_b0" identifier != identifier) )) (compound_statement "{\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" { (expression_statement "local_dc = FUN_00110b75(param_1,sVar2);" (assignment_expression "local_dc = FUN_00110b75(param_1,sVar2)" identifier = (call_expression "FUN_00110b75(param_1,sVar2)" identifier (argument_list "(param_1,sVar2)" ( identifier , identifier )))) ;) })) (if_statement "if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((uVar21 == 5) || (bVar26))" ( (binary_expression "(uVar21 == 5) || (bVar26)" (parenthesized_expression "(uVar21 == 5)" ( (binary_expression "uVar21 == 5" identifier == number_literal) )) || (parenthesized_expression "(bVar26)" ( identifier ))) )) (compound_statement "{\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" { (if_statement "if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" if (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" ( (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }" { (expression_statement "FUN_001207c0(lVar14,0x86,iVar10,local_dc);" (call_expression "FUN_001207c0(lVar14,0x86,iVar10,local_dc)" identifier (argument_list "(lVar14,0x86,iVar10,local_dc)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" { (expression_statement "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7)" identifier (argument_list "(lVar14,0x35,local_dc,iVar8,param_7)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) })) }) (else_clause "else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" else (compound_statement "{\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (if_statement "if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" if (parenthesized_expression "(lVar23 != local_b0)" ( (binary_expression "lVar23 != local_b0" identifier != identifier) )) (compound_statement "{\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" { (for_statement "for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" for ( ; (binary_expression "iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" identifier < (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ; (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ) (compound_statement "{\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" { (expression_statement "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));" (assignment_expression "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" identifier = (call_expression "FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" identifier (argument_list "(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" * (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" ( (binary_expression "*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2" (pointer_expression "*(long *)(local_b0 + 8)" * (cast_expression "(long *)(local_b0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 8)" ( (binary_expression "local_b0 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar13 * 2" (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) )))) ;) (expression_statement "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);" (call_expression "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" identifier (argument_list "(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" ( identifier , number_literal , identifier , (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "local_dc + iVar13" identifier + identifier) ))) ;) })) })) (if_statement "if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" { (expression_statement "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);" (assignment_expression "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" identifier = (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) )))) + (pointer_expression "*(int *)(lVar14 + 0x90)" * (cast_expression "(int *)(lVar14 + 0x90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x90)" ( (binary_expression "lVar14 + 0x90" identifier + number_literal) )))))) ;) (expression_statement "iVar13 = local_dc;" (assignment_expression "iVar13 = local_dc" identifier = identifier) ;) (if_statement "if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }" if (parenthesized_expression "((*(byte *)(lVar23 + 99) & 3) == 2)" ( (binary_expression "(*(byte *)(lVar23 + 99) & 3) == 2" (parenthesized_expression "(*(byte *)(lVar23 + 99) & 3)" ( (binary_expression "*(byte *)(lVar23 + 99) & 3" (pointer_expression "*(byte *)(lVar23 + 99)" * (cast_expression "(byte *)(lVar23 + 99)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 99)" ( (binary_expression "lVar23 + 99" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar13 = iVar9;\n                  }" { (expression_statement "iVar13 = iVar9;" (assignment_expression "iVar13 = iVar9" identifier = identifier) ;) })) (expression_statement "local_88 = 0x34;" (assignment_expression "local_88 = 0x34" identifier = number_literal) ;) (for_statement "for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" for ( (assignment_expression "iVar24 = 0" identifier = number_literal) ; (binary_expression "iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" identifier < (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) ))))) ; (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ) (compound_statement "{\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" { (expression_statement "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));" (assignment_expression "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" identifier = (call_expression "FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" identifier (argument_list "(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" ( identifier , (pointer_expression "*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" * (cast_expression "(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" ( (binary_expression "*(long *)(local_b0 + 0x40) + (long)iVar24 * 8" (pointer_expression "*(long *)(local_b0 + 0x40)" * (cast_expression "(long *)(local_b0 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x40)" ( (binary_expression "local_b0 + 0x40" identifier + number_literal) )))) + (binary_expression "(long)iVar24 * 8" (cast_expression "(long)iVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) )))) ;) (expression_statement "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;" (assignment_expression "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24" identifier = (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1 == iVar24" (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1" (pointer_expression "*(ushort *)(local_b0 + 0x5e)" * (cast_expression "(ushort *)(local_b0 + 0x5e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x5e)" ( (binary_expression "local_b0 + 0x5e" identifier + number_literal) )))) - number_literal) == identifier)) ;) (if_statement "if (bVar20) {\n                      local_8c = iVar8;\n                    }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                      local_8c = iVar8;\n                    }" { (expression_statement "local_8c = iVar8;" (assignment_expression "local_8c = iVar8" identifier = identifier) ;) })) (expression_statement "uVar12 = 0x35;" (assignment_expression "uVar12 = 0x35" identifier = number_literal) ;) (if_statement "if (!bVar20) {\n                      uVar12 = local_88;\n                    }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n                      uVar12 = local_88;\n                    }" { (expression_statement "uVar12 = local_88;" (assignment_expression "uVar12 = local_88" identifier = identifier) ;) })) (expression_statement "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));" (assignment_expression "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" identifier = (call_expression "FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" identifier (argument_list "(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" * (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" ( (binary_expression "*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2" (pointer_expression "*(long *)(local_b0 + 8)" * (cast_expression "(long *)(local_b0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 8)" ( (binary_expression "local_b0 + 8" identifier + number_literal) )))) + (binary_expression "(long)iVar24 * 2" (cast_expression "(long)iVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) )))) ;) (expression_statement "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);" (call_expression "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" identifier (argument_list "(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" ( identifier , identifier , (binary_expression "param_7 + 1 + (int)sVar7" (binary_expression "param_7 + 1" identifier + number_literal) + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , (binary_expression "iVar13 + iVar24" identifier + identifier) , identifier , number_literal ))) ;) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" identifier (argument_list "(lVar14,0x90)" ( identifier , number_literal ))) ;) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) })) })) }))) })) (if_statement "if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" if (parenthesized_expression "(uVar21 == 4)" ( (binary_expression "uVar21 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }" { (labeled_statement "LAB_0017ad29:\n              FUN_00120941(lVar14,param_10);" statement_identifier : (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" identifier (argument_list "(lVar14,param_10)" ( identifier , identifier ))) ;)) }) (else_clause "else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" else (compound_statement "{\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" { (if_statement "if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "((int)uVar21 < 5)" ( (binary_expression "(int)uVar21 < 5" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }" { (if_statement "if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" if (parenthesized_expression "(0 < (int)uVar21)" ( (binary_expression "0 < (int)uVar21" number_literal < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" { (expression_statement "FUN_0012834c(param_1,uVar21,lVar23);" (call_expression "FUN_0012834c(param_1,uVar21,lVar23)" identifier (argument_list "(param_1,uVar21,lVar23)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad47;" goto statement_identifier ;) })) }) (else_clause "else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" else (if_statement "if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" if (parenthesized_expression "(uVar21 == 6)" ( (binary_expression "uVar21 == 6" identifier == number_literal) )) (compound_statement "{\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" { (expression_statement "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);" (call_expression "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10)" identifier (argument_list "(param_1,param_13,param_2,lVar23,iVar10)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0017ad29;" goto statement_identifier ;) })))) (expression_statement "iVar13 = *(int *)(lVar14 + 0x90);" (assignment_expression "iVar13 = *(int *)(lVar14 + 0x90)" identifier = (pointer_expression "*(int *)(lVar14 + 0x90)" * (cast_expression "(int *)(lVar14 + 0x90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x90)" ( (binary_expression "lVar14 + 0x90" identifier + number_literal) ))))) ;) (if_statement "if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" { (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_b8 = local_b8 + 1;" (assignment_expression "local_b8 = local_b8 + 1" identifier = (binary_expression "local_b8 + 1" identifier + number_literal)) ;) })) (expression_statement "bVar20 = local_c0 != 0 && bVar26;" (assignment_expression "bVar20 = local_c0 != 0 && bVar26" identifier = (binary_expression "local_c0 != 0 && bVar26" (binary_expression "local_c0 != 0" identifier != number_literal) && identifier)) ;) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" { (expression_statement "FUN_00120894(lVar14,0x9f,param_4);" (call_expression "FUN_00120894(lVar14,0x9f,param_4)" identifier (argument_list "(lVar14,0x9f,param_4)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" identifier (argument_list "(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal , identifier , identifier ))) ;) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" { (expression_statement "FUN_00120894(lVar14,0xa0,param_4);" (call_expression "FUN_00120894(lVar14,0xa0,param_4)" identifier (argument_list "(lVar14,0xa0,param_4)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) (if_statement "if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" if (parenthesized_expression "(local_fc != 0)" ( (binary_expression "local_fc != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" { (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" identifier (argument_list "(lVar14,0x52,local_fc,1)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "uVar12 = FUN_0012083c(lVar14,0xb);" (assignment_expression "uVar12 = FUN_0012083c(lVar14,0xb)" identifier = (call_expression "FUN_0012083c(lVar14,0xb)" identifier (argument_list "(lVar14,0xb)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" identifier (argument_list "(lVar14,local_c4)" ( identifier , identifier ))) ;) (expression_statement "local_c4 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c4 = *(int *)((long)param_1 + 0x44) - 1" identifier = (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" * (cast_expression "(int *)((long)param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c4;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c4" (pointer_expression "*(uint *)((long)param_1 + 0x44)" * (cast_expression "(uint *)((long)param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x44)" ( (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" if (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" ( (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" * (cast_expression "(long *)(lVar23 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x48)" ( (binary_expression "lVar23 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" { (expression_statement "FUN_001207c0(lVar14,0x32,iVar22,local_c4);" (call_expression "FUN_001207c0(lVar14,0x32,iVar22,local_c4)" identifier (argument_list "(lVar14,0x32,iVar22,local_c4)" ( identifier , number_literal , identifier , identifier ))) ;) })) (for_statement "for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" for ( (assignment_expression "iVar22 = 0" identifier = number_literal) ; (binary_expression "0 < (iVar13 - iVar11) - iVar22" number_literal < (binary_expression "(iVar13 - iVar11) - iVar22" (parenthesized_expression "(iVar13 - iVar11)" ( (binary_expression "iVar13 - iVar11" identifier - identifier) )) - identifier)) ; (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ) (compound_statement "{\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" { (expression_statement "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);" (assignment_expression "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" identifier = (cast_expression "(byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010f4bb(lVar14,iVar11 + iVar22)" identifier (argument_list "(lVar14,iVar11 + iVar22)" ( identifier , (binary_expression "iVar11 + iVar22" identifier + identifier) ))))) ;) (expression_statement "lVar15 = *(long *)(pbVar17 + 0x10);" (assignment_expression "lVar15 = *(long *)(pbVar17 + 0x10)" identifier = (pointer_expression "*(long *)(pbVar17 + 0x10)" * (cast_expression "(long *)(pbVar17 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 0x10)" ( (binary_expression "pbVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar19 = *pbVar17;" (assignment_expression "bVar19 = *pbVar17" identifier = (pointer_expression "*pbVar17" * identifier)) ;) (if_statement "if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" if (parenthesized_expression "(bVar19 != 0x86)" ( (binary_expression "bVar19 != 0x86" identifier != number_literal) )) (compound_statement "{\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" { (expression_statement "uVar21 = local_c4;" (assignment_expression "uVar21 = local_c4" identifier = identifier) ;) (if_statement "if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" if (parenthesized_expression "(((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0)" ( (binary_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0" (parenthesized_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1)" ( (binary_expression "(&DAT_00196340)[(int)(uint)bVar19] & 1" (subscript_expression "(&DAT_00196340)[(int)(uint)bVar19]" (parenthesized_expression "(&DAT_00196340)" ( (pointer_expression "&DAT_00196340" & identifier) )) [ (cast_expression "(int)(uint)bVar19" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" { (expression_statement "uVar21 = *(uint *)(pbVar17 + 8);" (assignment_expression "uVar21 = *(uint *)(pbVar17 + 8)" identifier = (pointer_expression "*(uint *)(pbVar17 + 8)" * (cast_expression "(uint *)(pbVar17 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 8)" ( (binary_expression "pbVar17 + 8" identifier + number_literal) ))))) ;) })) (if_statement "if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" if (parenthesized_expression "(pbVar17[1] == 0xfd)" ( (binary_expression "pbVar17[1] == 0xfd" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" { (expression_statement "local_48 = (int)lVar15;" (assignment_expression "local_48 = (int)lVar15" identifier = (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar15 = (long)local_48;" (assignment_expression "lVar15 = (long)local_48" identifier = (cast_expression "(long)local_48" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) })) (expression_statement "uVar1 = *(undefined2 *)(pbVar17 + 2);" (assignment_expression "uVar1 = *(undefined2 *)(pbVar17 + 2)" identifier = (pointer_expression "*(undefined2 *)(pbVar17 + 2)" * (cast_expression "(undefined2 *)(pbVar17 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 2)" ( (binary_expression "pbVar17 + 2" identifier + number_literal) ))))) ;) (expression_statement "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);" (call_expression "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" identifier (argument_list "(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" ( identifier , identifier , (pointer_expression "*(undefined4 *)(pbVar17 + 4)" * (cast_expression "(undefined4 *)(pbVar17 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(pbVar17 + 0xc)" * (cast_expression "(undefined4 *)(pbVar17 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 0xc)" ( (binary_expression "pbVar17 + 0xc" identifier + number_literal) )))) , identifier , (cast_expression "(int)(char)pbVar17[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar17[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "FUN_0010f49a(lVar14,uVar1);" (call_expression "FUN_0010f49a(lVar14,uVar1)" identifier (argument_list "(lVar14,uVar1)" ( identifier , identifier ))) ;) })) })) (expression_statement "FUN_0012834c(param_1,2,lVar23);" (call_expression "FUN_0012834c(param_1,2,lVar23)" identifier (argument_list "(param_1,2,lVar23)" ( identifier , number_literal , identifier ))) ;) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" identifier (argument_list "(lVar14,uVar12)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" identifier = number_literal) ;) })) }))) (labeled_statement "LAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" statement_identifier : (if_statement "if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" if (parenthesized_expression "(lVar23 == local_d0)" ( (binary_expression "lVar23 == local_d0" identifier == identifier) )) (compound_statement "{\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }" { (expression_statement "FUN_00120941(lVar14,local_b4 + 1);" (call_expression "FUN_00120941(lVar14,local_b4 + 1)" identifier (argument_list "(lVar14,local_b4 + 1)" ( identifier , (binary_expression "local_b4 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0010f4fb(lVar14,local_84);" (call_expression "FUN_0010f4fb(lVar14,local_84)" identifier (argument_list "(lVar14,local_84)" ( identifier , identifier ))) ;) }) (else_clause "else {\n              FUN_00120437(lVar14,iVar8);\n            }" else (compound_statement "{\n              FUN_00120437(lVar14,iVar8);\n            }" { (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" identifier (argument_list "(lVar14,iVar8)" ( identifier , identifier ))) ;) })))) (if_statement "if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" if (parenthesized_expression "(local_dc != iVar9)" ( (binary_expression "local_dc != iVar9" identifier != identifier) )) (compound_statement "{\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" { (expression_statement "FUN_00110ba3(param_1,local_dc,sVar2);" (call_expression "FUN_00110ba3(param_1,local_dc,sVar2)" identifier (argument_list "(param_1,local_dc,sVar2)" ( identifier , identifier , identifier ))) ;) })) }))) }))) }))) })) (expression_statement "lVar23 = *(long *)(lVar23 + 0x28);" (assignment_expression "lVar23 = *(long *)(lVar23 + 0x28)" identifier = (pointer_expression "*(long *)(lVar23 + 0x28)" * (cast_expression "(long *)(lVar23 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 0x28)" ( (binary_expression "lVar23 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_a8 = local_a8 + 1;" (assignment_expression "local_a8 = local_a8 + 1" identifier = (binary_expression "local_a8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 (sized_type_specifier long) 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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 (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (do_statement do (compound_statement { (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) )))) ;) (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 (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 (sized_type_specifier long)) ) IDENT) + LIT) ))))) != (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ))) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })))) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (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 IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) })) (labeled_statement statement_identifier : (expression_statement ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) || (parenthesized_expression ( IDENT ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (unary_expression ~ IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < (pointer_expression * IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) ))))) ;) (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 ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , LIT , LIT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) })) }))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) }))) (labeled_statement statement_identifier : (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 (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (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 (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , LIT , LIT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;)) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;))) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement default : (expression_statement (assignment_expression IDENT = LIT) ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;)) })) })))) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , 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 ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ))) , (unary_expression ! IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (unary_expression ~ IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (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) ))))) ; (assignment_expression IDENT = (binary_expression IDENT + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (unary_expression ~ IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (binary_expression IDENT + IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression IDENT + IDENT) ))) ;) }))))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT && (binary_expression IDENT == (char_literal ' escape_sequence '))) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )))) & LIT) )) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( IDENT ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (for_statement for ( ; (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) ))))) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (binary_expression IDENT + IDENT) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (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) ))))) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT , (binary_expression IDENT + IDENT) , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) && IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , LIT , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) })) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression LIT < (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ; (assignment_expression IDENT = (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 , (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , 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 == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) }))) }))) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)\n\n{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00179cee(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" (identifier "FUN_00179cee") (parameter_list "(long *param_1,long *param_2,long param_3,undefined4 param_4,int param_5,\n                 uint param_6,int param_7,char param_8,byte param_9,undefined4 param_10,\n                 undefined4 *param_11,long param_12,long *param_13)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "char param_8" (primitive_type "char") (identifier "param_8")) (, ",") (parameter_declaration "byte param_9" (type_identifier "byte") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "undefined4 *param_11" (type_identifier "undefined4") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) (, ",") (parameter_declaration "long param_12" (sized_type_specifier "long" (long "long")) (identifier "param_12")) (, ",") (parameter_declaration "long *param_13" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_13" (* "*") (identifier "param_13"))) () ")"))) (compound_statement "{\n  undefined2 uVar1;\n  short sVar2;\n  long lVar3;\n  int *piVar4;\n  bool bVar5;\n  short sVar6;\n  short sVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  long lVar14;\n  long lVar15;\n  undefined8 uVar16;\n  byte *pbVar17;\n  byte bVar18;\n  byte bVar19;\n  bool bVar20;\n  uint uVar21;\n  int iVar22;\n  long lVar23;\n  int iVar24;\n  undefined8 *puVar25;\n  bool bVar26;\n  bool bVar27;\n  int local_100;\n  uint local_fc;\n  int local_e4;\n  int local_dc;\n  long local_d0;\n  uint local_c8;\n  uint local_c4;\n  long local_c0;\n  uint local_b8;\n  int local_b4;\n  long local_b0;\n  int local_a8;\n  int local_90;\n  int local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  byte local_74;\n  int local_48;\n  \n  local_74 = param_9;\n  bVar26 = param_7 != 0;\n  lVar3 = *param_1;\n  lVar14 = FUN_00121a1e();\n  uVar21 = *(uint *)(param_2 + 8);\n  if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }\n  if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }\n  piVar4 = (int *)param_2[6];\n  bVar5 = false;\n  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }\n  if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }\n  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }\nLAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }\n  iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n  *(int *)((long)param_1 + 0x44) = iVar8;\n  bVar19 = local_74;\n  if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }\n  if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }\nLAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }\n  FUN_00120437(lVar14,iVar8);\n  local_90 = local_100;\n  if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }\nLAB_0017a4e9:\n  lVar23 = param_2[2];\n  local_c4 = local_c8;\n  local_84 = 0;\n  local_a8 = 0;\n  do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );\n}" ({ "{") (declaration "undefined2 uVar1;" (type_identifier "undefined2") (identifier "uVar1") (; ";")) (declaration "short sVar2;" (sized_type_specifier "short" (short "short")) (identifier "sVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "short sVar6;" (sized_type_specifier "short" (short "short")) (identifier "sVar6") (; ";")) (declaration "short sVar7;" (sized_type_specifier "short" (short "short")) (identifier "sVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "byte bVar18;" (type_identifier "byte") (identifier "bVar18") (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "long lVar23;" (sized_type_specifier "long" (long "long")) (identifier "lVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "undefined8 *puVar25;" (type_identifier "undefined8") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "bool bVar26;" (primitive_type "bool") (identifier "bVar26") (; ";")) (declaration "bool bVar27;" (primitive_type "bool") (identifier "bVar27") (; ";")) (declaration "int local_100;" (primitive_type "int") (identifier "local_100") (; ";")) (declaration "uint local_fc;" (type_identifier "uint") (identifier "local_fc") (; ";")) (declaration "int local_e4;" (primitive_type "int") (identifier "local_e4") (; ";")) (declaration "int local_dc;" (primitive_type "int") (identifier "local_dc") (; ";")) (declaration "long local_d0;" (sized_type_specifier "long" (long "long")) (identifier "local_d0") (; ";")) (declaration "uint local_c8;" (type_identifier "uint") (identifier "local_c8") (; ";")) (declaration "uint local_c4;" (type_identifier "uint") (identifier "local_c4") (; ";")) (declaration "long local_c0;" (sized_type_specifier "long" (long "long")) (identifier "local_c0") (; ";")) (declaration "uint local_b8;" (type_identifier "uint") (identifier "local_b8") (; ";")) (declaration "int local_b4;" (primitive_type "int") (identifier "local_b4") (; ";")) (declaration "long local_b0;" (sized_type_specifier "long" (long "long")) (identifier "local_b0") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "undefined4 local_84;" (type_identifier "undefined4") (identifier "local_84") (; ";")) (declaration "byte local_74;" (type_identifier "byte") (identifier "local_74") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (expression_statement "local_74 = param_9;" (assignment_expression "local_74 = param_9" (identifier "local_74") (= "=") (identifier "param_9")) (; ";")) (expression_statement "bVar26 = param_7 != 0;" (assignment_expression "bVar26 = param_7 != 0" (identifier "bVar26") (= "=") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" (identifier "lVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "lVar14 = FUN_00121a1e();" (assignment_expression "lVar14 = FUN_00121a1e()" (identifier "lVar14") (= "=") (call_expression "FUN_00121a1e()" (identifier "FUN_00121a1e") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar21 = *(uint *)(param_2 + 8);" (assignment_expression "uVar21 = *(uint *)(param_2 + 8)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((uVar21 & 0x80) == 0) {\n    sVar2 = 1;\n    local_b0 = 0;\n  }\n  else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" (if "if") (parenthesized_expression "((uVar21 & 0x80) == 0)" (( "(") (binary_expression "(uVar21 & 0x80) == 0" (parenthesized_expression "(uVar21 & 0x80)" (( "(") (binary_expression "uVar21 & 0x80" (identifier "uVar21") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    sVar2 = 1;\n    local_b0 = 0;\n  }" ({ "{") (expression_statement "sVar2 = 1;" (assignment_expression "sVar2 = 1" (identifier "sVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" (identifier "local_b0") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" (else "else") (compound_statement "{\n    local_b0 = FUN_00111247(param_2);\n    sVar2 = *(short *)(local_b0 + 0x5e);\n  }" ({ "{") (expression_statement "local_b0 = FUN_00111247(param_2);" (assignment_expression "local_b0 = FUN_00111247(param_2)" (identifier "local_b0") (= "=") (call_expression "FUN_00111247(param_2)" (identifier "FUN_00111247") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "sVar2 = *(short *)(local_b0 + 0x5e);" (assignment_expression "sVar2 = *(short *)(local_b0 + 0x5e)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(local_b0 + 0x5e)" (* "*") (cast_expression "(short *)(local_b0 + 0x5e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x5e)" (( "(") (binary_expression "local_b0 + 0x5e" (identifier "local_b0") (+ "+") (number_literal "0x5e")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((uVar21 >> 0xb & 1) != 0) {\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" (if "if") (parenthesized_expression "((uVar21 >> 0xb & 1) != 0)" (( "(") (binary_expression "(uVar21 >> 0xb & 1) != 0" (parenthesized_expression "(uVar21 >> 0xb & 1)" (( "(") (binary_expression "uVar21 >> 0xb & 1" (binary_expression "uVar21 >> 0xb" (identifier "uVar21") (>> ">>") (number_literal "0xb")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    sVar7 = *(short *)((long)param_2 + 0x46);\n    local_e4 = 0;\n    local_fc = 0;\n    bVar5 = false;\n    do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );\n  }" ({ "{") (expression_statement "sVar7 = *(short *)((long)param_2 + 0x46);" (assignment_expression "sVar7 = *(short *)((long)param_2 + 0x46)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)((long)param_2 + 0x46)" (* "*") (cast_expression "(short *)((long)param_2 + 0x46)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x46)" (( "(") (binary_expression "(long)param_2 + 0x46" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x46")) () ")"))))) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" (identifier "local_fc") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (do_statement "do {\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    } while( true );" (do "do") (compound_statement "{\n      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }\n      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;\n      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }\n      bVar5 = true;\n    }" ({ "{") (for_statement "for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" (for "for") (( "(") (assignment_expression "lVar23 = 0" (identifier "lVar23") (= "=") (number_literal "0")) (; ";") (binary_expression "(int)lVar23 < (int)sVar7" (cast_expression "(int)lVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar23")) (< "<") (cast_expression "(int)sVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar7"))) (; ";") (assignment_expression "lVar23 = lVar23 + 1" (identifier "lVar23") (= "=") (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);\n        bVar19 = *(byte *)(puVar25 + 3);\n        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }\nLAB_00179e5a:\n      }" ({ "{") (expression_statement "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);" (assignment_expression "puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1])" (identifier "puVar25") (= "=") (cast_expression "(undefined8 *)(lVar23 * 0x20 + param_2[1])" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 * 0x20 + param_2[1])" (( "(") (binary_expression "lVar23 * 0x20 + param_2[1]" (binary_expression "lVar23 * 0x20" (identifier "lVar23") (* "*") (number_literal "0x20")) (+ "+") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) () ")")))) (; ";")) (expression_statement "bVar19 = *(byte *)(puVar25 + 3);" (assignment_expression "bVar19 = *(byte *)(puVar25 + 3)" (identifier "bVar19") (= "=") (pointer_expression "*(byte *)(puVar25 + 3)" (* "*") (cast_expression "(byte *)(puVar25 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 3)" (( "(") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" (if "if") (parenthesized_expression "((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23))" (( "(") (binary_expression "(bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" (parenthesized_expression "(bVar19 != 0)" (( "(") (binary_expression "bVar19 != 0" (identifier "bVar19") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)" (( "(") (binary_expression "(int)*(short *)((long)param_2 + 0x44) != (int)lVar23" (cast_expression "(int)*(short *)((long)param_2 + 0x44)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((long)param_2 + 0x44)" (* "*") (cast_expression "(short *)((long)param_2 + 0x44)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x44)" (( "(") (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x44")) () ")"))))) (!= "!=") (cast_expression "(int)lVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar23"))) () ")"))) () ")")) (compound_statement "{\n          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;\n          if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }\n        }" ({ "{") (expression_statement "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;" (assignment_expression "uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60" (identifier "uVar21") (= "=") (binary_expression "*(uint *)((long)puVar25 + 0x1c) & 0x60" (pointer_expression "*(uint *)((long)puVar25 + 0x1c)" (* "*") (cast_expression "(uint *)((long)puVar25 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar25 + 0x1c)" (( "(") (binary_expression "(long)puVar25 + 0x1c" (cast_expression "(long)puVar25" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar25")) (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "0x60"))) (; ";")) (if_statement "if ((uVar21 == 0) || (bVar5)) {\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }\n          else {\n            local_e4 = local_e4 + 1;\n          }" (if "if") (parenthesized_expression "((uVar21 == 0) || (bVar5))" (( "(") (binary_expression "(uVar21 == 0) || (bVar5)" (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")"))) () ")")) (compound_statement "{\n            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }\n          }" ({ "{") (if_statement "if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" (if "if") (parenthesized_expression "(((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0))" (( "(") (binary_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)" (parenthesized_expression "((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4)))" (( "(") (binary_expression "(param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))" (parenthesized_expression "(param_12 == 0)" (( "(") (binary_expression "param_12 == 0" (identifier "param_12") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(-1 < *(int *)(param_12 + lVar23 * 4))" (( "(") (binary_expression "-1 < *(int *)(param_12 + lVar23 * 4)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(param_12 + lVar23 * 4)" (* "*") (cast_expression "(int *)(param_12 + lVar23 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + lVar23 * 4)" (( "(") (binary_expression "param_12 + lVar23 * 4" (identifier "param_12") (+ "+") (binary_expression "lVar23 * 4" (identifier "lVar23") (* "*") (number_literal "4"))) () ")"))))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              bVar18 = param_9;\n              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }\n              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);\n              iVar8 = param_6 + 1 + (int)sVar6;\n              if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }\n            }" ({ "{") (expression_statement "bVar18 = param_9;" (assignment_expression "bVar18 = param_9" (identifier "bVar18") (= "=") (identifier "param_9")) (; ";")) (if_statement "if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }\n              else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" (if "if") (parenthesized_expression "((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb))" (( "(") (binary_expression "(param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)" (parenthesized_expression "(param_9 == 0xb)" (( "(") (binary_expression "param_9 == 0xb" (identifier "param_9") (== "==") (number_literal "0xb")) () ")")) (&& "&&") (parenthesized_expression "(bVar18 = bVar19, bVar19 == 0xb)" (( "(") (comma_expression "bVar18 = bVar19, bVar19 == 0xb" (assignment_expression "bVar18 = bVar19" (identifier "bVar18") (= "=") (identifier "bVar19")) (, ",") (binary_expression "bVar19 == 0xb" (identifier "bVar19") (== "==") (number_literal "0xb"))) () ")"))) () ")")) (compound_statement "{\n                bVar18 = 2;\nLAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;\n              }" ({ "{") (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" (identifier "bVar18") (= "=") (number_literal "2")) (; ";")) (labeled_statement "LAB_00179efc:\n                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" (statement_identifier "LAB_00179efc") (: ":") (if_statement "if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;" (if "if") (parenthesized_expression "((bVar5) && (uVar21 == 0))" (( "(") (binary_expression "(bVar5) && (uVar21 == 0)" (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (&& "&&") (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00179e5a;" (goto "goto") (statement_identifier "LAB_00179e5a") (; ";")))) (} "}")) (else_clause "else {\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" (else "else") (compound_statement "{\n                if (bVar18 != 5) goto LAB_00179efc;\n                if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }\n              }" ({ "{") (if_statement "if (bVar18 != 5) goto LAB_00179efc;" (if "if") (parenthesized_expression "(bVar18 != 5)" (( "(") (binary_expression "bVar18 != 5" (identifier "bVar18") (!= "!=") (number_literal "5")) () ")")) (goto_statement "goto LAB_00179efc;" (goto "goto") (statement_identifier "LAB_00179efc") (; ";"))) (if_statement "if (bVar5) {\n                  bVar18 = 2;\n                }\n                else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" (if "if") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (compound_statement "{\n                  bVar18 = 2;\n                }" ({ "{") (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" (identifier "bVar18") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" (else "else") (if_statement "if (puVar25[1] == 0) {\n                  bVar18 = 2;\n                }" (if "if") (parenthesized_expression "(puVar25[1] == 0)" (( "(") (binary_expression "puVar25[1] == 0" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  bVar18 = 2;\n                }" ({ "{") (expression_statement "bVar18 = 2;" (assignment_expression "bVar18 = 2" (identifier "bVar18") (= "=") (number_literal "2")) (; ";")) (} "}"))))) (} "}")))) (expression_statement "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);" (assignment_expression "sVar6 = FUN_001112f9(param_2,(int)(short)lVar23)" (identifier "sVar6") (= "=") (call_expression "FUN_001112f9(param_2,(int)(short)lVar23)" (identifier "FUN_001112f9") (argument_list "(param_2,(int)(short)lVar23)" (( "(") (identifier "param_2") (, ",") (cast_expression "(int)(short)lVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)lVar23" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "lVar23"))) () ")")))) (; ";")) (expression_statement "iVar8 = param_6 + 1 + (int)sVar6;" (assignment_expression "iVar8 = param_6 + 1 + (int)sVar6" (identifier "iVar8") (= "=") (binary_expression "param_6 + 1 + (int)sVar6" (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6")))) (; ";")) (if_statement "if (bVar18 == 2) {\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }\n              else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" (if "if") (parenthesized_expression "(bVar18 == 2)" (( "(") (binary_expression "bVar18 == 2" (identifier "bVar18") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                FUN_001115a2(param_1);\nLAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);\n                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);\n                FUN_0011aa64(lVar14,uVar16,0xfffffff9);\n                FUN_0010f49a(lVar14,1);\n              }" ({ "{") (expression_statement "FUN_001115a2(param_1);" (call_expression "FUN_001115a2(param_1)" (identifier "FUN_001115a2") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (labeled_statement "LAB_00179f5d:\n                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" (statement_identifier "LAB_00179f5d") (: ":") (expression_statement "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);" (assignment_expression "uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" (identifier "uVar16") (= "=") (call_expression "FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25)" (identifier "FUN_00130001") (argument_list "(lVar3,"%s.%s",*param_2,*puVar25)" (( "(") (identifier "lVar3") (, ",") (string_literal ""%s.%s"" (" """) (string_content "%s.%s") (" """)) (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) () ")")))) (; ";"))) (expression_statement "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);" (call_expression "FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8)" (identifier "FUN_00120767") (argument_list "(lVar14,0x43,0x513,bVar18,iVar8)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x43") (, ",") (number_literal "0x513") (, ",") (identifier "bVar18") (, ",") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "FUN_0011aa64(lVar14,uVar16,0xfffffff9);" (call_expression "FUN_0011aa64(lVar14,uVar16,0xfffffff9)" (identifier "FUN_0011aa64") (argument_list "(lVar14,uVar16,0xfffffff9)" (( "(") (identifier "lVar14") (, ",") (identifier "uVar16") (, ",") (number_literal "0xfffffff9") () ")"))) (; ";")) (expression_statement "FUN_0010f49a(lVar14,1);" (call_expression "FUN_0010f49a(lVar14,1)" (identifier "FUN_0010f49a") (argument_list "(lVar14,1)" (( "(") (identifier "lVar14") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" (else "else") (compound_statement "{\n                if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }\n                FUN_001207c0(lVar14,0x32,iVar8,param_10);\n              }" ({ "{") (if_statement "if (bVar18 < 3) {\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }\n                else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" (if "if") (parenthesized_expression "(bVar18 < 3)" (( "(") (binary_expression "bVar18 < 3" (identifier "bVar18") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n                  if (bVar18 == 1) goto LAB_00179f5d;\n                }" ({ "{") (if_statement "if (bVar18 == 1) goto LAB_00179f5d;" (if "if") (parenthesized_expression "(bVar18 == 1)" (( "(") (binary_expression "bVar18 == 1" (identifier "bVar18") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00179f5d;" (goto "goto") (statement_identifier "LAB_00179f5d") (; ";"))) (} "}")) (else_clause "else {\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" (else "else") (compound_statement "{\n                  if (bVar18 == 3) goto LAB_00179f5d;\n                  if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }\n                }" ({ "{") (if_statement "if (bVar18 == 3) goto LAB_00179f5d;" (if "if") (parenthesized_expression "(bVar18 == 3)" (( "(") (binary_expression "bVar18 == 3" (identifier "bVar18") (== "==") (number_literal "3")) () ")")) (goto_statement "goto LAB_00179f5d;" (goto "goto") (statement_identifier "LAB_00179f5d") (; ";"))) (if_statement "if (bVar18 == 5) {\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" (if "if") (parenthesized_expression "(bVar18 == 5)" (( "(") (binary_expression "bVar18 == 5" (identifier "bVar18") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);\n                    local_fc = local_fc + 1;\n                    FUN_0015ba64(param_1,puVar25[1],iVar8);\n                    FUN_0010f4fb(lVar14,uVar12);\n                    goto LAB_00179e5a;\n                  }" ({ "{") (expression_statement "uVar12 = FUN_00120894(lVar14,0x33,iVar8);" (assignment_expression "uVar12 = FUN_00120894(lVar14,0x33,iVar8)" (identifier "uVar12") (= "=") (call_expression "FUN_00120894(lVar14,0x33,iVar8)" (identifier "FUN_00120894") (argument_list "(lVar14,0x33,iVar8)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x33") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "local_fc = local_fc + 1;" (assignment_expression "local_fc = local_fc + 1" (identifier "local_fc") (= "=") (binary_expression "local_fc + 1" (identifier "local_fc") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0015ba64(param_1,puVar25[1],iVar8);" (call_expression "FUN_0015ba64(param_1,puVar25[1],iVar8)" (identifier "FUN_0015ba64") (argument_list "(param_1,puVar25[1],iVar8)" (( "(") (identifier "param_1") (, ",") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,uVar12)" (( "(") (identifier "lVar14") (, ",") (identifier "uVar12") () ")"))) (; ";")) (goto_statement "goto LAB_00179e5a;" (goto "goto") (statement_identifier "LAB_00179e5a") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_001207c0(lVar14,0x32,iVar8,param_10);" (call_expression "FUN_001207c0(lVar14,0x32,iVar8,param_10)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x32,iVar8,param_10)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x32") (, ",") (identifier "iVar8") (, ",") (identifier "param_10") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n            local_e4 = local_e4 + 1;\n          }" (else "else") (compound_statement "{\n            local_e4 = local_e4 + 1;\n          }" ({ "{") (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"))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_00179e5a:" (statement_identifier "LAB_00179e5a") (: ":") (expression_statement "" (; ""))) (} "}"))) (if_statement "if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;" (if "if") (parenthesized_expression "((local_fc == 0 && local_e4 == 0) || (bVar5))" (( "(") (binary_expression "(local_fc == 0 && local_e4 == 0) || (bVar5)" (parenthesized_expression "(local_fc == 0 && local_e4 == 0)" (( "(") (binary_expression "local_fc == 0 && local_e4 == 0" (binary_expression "local_fc == 0" (identifier "local_fc") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_e4 == 0" (identifier "local_e4") (== "==") (number_literal "0"))) () ")")) (|| "||") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" (if "if") (parenthesized_expression "((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0))" (( "(") (binary_expression "(0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)" (parenthesized_expression "(0 < (int)local_fc)" (( "(") (binary_expression "0 < (int)local_fc" (number_literal "0") (< "<") (cast_expression "(int)local_fc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_fc"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x60) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 8) & 0x60) != 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x60)" (( "(") (binary_expression "*(byte *)(param_2 + 8) & 0x60" (pointer_expression "*(byte *)(param_2 + 8)" (* "*") (cast_expression "(byte *)(param_2 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        FUN_0015bd19(param_1,param_6 + 1,param_2);\n      }" ({ "{") (expression_statement "FUN_0015bd19(param_1,param_6 + 1,param_2);" (call_expression "FUN_0015bd19(param_1,param_6 + 1,param_2)" (identifier "FUN_0015bd19") (argument_list "(param_1,param_6 + 1,param_2)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "piVar4 = (int *)param_2[6];" (assignment_expression "piVar4 = (int *)param_2[6]" (identifier "piVar4") (= "=") (cast_expression "(int *)param_2[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (if_statement "if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" (if "if") (parenthesized_expression "((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0))" (( "(") (binary_expression "(piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x31) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 2)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x31) & 2" (pointer_expression "*(byte *)(lVar3 + 0x31)" (* "*") (cast_expression "(byte *)(lVar3 + 0x31)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x31)" (( "(") (binary_expression "lVar3 + 0x31" (identifier "lVar3") (+ "+") (number_literal "0x31")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(uint *)(param_1 + 8) = ~param_6;\n    bVar19 = 2;\n    if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }\n    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }\n    *(undefined4 *)(param_1 + 8) = 0;\n  }" ({ "{") (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (unary_expression "~param_6" (~ "~") (identifier "param_6"))) (; ";")) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_9 != 0xb) {\n      bVar19 = param_9;\n    }" (if "if") (parenthesized_expression "(param_9 != 0xb)" (( "(") (binary_expression "param_9 != 0xb" (identifier "param_9") (!= "!=") (number_literal "0xb")) () ")")) (compound_statement "{\n      bVar19 = param_9;\n    }" ({ "{") (expression_statement "bVar19 = param_9;" (assignment_expression "bVar19 = param_9" (identifier "bVar19") (= "=") (identifier "param_9")) (; ";")) (} "}"))) (for_statement "for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" (for "for") (( "(") (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";") (binary_expression "local_100 < *piVar4" (identifier "local_100") (< "<") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";") (assignment_expression "local_100 = local_100 + 1" (identifier "local_100") (= "=") (binary_expression "local_100 + 1" (identifier "local_100") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);\n      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }\n    }" ({ "{") (expression_statement "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);" (assignment_expression "uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" (* "*") (cast_expression "(undefined8 *)(piVar4 + (long)local_100 * 6 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 2)" (( "(") (binary_expression "piVar4 + (long)local_100 * 6 + 2" (binary_expression "piVar4 + (long)local_100 * 6" (identifier "piVar4") (+ "+") (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_100")) (* "*") (number_literal "6"))) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" (if "if") (parenthesized_expression "((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0))" (( "(") (binary_expression "(param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" (parenthesized_expression "(param_12 == 0)" (( "(") (binary_expression "param_12 == 0" (identifier "param_12") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)" (( "(") (comma_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0" (assignment_expression "iVar8 = FUN_001174e9(uVar16,param_12,param_8)" (identifier "iVar8") (= "=") (call_expression "FUN_001174e9(uVar16,param_12,param_8)" (identifier "FUN_001174e9") (argument_list "(uVar16,param_12,param_8)" (( "(") (identifier "uVar16") (, ",") (identifier "param_12") (, ",") (identifier "param_8") () ")")))) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        uVar16 = FUN_00135319(lVar3,uVar16,0);\n        if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }\n        FUN_0011c4af(lVar3,uVar16);\n        if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }\n        FUN_00120437(lVar14,iVar8);\n        bVar5 = true;\n      }" ({ "{") (if_statement "if (!bVar5) {\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" (if "if") (parenthesized_expression "(!bVar5)" (( "(") (unary_expression "!bVar5" (! "!") (identifier "bVar5")) () ")")) (compound_statement "{\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n        }" ({ "{") (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" (identifier "FUN_0013c76e") (argument_list "(lVar14,param_2,param_6 + 1)" (( "(") (identifier "lVar14") (, ",") (identifier "param_2") (, ",") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" (identifier "iVar8") (= "=") (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "uVar16 = FUN_00135319(lVar3,uVar16,0);" (assignment_expression "uVar16 = FUN_00135319(lVar3,uVar16,0)" (identifier "uVar16") (= "=") (call_expression "FUN_00135319(lVar3,uVar16,0)" (identifier "FUN_00135319") (argument_list "(lVar3,uVar16,0)" (( "(") (identifier "lVar3") (, ",") (identifier "uVar16") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (*(char *)(lVar3 + 0x61) == '\0') {\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" (if "if") (parenthesized_expression "(*(char *)(lVar3 + 0x61) == '\0')" (( "(") (binary_expression "*(char *)(lVar3 + 0x61) == '\0'" (pointer_expression "*(char *)(lVar3 + 0x61)" (* "*") (cast_expression "(char *)(lVar3 + 0x61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x61)" (( "(") (binary_expression "lVar3 + 0x61" (identifier "lVar3") (+ "+") (number_literal "0x61")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          FUN_00159eda(param_1,uVar16,iVar8,0x10);\n        }" ({ "{") (expression_statement "FUN_00159eda(param_1,uVar16,iVar8,0x10);" (call_expression "FUN_00159eda(param_1,uVar16,iVar8,0x10)" (identifier "FUN_00159eda") (argument_list "(param_1,uVar16,iVar8,0x10)" (( "(") (identifier "param_1") (, ",") (identifier "uVar16") (, ",") (identifier "iVar8") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0011c4af(lVar3,uVar16);" (call_expression "FUN_0011c4af(lVar3,uVar16)" (identifier "FUN_0011c4af") (argument_list "(lVar3,uVar16)" (( "(") (identifier "lVar3") (, ",") (identifier "uVar16") () ")"))) (; ";")) (if_statement "if (bVar19 == 4) {\n          FUN_00120941(lVar14,param_10);\n        }\n        else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" (if "if") (parenthesized_expression "(bVar19 == 4)" (( "(") (binary_expression "bVar19 == 4" (identifier "bVar19") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          FUN_00120941(lVar14,param_10);\n        }" ({ "{") (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" (identifier "FUN_00120941") (argument_list "(lVar14,param_10)" (( "(") (identifier "lVar14") (, ",") (identifier "param_10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" (else "else") (compound_statement "{\n          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);\n          if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }\n          if (bVar19 == 5) {\n            bVar19 = 2;\n          }\n          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);\n        }" ({ "{") (expression_statement "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);" (assignment_expression "lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(piVar4 + (long)local_100 * 6 + 4)" (* "*") (cast_expression "(long *)(piVar4 + (long)local_100 * 6 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + (long)local_100 * 6 + 4)" (( "(") (binary_expression "piVar4 + (long)local_100 * 6 + 4" (binary_expression "piVar4 + (long)local_100 * 6" (identifier "piVar4") (+ "+") (binary_expression "(long)local_100 * 6" (cast_expression "(long)local_100" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_100")) (* "*") (number_literal "6"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (lVar23 == 0) {\n            lVar23 = *param_2;\n          }" (if "if") (parenthesized_expression "(lVar23 == 0)" (( "(") (binary_expression "lVar23 == 0" (identifier "lVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            lVar23 = *param_2;\n          }" ({ "{") (expression_statement "lVar23 = *param_2;" (assignment_expression "lVar23 = *param_2" (identifier "lVar23") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (if_statement "if (bVar19 == 5) {\n            bVar19 = 2;\n          }" (if "if") (parenthesized_expression "(bVar19 == 5)" (( "(") (binary_expression "bVar19 == 5" (identifier "bVar19") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n            bVar19 = 2;\n          }" ({ "{") (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";")) (} "}"))) (expression_statement "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);" (call_expression "FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3)" (identifier "FUN_00121c62") (argument_list "(param_1,0x113,bVar19,lVar23,0,3)" (( "(") (identifier "param_1") (, ",") (number_literal "0x113") (, ",") (identifier "bVar19") (, ",") (identifier "lVar23") (, ",") (number_literal "0") (, ",") (number_literal "3") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (param_13 == (long *)0x0) {\n    local_b4 = 0;\n    local_d0 = 0;\n  }\n  else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" (if "if") (parenthesized_expression "(param_13 == (long *)0x0)" (( "(") (binary_expression "param_13 == (long *)0x0" (identifier "param_13") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n  }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" (identifier "local_d0") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" (else "else") (if_statement "if (*param_13 == 0) {\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }\n  else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" (if "if") (parenthesized_expression "(*param_13 == 0)" (( "(") (binary_expression "*param_13 == 0" (pointer_expression "*param_13" (* "*") (identifier "param_13")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_b4 = 0;\n    local_d0 = 0;\n    param_13 = (long *)0x0;\n    local_74 = 4;\n  }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = 0;" (assignment_expression "local_d0 = 0" (identifier "local_d0") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_13 = (long *)0x0;" (assignment_expression "param_13 = (long *)0x0" (identifier "param_13") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_74 = 4;" (assignment_expression "local_74 = 4" (identifier "local_74") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" (else "else") (compound_statement "{\n    local_d0 = param_13[4];\n    local_b4 = 0;\n    if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }\n  }" ({ "{") (expression_statement "local_d0 = param_13[4];" (assignment_expression "local_d0 = param_13[4]" (identifier "local_d0") (= "=") (subscript_expression "param_13[4]" (identifier "param_13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_d0 != 0) {\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" (if "if") (parenthesized_expression "(local_d0 != 0)" (( "(") (binary_expression "local_d0 != 0" (identifier "local_d0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_b4 = FUN_0012083c(lVar14,0xb);\n    }" ({ "{") (expression_statement "local_b4 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_b4 = FUN_0012083c(lVar14,0xb)" (identifier "local_b4") (= "=") (call_expression "FUN_0012083c(lVar14,0xb)" (identifier "FUN_0012083c") (argument_list "(lVar14,0xb)" (( "(") (identifier "lVar14") (, ",") (number_literal "0xb") () ")")))) (; ";")) (} "}"))) (} "}")))))) (if_statement "if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }\n  else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" (if "if") (parenthesized_expression "((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0)" (( "(") (binary_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000) == 0" (parenthesized_expression "(*(ulong *)(lVar3 + 0x30) & 0x6000)" (( "(") (binary_expression "*(ulong *)(lVar3 + 0x30) & 0x6000" (pointer_expression "*(ulong *)(lVar3 + 0x30)" (* "*") (cast_expression "(ulong *)(lVar3 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x30)" (( "(") (binary_expression "lVar3 + 0x30" (identifier "lVar3") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "0x6000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_c0 = 0;\n    local_c8 = 0;\n    local_fc = 0;\n  }" ({ "{") (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c8 = 0;" (assignment_expression "local_c8 = 0" (identifier "local_c8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" (identifier "local_fc") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" (else "else") (compound_statement "{\n    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }\n    local_fc = (int)param_1[7] + 1;\n    *(uint *)(param_1 + 7) = local_fc;\n    FUN_001207c0(lVar14,0x45,0,local_fc);\n    local_c8 = *(int *)((long)param_1 + 0x44) - 1;\n    *(uint *)((long)param_1 + 0x44) = local_c8;\n  }" ({ "{") (if_statement "if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }\n    else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" (if "if") (parenthesized_expression "(((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0)" (( "(") (binary_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0" (parenthesized_expression "((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1)" (( "(") (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30) >> 0xd" (binary_expression "(uint)*(ulong *)(lVar3 + 0x30)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ulong *)(lVar3 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x30)" (( "(") (binary_expression "lVar3 + 0x30" (identifier "lVar3") (+ "+") (number_literal "0x30")) () ")")))) (>> ">>") (number_literal "0xd")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_fc = FUN_001116f3(param_1,param_2,0,0);\nLAB_0017a0bd:\n      local_c8 = local_fc;\n      local_c0 = 0;\n      if (local_fc == 0) goto LAB_0017a102;\n    }" ({ "{") (expression_statement "local_fc = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "local_fc = FUN_001116f3(param_1,param_2,0,0)" (identifier "local_fc") (= "=") (call_expression "FUN_001116f3(param_1,param_2,0,0)" (identifier "FUN_001116f3") (argument_list "(param_1,param_2,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (labeled_statement "LAB_0017a0bd:\n      local_c8 = local_fc;" (statement_identifier "LAB_0017a0bd") (: ":") (expression_statement "local_c8 = local_fc;" (assignment_expression "local_c8 = local_fc" (identifier "local_c8") (= "=") (identifier "local_fc")) (; ";"))) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_fc == 0) goto LAB_0017a102;" (if "if") (parenthesized_expression "(local_fc == 0)" (( "(") (binary_expression "local_fc == 0" (identifier "local_fc") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017a102;" (goto "goto") (statement_identifier "LAB_0017a102") (; ";"))) (} "}")) (else_clause "else {\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" (else "else") (compound_statement "{\n      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);\n      if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }\n    }" ({ "{") (expression_statement "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);" (assignment_expression "local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" (identifier "local_c0") (= "=") (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" (identifier "FUN_00111fa0") (argument_list "(param_1,param_2,0x7e,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0x7e") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_c0 == 0) {\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" (if "if") (parenthesized_expression "(local_c0 == 0)" (( "(") (binary_expression "local_c0 == 0" (identifier "local_c0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar8 = FUN_001116f3(param_1,param_2,0,0);\n        local_fc = (uint)(iVar8 != 0);\n        goto LAB_0017a0bd;\n      }" ({ "{") (expression_statement "iVar8 = FUN_001116f3(param_1,param_2,0,0);" (assignment_expression "iVar8 = FUN_001116f3(param_1,param_2,0,0)" (identifier "iVar8") (= "=") (call_expression "FUN_001116f3(param_1,param_2,0,0)" (identifier "FUN_001116f3") (argument_list "(param_1,param_2,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_fc = (uint)(iVar8 != 0);" (assignment_expression "local_fc = (uint)(iVar8 != 0)" (identifier "local_fc") (= "=") (call_expression "(uint)(iVar8 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (goto_statement "goto LAB_0017a0bd;" (goto "goto") (statement_identifier "LAB_0017a0bd") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_fc = (int)param_1[7] + 1;" (assignment_expression "local_fc = (int)param_1[7] + 1" (identifier "local_fc") (= "=") (binary_expression "(int)param_1[7] + 1" (cast_expression "(int)param_1[7]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 7) = local_fc;" (assignment_expression "*(uint *)(param_1 + 7) = local_fc" (pointer_expression "*(uint *)(param_1 + 7)" (* "*") (cast_expression "(uint *)(param_1 + 7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (identifier "local_fc")) (; ";")) (expression_statement "FUN_001207c0(lVar14,0x45,0,local_fc);" (call_expression "FUN_001207c0(lVar14,0x45,0,local_fc)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x45,0,local_fc)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x45") (, ",") (number_literal "0") (, ",") (identifier "local_fc") () ")"))) (; ";")) (expression_statement "local_c8 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c8 = *(int *)((long)param_1 + 0x44) - 1" (identifier "local_c8") (= "=") (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c8;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c8" (pointer_expression "*(uint *)((long)param_1 + 0x44)" (* "*") (cast_expression "(uint *)((long)param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "local_c8")) (; ";")) (} "}")))) (labeled_statement "LAB_0017a102:\n  if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" (statement_identifier "LAB_0017a102") (: ":") (if_statement "if ((param_8 == '\0') || (local_b0 != 0)) {\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" (if "if") (parenthesized_expression "((param_8 == '\0') || (local_b0 != 0))" (( "(") (binary_expression "(param_8 == '\0') || (local_b0 != 0)" (parenthesized_expression "(param_8 == '\0')" (( "(") (binary_expression "param_8 == '\0'" (identifier "param_8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(local_b0 != 0)" (( "(") (binary_expression "local_b0 != 0" (identifier "local_b0") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    local_b8 = 0;\n    local_90 = 0;\n    local_100 = 0;\n    local_e4 = 0;\n    goto LAB_0017a4e9;\n  }" ({ "{") (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017a4e9;" (goto "goto") (statement_identifier "LAB_0017a4e9") (; ";")) (} "}")))) (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" (identifier "iVar8") (= "=") (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "bVar19 = local_74;" (assignment_expression "bVar19 = local_74" (identifier "bVar19") (= "=") (identifier "local_74")) (; ";")) (if_statement "if ((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" (if "if") (parenthesized_expression "((local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb))" (( "(") (binary_expression "(local_74 == 0xb) &&\n     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" (parenthesized_expression "(local_74 == 0xb)" (( "(") (binary_expression "local_74 == 0xb" (identifier "local_74") (== "==") (number_literal "0xb")) () ")")) (&& "&&") (parenthesized_expression "(bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)" (( "(") (comma_expression "bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb" (assignment_expression "bVar19 = *(byte *)((long)param_2 + 0x4e)" (identifier "bVar19") (= "=") (pointer_expression "*(byte *)((long)param_2 + 0x4e)" (* "*") (cast_expression "(byte *)((long)param_2 + 0x4e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x4e)" (( "(") (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x4e")) () ")"))))) (, ",") (binary_expression "*(byte *)((long)param_2 + 0x4e) == 0xb" (pointer_expression "*(byte *)((long)param_2 + 0x4e)" (* "*") (cast_expression "(byte *)((long)param_2 + 0x4e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x4e)" (( "(") (binary_expression "(long)param_2 + 0x4e" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x4e")) () ")")))) (== "==") (number_literal "0xb"))) () ")"))) () ")")) (compound_statement "{\n    bVar19 = 2;\n    if (param_13 != (long *)0x0) goto LAB_0017a14e;\n    if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    bVar19 = 2;\n    goto switchD_0017a48f_caseD_1;\n  }" ({ "{") (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_13 != (long *)0x0) goto LAB_0017a14e;" (if "if") (parenthesized_expression "(param_13 != (long *)0x0)" (( "(") (binary_expression "param_13 != (long *)0x0" (identifier "param_13") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0017a14e;" (goto "goto") (statement_identifier "LAB_0017a14e") (; ";"))) (if_statement "if (param_7 != 0) {\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar19 = 2;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" ({ "{") (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017a437;" (goto "goto") (statement_identifier "LAB_0017a437") (; ";")) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "iVar8") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" (identifier "local_100") (= "=") (identifier "param_7")) (; ";")) (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto switchD_0017a48f_caseD_1;" (goto "goto") (statement_identifier "switchD_0017a48f_caseD_1") (; ";")) (} "}"))) (if_statement "if (param_13 != (long *)0x0) {\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" (if "if") (parenthesized_expression "(param_13 != (long *)0x0)" (( "(") (binary_expression "param_13 != (long *)0x0" (identifier "param_13") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;\n    if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }\n    if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    local_100 = param_7;\n    goto switchD_0017a48f_caseD_4;\n  }" ({ "{") (labeled_statement "LAB_0017a14e:\n    if (param_13[4] != 0) goto LAB_0017a353;" (statement_identifier "LAB_0017a14e") (: ":") (if_statement "if (param_13[4] != 0) goto LAB_0017a353;" (if "if") (parenthesized_expression "(param_13[4] != 0)" (( "(") (binary_expression "param_13[4] != 0" (subscript_expression "param_13[4]" (identifier "param_13") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017a353;" (goto "goto") (statement_identifier "LAB_0017a353") (; ";")))) (if_statement "if (param_13[2] != 0) {\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" (if "if") (parenthesized_expression "(param_13[2] != 0)" (( "(") (binary_expression "param_13[2] != 0" (subscript_expression "param_13[2]" (identifier "param_13") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }\n      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n      local_100 = param_7;\n      goto switchD_0017a48f_caseD_6;\n    }" ({ "{") (if_statement "if (param_7 != 0) {\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        bVar19 = 6;\n        local_100 = 0;\n        goto LAB_0017a437;\n      }" ({ "{") (expression_statement "bVar19 = 6;" (assignment_expression "bVar19 = 6" (identifier "bVar19") (= "=") (number_literal "6")) (; ";")) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017a437;" (goto "goto") (statement_identifier "LAB_0017a437") (; ";")) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "iVar8") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" (identifier "local_100") (= "=") (identifier "param_7")) (; ";")) (goto_statement "goto switchD_0017a48f_caseD_6;" (goto "goto") (statement_identifier "switchD_0017a48f_caseD_6") (; ";")) (} "}"))) (if_statement "if (param_7 != 0) {\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar19 = 4;\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" ({ "{") (expression_statement "bVar19 = 4;" (assignment_expression "bVar19 = 4" (identifier "bVar19") (= "=") (number_literal "4")) (; ";")) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017a437;" (goto "goto") (statement_identifier "LAB_0017a437") (; ";")) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "iVar8") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" (identifier "local_100") (= "=") (identifier "param_7")) (; ";")) (goto_statement "goto switchD_0017a48f_caseD_4;" (goto "goto") (statement_identifier "switchD_0017a48f_caseD_4") (; ";")) (} "}"))) (labeled_statement "LAB_0017a353:\n  if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" (statement_identifier "LAB_0017a353") (: ":") (if_statement "if (bVar19 == 5) {\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }\n  else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" (if "if") (parenthesized_expression "(bVar19 == 5)" (( "(") (binary_expression "bVar19 == 5" (identifier "bVar19") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    local_100 = 0;\n    if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }\n    if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\nswitchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }\n  }" ({ "{") (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((local_74 != 5) && (param_2[2] != 0)) {\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" (if "if") (parenthesized_expression "((local_74 != 5) && (param_2[2] != 0))" (( "(") (binary_expression "(local_74 != 5) && (param_2[2] != 0)" (parenthesized_expression "(local_74 != 5)" (( "(") (binary_expression "local_74 != 5" (identifier "local_74") (!= "!=") (number_literal "5")) () ")")) (&& "&&") (parenthesized_expression "(param_2[2] != 0)" (( "(") (binary_expression "param_2[2] != 0" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      local_100 = FUN_0012083c(lVar14,0xb);\n      local_100 = local_100 + 1;\n    }" ({ "{") (expression_statement "local_100 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_100 = FUN_0012083c(lVar14,0xb)" (identifier "local_100") (= "=") (call_expression "FUN_0012083c(lVar14,0xb)" (identifier "FUN_0012083c") (argument_list "(lVar14,0xb)" (( "(") (identifier "lVar14") (, ",") (number_literal "0xb") () ")")))) (; ";")) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" (identifier "local_100") (= "=") (binary_expression "local_100 + 1" (identifier "local_100") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (param_7 != 0) {\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);\n      FUN_0010f49a(lVar14,0x90);\n      goto LAB_0017a45f;\n    }" ({ "{") (labeled_statement "LAB_0017a437:\n      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" (statement_identifier "LAB_0017a437") (: ":") (expression_statement "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,iVar8,param_7)" (identifier "FUN_00120767") (argument_list "(lVar14,0x35,param_6,iVar8,param_7)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x35") (, ",") (identifier "param_6") (, ",") (identifier "iVar8") (, ",") (identifier "param_7") () ")"))) (; ";"))) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" (identifier "FUN_0010f49a") (argument_list "(lVar14,0x90)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x90") () ")"))) (; ";")) (goto_statement "goto LAB_0017a45f;" (goto "goto") (statement_identifier "LAB_0017a45f") (; ";")) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "iVar8") (, ",") (identifier "param_6") () ")"))) (; ";")) (labeled_statement "switchD_0017a48f_caseD_5:\n    if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" (statement_identifier "switchD_0017a48f_caseD_5") (: ":") (if_statement "if (local_fc == 0) {\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }\n    else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" (if "if") (parenthesized_expression "(local_fc == 0)" (( "(") (binary_expression "local_fc == 0" (identifier "local_fc") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n    }" ({ "{") (if_statement "if (param_2[2] == 0) {\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }\n      else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" (if "if") (parenthesized_expression "(param_2[2] == 0)" (( "(") (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" ({ "{") (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" (identifier "local_b8") (= "=") (identifier "local_fc")) (; ";")) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" (else "else") (compound_statement "{\n        FUN_0011158f(param_1);\n        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);\n        local_b8 = local_fc;\n        local_e4 = 1;\n      }" ({ "{") (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" (identifier "FUN_0011158f") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);" (call_expression "FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff)" (identifier "FUN_0016114a") (argument_list "(param_1,param_2,param_4,param_5,0,0xffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (number_literal "0") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "local_b8 = local_fc;" (assignment_expression "local_b8 = local_fc" (identifier "local_b8") (= "=") (identifier "local_fc")) (; ";")) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" (else "else") (compound_statement "{\n      FUN_0011158f(param_1);\n      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);\n      FUN_001207c0(lVar14,0x52,local_fc,1);\n      local_b8 = 1;\n      local_e4 = 1;\n    }" ({ "{") (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" (identifier "FUN_0011158f") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" (identifier "FUN_00175683") (argument_list "(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "local_c0") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffffffffffff") () ")"))) (; ";")) (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x52,local_fc,1)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x52") (, ",") (identifier "local_fc") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "local_b8 = 1;" (assignment_expression "local_b8 = 1" (identifier "local_b8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" (else "else") (compound_statement "{\n    local_100 = param_7;\n    if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }\nLAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);\n    switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }\n  }" ({ "{") (expression_statement "local_100 = param_7;" (assignment_expression "local_100 = param_7" (identifier "local_100") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (param_7 != 0) {\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_100 = 0;\n      goto LAB_0017a437;\n    }" ({ "{") (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017a437;" (goto "goto") (statement_identifier "LAB_0017a437") (; ";")) (} "}"))) (labeled_statement "LAB_0017a45f:\n    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (statement_identifier "LAB_0017a45f") (: ":") (expression_statement "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,iVar8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,iVar8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "iVar8") (, ",") (identifier "param_6") () ")"))) (; ";"))) (switch_statement "switch(bVar19) {\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" (switch "switch") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (compound_statement "{\n    case 5:\n      goto switchD_0017a48f_caseD_5;\n    case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);\n    case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;\n    default:\n      bVar19 = 2;\n    case 1:\n    case 2:\n    case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;\n    }" ({ "{") (case_statement "case 5:\n      goto switchD_0017a48f_caseD_5;" (case "case") (number_literal "5") (: ":") (goto_statement "goto switchD_0017a48f_caseD_5;" (goto "goto") (statement_identifier "switchD_0017a48f_caseD_5") (; ";"))) (case_statement "case 6:\nswitchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" (case "case") (number_literal "6") (: ":") (labeled_statement "switchD_0017a48f_caseD_6:\n      FUN_00179afb(param_1,param_13,param_2,0,param_4);" (statement_identifier "switchD_0017a48f_caseD_6") (: ":") (expression_statement "FUN_00179afb(param_1,param_13,param_2,0,param_4);" (call_expression "FUN_00179afb(param_1,param_13,param_2,0,param_4)" (identifier "FUN_00179afb") (argument_list "(param_1,param_13,param_2,0,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_13") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "param_4") () ")"))) (; ";")))) (case_statement "case 4:\nswitchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);\n      local_b8 = 0;\n      local_e4 = 0;\n      break;" (case "case") (number_literal "4") (: ":") (labeled_statement "switchD_0017a48f_caseD_4:\n      FUN_00120941(lVar14,param_10);" (statement_identifier "switchD_0017a48f_caseD_4") (: ":") (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" (identifier "FUN_00120941") (argument_list "(lVar14,param_10)" (( "(") (identifier "lVar14") (, ",") (identifier "param_10") () ")"))) (; ";"))) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n      bVar19 = 2;" (default "default") (: ":") (expression_statement "bVar19 = 2;" (assignment_expression "bVar19 = 2" (identifier "bVar19") (= "=") (number_literal "2")) (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 3:\nswitchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);\n      local_b8 = 0;\n      local_e4 = 0;" (case "case") (number_literal "3") (: ":") (labeled_statement "switchD_0017a48f_caseD_1:\n      FUN_001300b2(param_1,bVar19,param_2);" (statement_identifier "switchD_0017a48f_caseD_1") (: ":") (expression_statement "FUN_001300b2(param_1,bVar19,param_2);" (call_expression "FUN_001300b2(param_1,bVar19,param_2)" (identifier "FUN_001300b2") (argument_list "(param_1,bVar19,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "bVar19") (, ",") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";"))) (} "}"))) (} "}"))))) (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "local_90 = local_100;" (assignment_expression "local_90 = local_100" (identifier "local_90") (= "=") (identifier "local_100")) (; ";")) (if_statement "if (local_100 != 0) {\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" (if "if") (parenthesized_expression "(local_100 != 0)" (( "(") (binary_expression "local_100 != 0" (identifier "local_100") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_90 = FUN_0012083c(lVar14,0xb);\n    FUN_0010f4fb(lVar14,local_100 + -1);\n  }" ({ "{") (expression_statement "local_90 = FUN_0012083c(lVar14,0xb);" (assignment_expression "local_90 = FUN_0012083c(lVar14,0xb)" (identifier "local_90") (= "=") (call_expression "FUN_0012083c(lVar14,0xb)" (identifier "FUN_0012083c") (argument_list "(lVar14,0xb)" (( "(") (identifier "lVar14") (, ",") (number_literal "0xb") () ")")))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,local_100 + -1);" (call_expression "FUN_0010f4fb(lVar14,local_100 + -1)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,local_100 + -1)" (( "(") (identifier "lVar14") (, ",") (binary_expression "local_100 + -1" (identifier "local_100") (+ "+") (number_literal "-1")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0017a4e9:\n  lVar23 = param_2[2];" (statement_identifier "LAB_0017a4e9") (: ":") (expression_statement "lVar23 = param_2[2];" (assignment_expression "lVar23 = param_2[2]" (identifier "lVar23") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "local_c4 = local_c8;" (assignment_expression "local_c4 = local_c8" (identifier "local_c4") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }\n    piVar4 = (int *)(param_3 + (long)local_a8 * 4);\n    if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }\n    lVar23 = *(long *)(lVar23 + 0x28);\n    local_a8 = local_a8 + 1;\n  }" ({ "{") (if_statement "if (lVar23 == 0) {\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" (if "if") (parenthesized_expression "(lVar23 == 0)" (( "(") (binary_expression "lVar23 == 0" (identifier "lVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }\n      if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }\n      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }\n      *param_11 = local_e4;\n      return;\n    }" ({ "{") (if_statement "if (local_100 != 0) {\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" (if "if") (parenthesized_expression "(local_100 != 0)" (( "(") (binary_expression "local_100 != 0" (identifier "local_100") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00120941(lVar14,local_100);\n        FUN_0010f4fb(lVar14,local_90);\n      }" ({ "{") (expression_statement "FUN_00120941(lVar14,local_100);" (call_expression "FUN_00120941(lVar14,local_100)" (identifier "FUN_00120941") (argument_list "(lVar14,local_100)" (( "(") (identifier "lVar14") (, ",") (identifier "local_100") () ")"))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,local_90);" (call_expression "FUN_0010f4fb(lVar14,local_90)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,local_90)" (( "(") (identifier "lVar14") (, ",") (identifier "local_90") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_b8 != 0) {\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" (if "if") (parenthesized_expression "(local_b8 != 0)" (( "(") (binary_expression "local_b8 != 0" (identifier "local_b8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001207c0(lVar14,0x14,local_fc,local_c4);\n        if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }\n        FUN_00120437(lVar14,local_c4);\n      }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x14,local_fc,local_c4);" (call_expression "FUN_001207c0(lVar14,0x14,local_fc,local_c4)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x14,local_fc,local_c4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x14") (, ",") (identifier "local_fc") (, ",") (identifier "local_c4") () ")"))) (; ";")) (if_statement "if (local_b0 == 0) {\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }\n        else {\n          FUN_00120941(lVar14,local_c8);\n        }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }\n          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);\n          FUN_001300b2(param_1,2,param_2);\n        }" ({ "{") (if_statement "if (param_7 != 0) {\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);\n            FUN_0010f49a(lVar14,0x90);\n          }" ({ "{") (expression_statement "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,param_6,local_c8,param_7)" (identifier "FUN_00120767") (argument_list "(lVar14,0x35,param_6,local_c8,param_7)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x35") (, ",") (identifier "param_6") (, ",") (identifier "local_c8") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" (identifier "FUN_0010f49a") (argument_list "(lVar14,0x90)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x90") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);" (call_expression "FUN_00120767(lVar14,0x20,param_4,local_c8,param_6)" (identifier "FUN_00120767") (argument_list "(lVar14,0x20,param_4,local_c8,param_6)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x20") (, ",") (identifier "param_4") (, ",") (identifier "local_c8") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "FUN_001300b2(param_1,2,param_2);" (call_expression "FUN_001300b2(param_1,2,param_2)" (identifier "FUN_001300b2") (argument_list "(param_1,2,param_2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          FUN_00120941(lVar14,local_c8);\n        }" (else "else") (compound_statement "{\n          FUN_00120941(lVar14,local_c8);\n        }" ({ "{") (expression_statement "FUN_00120941(lVar14,local_c8);" (call_expression "FUN_00120941(lVar14,local_c8)" (identifier "FUN_00120941") (argument_list "(lVar14,local_c8)" (( "(") (identifier "lVar14") (, ",") (identifier "local_c8") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" (identifier "FUN_00120437") (argument_list "(lVar14,local_c4)" (( "(") (identifier "lVar14") (, ",") (identifier "local_c4") () ")"))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {\n        FUN_0013c76e(lVar14,param_2,0);\n      }" (if "if") (parenthesized_expression "(((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5))" (( "(") (binary_expression "((*(byte *)(param_2 + 8) & 0x80) == 0) &&\n         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" (( "(") (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" (* "*") (cast_expression "(byte *)(param_2 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)" (( "(") (comma_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5" (call_expression "FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" (identifier "FUN_00120767") (argument_list "(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],\n                       *(undefined4 *)(param_3 + (long)local_a8 * 4))" (( "(") (identifier "lVar14") (, ",") (number_literal "0x5b") (, ",") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) (, ",") (cast_expression "(int)(short)param_2[9]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)param_2[9]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + (long)local_a8 * 4)" (* "*") (cast_expression "(undefined4 *)(param_3 + (long)local_a8 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (long)local_a8 * 4)" (( "(") (binary_expression "param_3 + (long)local_a8 * 4" (identifier "param_3") (+ "+") (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_a8")) (* "*") (number_literal "4"))) () ")")))) () ")"))) (, ",") (unary_expression "!bVar5" (! "!") (identifier "bVar5"))) () ")"))) () ")")) (compound_statement "{\n        FUN_0013c76e(lVar14,param_2,0);\n      }" ({ "{") (expression_statement "FUN_0013c76e(lVar14,param_2,0);" (call_expression "FUN_0013c76e(lVar14,param_2,0)" (identifier "FUN_0013c76e") (argument_list "(lVar14,param_2,0)" (( "(") (identifier "lVar14") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_11 = local_e4;" (assignment_expression "*param_11 = local_e4" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "local_e4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar4 = (int *)(param_3 + (long)local_a8 * 4);" (assignment_expression "piVar4 = (int *)(param_3 + (long)local_a8 * 4)" (identifier "piVar4") (= "=") (cast_expression "(int *)(param_3 + (long)local_a8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (long)local_a8 * 4)" (( "(") (binary_expression "param_3 + (long)local_a8 * 4" (identifier "param_3") (+ "+") (binary_expression "(long)local_a8 * 4" (cast_expression "(long)local_a8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_a8")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (*piVar4 != 0) {\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(*piVar4 != 0)" (( "(") (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }\n      if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }\n      iVar22 = *piVar4;\n      iVar9 = iVar22 + 1;\n      iVar10 = iVar22 + 1;\n      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }\n      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);\n      bVar27 = lVar23 == local_b0;\n      if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }\n    }" ({ "{") (if_statement "if (lVar23 == local_d0) {\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }\n      else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" (if "if") (parenthesized_expression "(lVar23 == local_d0)" (( "(") (binary_expression "lVar23 == local_d0" (identifier "lVar23") (== "==") (identifier "local_d0")) () ")")) (compound_statement "{\n        iVar8 = local_b4 + 1;\n        local_84 = FUN_00120941(lVar14,0);\n        FUN_0010f4fb(lVar14,local_b4);\n        if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }\n      }" ({ "{") (expression_statement "iVar8 = local_b4 + 1;" (assignment_expression "iVar8 = local_b4 + 1" (identifier "iVar8") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_84 = FUN_00120941(lVar14,0);" (assignment_expression "local_84 = FUN_00120941(lVar14,0)" (identifier "local_84") (= "=") (call_expression "FUN_00120941(lVar14,0)" (identifier "FUN_00120941") (argument_list "(lVar14,0)" (( "(") (identifier "lVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,local_b4);" (call_expression "FUN_0010f4fb(lVar14,local_b4)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,local_b4)" (( "(") (identifier "lVar14") (, ",") (identifier "local_b4") () ")"))) (; ";")) (if_statement "if (!bVar5) {\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" (if "if") (parenthesized_expression "(!bVar5)" (( "(") (unary_expression "!bVar5" (! "!") (identifier "bVar5")) () ")")) (compound_statement "{\nLAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);\n          bVar5 = true;\n        }" ({ "{") (labeled_statement "LAB_0017a81c:\n          FUN_0013c76e(lVar14,param_2,param_6 + 1);" (statement_identifier "LAB_0017a81c") (: ":") (expression_statement "FUN_0013c76e(lVar14,param_2,param_6 + 1);" (call_expression "FUN_0013c76e(lVar14,param_2,param_6 + 1)" (identifier "FUN_0013c76e") (argument_list "(lVar14,param_2,param_6 + 1)" (( "(") (identifier "lVar14") (, ",") (identifier "param_2") (, ",") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) () ")"))) (; ";"))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" (else "else") (compound_statement "{\n        iVar8 = *(int *)((long)param_1 + 0x44) + -1;\n        *(int *)((long)param_1 + 0x44) = iVar8;\n        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;\n      }" ({ "{") (expression_statement "iVar8 = *(int *)((long)param_1 + 0x44) + -1;" (assignment_expression "iVar8 = *(int *)((long)param_1 + 0x44) + -1" (identifier "iVar8") (= "=") (binary_expression "*(int *)((long)param_1 + 0x44) + -1" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)((long)param_1 + 0x44) = iVar8;" (assignment_expression "*(int *)((long)param_1 + 0x44) = iVar8" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (if_statement "if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;" (if "if") (parenthesized_expression "((!bVar5) && (local_d0 == 0))" (( "(") (binary_expression "(!bVar5) && (local_d0 == 0)" (parenthesized_expression "(!bVar5)" (( "(") (unary_expression "!bVar5" (! "!") (identifier "bVar5")) () ")")) (&& "&&") (parenthesized_expression "(local_d0 == 0)" (( "(") (binary_expression "local_d0 == 0" (identifier "local_d0") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0017a81c;" (goto "goto") (statement_identifier "LAB_0017a81c") (; ";"))) (} "}")))) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" (if "if") (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" (( "(") (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" (* "*") (cast_expression "(long *)(lVar23 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x48)" (( "(") (binary_expression "lVar23 + 0x48" (identifier "lVar23") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001207c0(lVar14,0x48,0,*piVar4);\n        *(uint *)(param_1 + 8) = ~param_6;\n        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);\n        *(undefined4 *)(param_1 + 8) = 0;\n      }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x48,0,*piVar4);" (call_expression "FUN_001207c0(lVar14,0x48,0,*piVar4)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x48,0,*piVar4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x48") (, ",") (number_literal "0") (, ",") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")"))) (; ";")) (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (unary_expression "~param_6" (~ "~") (identifier "param_6"))) (; ";")) (expression_statement "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);" (call_expression "FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" (identifier "FUN_00160eed") (argument_list "(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(lVar23 + 0x48)" (* "*") (cast_expression "(undefined8 *)(lVar23 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x48)" (( "(") (binary_expression "lVar23 + 0x48" (identifier "lVar23") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (identifier "iVar8") (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar22 = *piVar4;" (assignment_expression "iVar22 = *piVar4" (identifier "iVar22") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "iVar9 = iVar22 + 1;" (assignment_expression "iVar9 = iVar22 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = iVar22 + 1;" (assignment_expression "iVar10 = iVar22 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (for_statement "for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" (for "for") (( "(") (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60)" (identifier "iVar11") (< "<") (binary_expression "(int)(uint)*(ushort *)(lVar23 + 0x60)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(lVar23 + 0x60)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x60)" (( "(") (binary_expression "lVar23 + 0x60" (identifier "lVar23") (+ "+") (number_literal "0x60")) () ")"))))) (; ";") (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);\n        if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }\n      }" ({ "{") (expression_statement "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);" (assignment_expression "sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" (identifier "sVar7") (= "=") (pointer_expression "*(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" (* "*") (cast_expression "(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar23 + 8) + (long)iVar11 * 2)" (( "(") (binary_expression "*(long *)(lVar23 + 8) + (long)iVar11 * 2" (pointer_expression "*(long *)(lVar23 + 8)" (* "*") (cast_expression "(long *)(lVar23 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 8)" (( "(") (binary_expression "lVar23 + 8" (identifier "lVar23") (+ "+") (number_literal "8")) () ")")))) (+ "+") (binary_expression "(long)iVar11 * 2" (cast_expression "(long)iVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar11")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (sVar7 == -2) {\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }\n        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" (if "if") (parenthesized_expression "(sVar7 == -2)" (( "(") (binary_expression "sVar7 == -2" (identifier "sVar7") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n          *(uint *)(param_1 + 8) = ~param_6;\n          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);\n          *(undefined4 *)(param_1 + 8) = 0;\n        }" ({ "{") (expression_statement "*(uint *)(param_1 + 8) = ~param_6;" (assignment_expression "*(uint *)(param_1 + 8) = ~param_6" (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (unary_expression "~param_6" (~ "~") (identifier "param_6"))) (; ";")) (expression_statement "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11);" (call_expression "FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" (identifier "FUN_0015ba64") (argument_list "(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),\n                       iVar10 + iVar11)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" (* "*") (cast_expression "(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8)" (( "(") (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8" (binary_expression "(long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50)" (binary_expression "(long)iVar11 * 0x18" (cast_expression "(long)iVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar11")) (* "*") (number_literal "0x18")) (+ "+") (pointer_expression "*(long *)(lVar23 + 0x50)" (* "*") (cast_expression "(long *)(lVar23 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x50)" (( "(") (binary_expression "lVar23 + 0x50" (identifier "lVar23") (+ "+") (number_literal "0x50")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "iVar10 + iVar11" (identifier "iVar10") (+ "+") (identifier "iVar11")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" (else "else") (if_statement "if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }\n        else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" (if "if") (parenthesized_expression "((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44)))" (( "(") (binary_expression "(sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))" (parenthesized_expression "(sVar7 == -1)" (( "(") (binary_expression "sVar7 == -1" (identifier "sVar7") (== "==") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(sVar7 == *(short *)((long)param_2 + 0x44))" (( "(") (binary_expression "sVar7 == *(short *)((long)param_2 + 0x44)" (identifier "sVar7") (== "==") (pointer_expression "*(short *)((long)param_2 + 0x44)" (* "*") (cast_expression "(short *)((long)param_2 + 0x44)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x44)" (( "(") (binary_expression "(long)param_2 + 0x44" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x44")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);\n        }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x4f,param_6,iVar10 + iVar11)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x4f") (, ",") (identifier "param_6") (, ",") (binary_expression "iVar10 + iVar11" (identifier "iVar10") (+ "+") (identifier "iVar11")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" (else "else") (compound_statement "{\n          sVar7 = FUN_001112f9(param_2);\n          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);\n        }" ({ "{") (expression_statement "sVar7 = FUN_001112f9(param_2);" (assignment_expression "sVar7 = FUN_001112f9(param_2)" (identifier "sVar7") (= "=") (call_expression "FUN_001112f9(param_2)" (identifier "FUN_001112f9") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);" (call_expression "FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x4e") (, ",") (binary_expression "param_6 + 1 + (int)sVar7" (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(int)sVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar7"))) (, ",") (binary_expression "iVar10 + iVar11" (identifier "iVar10") (+ "+") (identifier "iVar11")) () ")"))) (; ";")) (} "}")))))) (} "}"))) (expression_statement "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);" (call_expression "FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" (identifier "FUN_00120767") (argument_list "(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x5b") (, ",") (identifier "iVar9") (, ",") (pointer_expression "*(ushort *)(lVar23 + 0x60)" (* "*") (cast_expression "(ushort *)(lVar23 + 0x60)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x60)" (( "(") (binary_expression "lVar23 + 0x60" (identifier "lVar23") (+ "+") (number_literal "0x60")) () ")")))) (, ",") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")"))) (; ";")) (expression_statement "bVar27 = lVar23 == local_b0;" (assignment_expression "bVar27 = lVar23 == local_b0" (identifier "bVar27") (= "=") (binary_expression "lVar23 == local_b0" (identifier "lVar23") (== "==") (identifier "local_b0"))) (; ";")) (if_statement "if ((bVar26 && param_8 == '\0') && (bVar27)) {\n        FUN_00120437(lVar14,iVar8);\n      }\n      else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "((bVar26 && param_8 == '\0') && (bVar27))" (( "(") (binary_expression "(bVar26 && param_8 == '\0') && (bVar27)" (parenthesized_expression "(bVar26 && param_8 == '\0')" (( "(") (binary_expression "bVar26 && param_8 == '\0'" (identifier "bVar26") (&& "&&") (binary_expression "param_8 == '\0'" (identifier "param_8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (&& "&&") (parenthesized_expression "(bVar27)" (( "(") (identifier "bVar27") () ")"))) () ")")) (compound_statement "{\n        FUN_00120437(lVar14,iVar8);\n      }" ({ "{") (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\n        uVar21 = (uint)*(byte *)(lVar23 + 0x62);\n        if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "uVar21 = (uint)*(byte *)(lVar23 + 0x62);" (assignment_expression "uVar21 = (uint)*(byte *)(lVar23 + 0x62)" (identifier "uVar21") (= "=") (binary_expression "(uint)*(byte *)(lVar23 + 0x62)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar23 + 0x62)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x62)" (( "(") (binary_expression "lVar23 + 0x62" (identifier "lVar23") (+ "+") (number_literal "0x62")) () ")"))))) (; ";")) (if_statement "if (*(byte *)(lVar23 + 0x62) == 0) {\n          FUN_00120437(lVar14,iVar8);\n        }\n        else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(*(byte *)(lVar23 + 0x62) == 0)" (( "(") (binary_expression "*(byte *)(lVar23 + 0x62) == 0" (pointer_expression "*(byte *)(lVar23 + 0x62)" (* "*") (cast_expression "(byte *)(lVar23 + 0x62)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x62)" (( "(") (binary_expression "lVar23 + 0x62" (identifier "lVar23") (+ "+") (number_literal "0x62")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00120437(lVar14,iVar8);\n        }" ({ "{") (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" (else "else") (compound_statement "{\n          if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }\n          if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }\n          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }\n        }" ({ "{") (if_statement "if (local_74 == 0xb) {\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }\n          else {\n            uVar21 = (uint)local_74;\n          }" (if "if") (parenthesized_expression "(local_74 == 0xb)" (( "(") (binary_expression "local_74 == 0xb" (identifier "local_74") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n            if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }\n          }" ({ "{") (if_statement "if (uVar21 == 0xb) {\n              uVar21 = 2;\n            }" (if "if") (parenthesized_expression "(uVar21 == 0xb)" (( "(") (binary_expression "uVar21 == 0xb" (identifier "uVar21") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n              uVar21 = 2;\n            }" ({ "{") (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" (identifier "uVar21") (= "=") (number_literal "2")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            uVar21 = (uint)local_74;\n          }" (else "else") (compound_statement "{\n            uVar21 = (uint)local_74;\n          }" ({ "{") (expression_statement "uVar21 = (uint)local_74;" (assignment_expression "uVar21 = (uint)local_74" (identifier "uVar21") (= "=") (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74"))) (; ";")) (} "}")))) (if_statement "if (lVar23 == local_d0) {\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" (if "if") (parenthesized_expression "(lVar23 == local_d0)" (( "(") (binary_expression "lVar23 == local_d0" (identifier "lVar23") (== "==") (identifier "local_d0")) () ")")) (compound_statement "{\n            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;\n          }" ({ "{") (expression_statement "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" (identifier "uVar21") (= "=") (binary_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(param_13[2] == 0) & 0xfffffffe)" (( "(") (binary_expression "-(uint)(param_13[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(param_13[2] == 0)" (- "-") (call_expression "(uint)(param_13[2] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_13[2] == 0)" (( "(") (binary_expression "param_13[2] == 0" (subscript_expression "param_13[2]" (identifier "param_13") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xfffffffe")) () ")")) (+ "+") (number_literal "6"))) (; ";")) (} "}"))) (if_statement "if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {\n            FUN_00120437(lVar14,iVar8);\n          }\n          else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" (if "if") (parenthesized_expression "(((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))))" (( "(") (binary_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))\n             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" (parenthesized_expression "((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))" (( "(") (binary_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27)" (parenthesized_expression "(((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5))" (( "(") (binary_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)" (parenthesized_expression "((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0))" (( "(") (binary_expression "(local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)" (parenthesized_expression "(local_a8 == 0)" (( "(") (binary_expression "local_a8 == 0" (identifier "local_a8") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(lVar23 + 0x28) == 0)" (( "(") (binary_expression "*(long *)(lVar23 + 0x28) == 0" (pointer_expression "*(long *)(lVar23 + 0x28)" (* "*") (cast_expression "(long *)(lVar23 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x28)" (( "(") (binary_expression "lVar23 + 0x28" (identifier "lVar23") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar21 == 5)" (( "(") (binary_expression "uVar21 == 5" (identifier "uVar21") (== "==") (number_literal "5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar27)" (( "(") (identifier "bVar27") () ")"))) () ")")) (&& "&&") (parenthesized_expression "((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))" (( "(") (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))))" (( "(") (binary_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&\n                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0))" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||\n                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x20) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x20)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x31) & 0x20" (pointer_expression "*(byte *)(lVar3 + 0x31)" (* "*") (cast_expression "(byte *)(lVar3 + 0x31)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x31)" (( "(") (binary_expression "lVar3 + 0x31" (identifier "lVar3") (+ "+") (number_literal "0x31")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)" (( "(") (comma_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0)" (identifier "lVar15") (= "=") (call_expression "FUN_00111fa0(param_1,param_2,0x7e,0,0)" (identifier "FUN_00111fa0") (argument_list "(param_1,param_2,0x7e,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0x7e") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))" (( "(") (parenthesized_expression "((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))))" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||\n                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" (binary_expression "(*(byte *)(lVar3 + 0x31) & 0x40) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x31) & 0x40)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x31) & 0x40" (pointer_expression "*(byte *)(lVar3 + 0x31)" (* "*") (cast_expression "(byte *)(lVar3 + 0x31)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x31)" (( "(") (binary_expression "lVar3 + 0x31" (identifier "lVar3") (+ "+") (number_literal "0x31")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))" (( "(") (parenthesized_expression "(param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0))" (( "(") (binary_expression "param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)" (binary_expression "param_2[4] == 0" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(lVar15 = FUN_00111606(param_2), lVar15 == 0)" (( "(") (comma_expression "lVar15 = FUN_00111606(param_2), lVar15 == 0" (assignment_expression "lVar15 = FUN_00111606(param_2)" (identifier "lVar15") (= "=") (call_expression "FUN_00111606(param_2)" (identifier "FUN_00111606") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (, ",") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            FUN_00120437(lVar14,iVar8);\n          }" ({ "{") (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" (else "else") (compound_statement "{\n            iVar10 = local_a8 + param_5;\n            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));\n            local_dc = iVar9;\n            if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }\n            if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }\n            if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }\nLAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }\n            if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }\n          }" ({ "{") (expression_statement "iVar10 = local_a8 + param_5;" (assignment_expression "iVar10 = local_a8 + param_5" (identifier "iVar10") (= "=") (binary_expression "local_a8 + param_5" (identifier "local_a8") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));" (assignment_expression "iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" (identifier "iVar11") (= "=") (call_expression "FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" (identifier "FUN_0012085a") (argument_list "(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e))" (( "(") (identifier "lVar14") (, ",") (number_literal "0x1c") (, ",") (identifier "iVar10") (, ",") (identifier "iVar8") (, ",") (identifier "iVar9") (, ",") (pointer_expression "*(undefined2 *)(lVar23 + 0x5e)" (* "*") (cast_expression "(undefined2 *)(lVar23 + 0x5e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x5e)" (( "(") (binary_expression "lVar23 + 0x5e" (identifier "lVar23") (+ "+") (number_literal "0x5e")) () ")")))) () ")")))) (; ";")) (expression_statement "local_dc = iVar9;" (assignment_expression "local_dc = iVar9" (identifier "local_dc") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (lVar23 != local_b0) {\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" (if "if") (parenthesized_expression "(lVar23 != local_b0)" (( "(") (binary_expression "lVar23 != local_b0" (identifier "lVar23") (!= "!=") (identifier "local_b0")) () ")")) (compound_statement "{\n              local_dc = FUN_00110b75(param_1,sVar2);\n            }" ({ "{") (expression_statement "local_dc = FUN_00110b75(param_1,sVar2);" (assignment_expression "local_dc = FUN_00110b75(param_1,sVar2)" (identifier "local_dc") (= "=") (call_expression "FUN_00110b75(param_1,sVar2)" (identifier "FUN_00110b75") (argument_list "(param_1,sVar2)" (( "(") (identifier "param_1") (, ",") (identifier "sVar2") () ")")))) (; ";")) (} "}"))) (if_statement "if ((uVar21 == 5) || (bVar26)) {\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" (if "if") (parenthesized_expression "((uVar21 == 5) || (bVar26))" (( "(") (binary_expression "(uVar21 == 5) || (bVar26)" (parenthesized_expression "(uVar21 == 5)" (( "(") (binary_expression "uVar21 == 5" (identifier "uVar21") (== "==") (number_literal "5")) () ")")) (|| "||") (parenthesized_expression "(bVar26)" (( "(") (identifier "bVar26") () ")"))) () ")")) (compound_statement "{\n              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }\n            }" ({ "{") (if_statement "if ((*(byte *)(param_2 + 8) & 0x80) == 0) {\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }\n              else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 8) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 8) & 0x80) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 0x80)" (( "(") (binary_expression "*(byte *)(param_2 + 8) & 0x80" (pointer_expression "*(byte *)(param_2 + 8)" (* "*") (cast_expression "(byte *)(param_2 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_001207c0(lVar14,0x86,iVar10,local_dc);\n                if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }\n              }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x86,iVar10,local_dc);" (call_expression "FUN_001207c0(lVar14,0x86,iVar10,local_dc)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x86,iVar10,local_dc)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x86") (, ",") (identifier "iVar10") (, ",") (identifier "local_dc") () ")"))) (; ";")) (if_statement "if (param_7 != 0) {\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);\n                  FUN_0010f49a(lVar14,0x90);\n                }" ({ "{") (expression_statement "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);" (call_expression "FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7)" (identifier "FUN_00120767") (argument_list "(lVar14,0x35,local_dc,iVar8,param_7)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x35") (, ",") (identifier "local_dc") (, ",") (identifier "iVar8") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" (identifier "FUN_0010f49a") (argument_list "(lVar14,0x90)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x90") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                iVar13 = 0;\n                if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }\n                if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar23 != local_b0) {\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" (if "if") (parenthesized_expression "(lVar23 != local_b0)" (( "(") (binary_expression "lVar23 != local_b0" (identifier "lVar23") (!= "!=") (identifier "local_b0")) () ")")) (compound_statement "{\n                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }\n                }" ({ "{") (for_statement "for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" (for "for") (( "(") (; ";") (binary_expression "iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" (identifier "iVar13") (< "<") (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(local_b0 + 0x5e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x5e)" (( "(") (binary_expression "local_b0 + 0x5e" (identifier "local_b0") (+ "+") (number_literal "0x5e")) () ")"))))) (; ";") (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));\n                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);\n                  }" ({ "{") (expression_statement "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2));" (assignment_expression "sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" (identifier "sVar7") (= "=") (call_expression "FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" (identifier "FUN_00111273") (argument_list "(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2))" (( "(") (identifier "lVar23") (, ",") (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" (* "*") (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2)" (( "(") (binary_expression "*(long *)(local_b0 + 8) +\n                                                               (long)iVar13 * 2" (pointer_expression "*(long *)(local_b0 + 8)" (* "*") (cast_expression "(long *)(local_b0 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 8)" (( "(") (binary_expression "local_b0 + 8" (identifier "local_b0") (+ "+") (number_literal "8")) () ")")))) (+ "+") (binary_expression "(long)iVar13 * 2" (cast_expression "(long)iVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar13")) (* "*") (number_literal "2"))) () ")"))))) () ")")))) (; ";")) (expression_statement "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);" (call_expression "FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" (identifier "FUN_00120767") (argument_list "(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x59") (, ",") (identifier "iVar10") (, ",") (cast_expression "(int)sVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar7")) (, ",") (binary_expression "local_dc + iVar13" (identifier "local_dc") (+ "+") (identifier "iVar13")) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_7 != 0) {\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);\n                  iVar13 = local_dc;\n                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }\n                  local_88 = 0x34;\n                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }\n                }" ({ "{") (expression_statement "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);" (assignment_expression "local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" (identifier "local_8c") (= "=") (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90)" (binary_expression "(uint)*(ushort *)(local_b0 + 0x5e)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(local_b0 + 0x5e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x5e)" (( "(") (binary_expression "local_b0 + 0x5e" (identifier "local_b0") (+ "+") (number_literal "0x5e")) () ")")))) (+ "+") (pointer_expression "*(int *)(lVar14 + 0x90)" (* "*") (cast_expression "(int *)(lVar14 + 0x90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x90)" (( "(") (binary_expression "lVar14 + 0x90" (identifier "lVar14") (+ "+") (number_literal "0x90")) () ")")))))) (; ";")) (expression_statement "iVar13 = local_dc;" (assignment_expression "iVar13 = local_dc" (identifier "iVar13") (= "=") (identifier "local_dc")) (; ";")) (if_statement "if ((*(byte *)(lVar23 + 99) & 3) == 2) {\n                    iVar13 = iVar9;\n                  }" (if "if") (parenthesized_expression "((*(byte *)(lVar23 + 99) & 3) == 2)" (( "(") (binary_expression "(*(byte *)(lVar23 + 99) & 3) == 2" (parenthesized_expression "(*(byte *)(lVar23 + 99) & 3)" (( "(") (binary_expression "*(byte *)(lVar23 + 99) & 3" (pointer_expression "*(byte *)(lVar23 + 99)" (* "*") (cast_expression "(byte *)(lVar23 + 99)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 99)" (( "(") (binary_expression "lVar23 + 99" (identifier "lVar23") (+ "+") (number_literal "99")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                    iVar13 = iVar9;\n                  }" ({ "{") (expression_statement "iVar13 = iVar9;" (assignment_expression "iVar13 = iVar9" (identifier "iVar13") (= "=") (identifier "iVar9")) (; ";")) (} "}"))) (expression_statement "local_88 = 0x34;" (assignment_expression "local_88 = 0x34" (identifier "local_88") (= "=") (number_literal "0x34")) (; ";")) (for_statement "for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);\n                      iVar24 = iVar24 + 1) {\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" (for "for") (( "(") (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e)" (identifier "iVar24") (< "<") (binary_expression "(int)(uint)*(ushort *)(local_b0 + 0x5e)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(local_b0 + 0x5e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x5e)" (( "(") (binary_expression "local_b0 + 0x5e" (identifier "local_b0") (+ "+") (number_literal "0x5e")) () ")"))))) (; ";") (assignment_expression "iVar24 = iVar24 + 1" (identifier "iVar24") (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));\n                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;\n                    if (bVar20) {\n                      local_8c = iVar8;\n                    }\n                    uVar12 = 0x35;\n                    if (!bVar20) {\n                      uVar12 = local_88;\n                    }\n                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));\n                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);\n                    FUN_0010f49a(lVar14,0x90);\n                    local_88 = uVar12;\n                  }" ({ "{") (expression_statement "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));" (assignment_expression "uVar16 = FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" (identifier "uVar16") (= "=") (call_expression "FUN_001372fb(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" (identifier "FUN_001372fb") (argument_list "(param_1,*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" (* "*") (cast_expression "(undefined8 *)\n                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_b0 + 0x40) + (long)iVar24 * 8)" (( "(") (binary_expression "*(long *)(local_b0 + 0x40) + (long)iVar24 * 8" (pointer_expression "*(long *)(local_b0 + 0x40)" (* "*") (cast_expression "(long *)(local_b0 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x40)" (( "(") (binary_expression "local_b0 + 0x40" (identifier "local_b0") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (binary_expression "(long)iVar24 * 8" (cast_expression "(long)iVar24" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar24")) (* "*") (number_literal "8"))) () ")")))) () ")")))) (; ";")) (expression_statement "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;" (assignment_expression "bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24" (identifier "bVar20") (= "=") (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1 == iVar24" (binary_expression "*(ushort *)(local_b0 + 0x5e) - 1" (pointer_expression "*(ushort *)(local_b0 + 0x5e)" (* "*") (cast_expression "(ushort *)(local_b0 + 0x5e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x5e)" (( "(") (binary_expression "local_b0 + 0x5e" (identifier "local_b0") (+ "+") (number_literal "0x5e")) () ")")))) (- "-") (number_literal "1")) (== "==") (identifier "iVar24"))) (; ";")) (if_statement "if (bVar20) {\n                      local_8c = iVar8;\n                    }" (if "if") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (compound_statement "{\n                      local_8c = iVar8;\n                    }" ({ "{") (expression_statement "local_8c = iVar8;" (assignment_expression "local_8c = iVar8" (identifier "local_8c") (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "uVar12 = 0x35;" (assignment_expression "uVar12 = 0x35" (identifier "uVar12") (= "=") (number_literal "0x35")) (; ";")) (if_statement "if (!bVar20) {\n                      uVar12 = local_88;\n                    }" (if "if") (parenthesized_expression "(!bVar20)" (( "(") (unary_expression "!bVar20" (! "!") (identifier "bVar20")) () ")")) (compound_statement "{\n                      uVar12 = local_88;\n                    }" ({ "{") (expression_statement "uVar12 = local_88;" (assignment_expression "uVar12 = local_88" (identifier "uVar12") (= "=") (identifier "local_88")) (; ";")) (} "}"))) (expression_statement "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2));" (assignment_expression "sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" (identifier "sVar7") (= "=") (call_expression "FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" (identifier "FUN_001112f9") (argument_list "(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2))" (( "(") (identifier "param_2") (, ",") (cast_expression "(int)*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" (* "*") (cast_expression "(short *)(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2)" (( "(") (binary_expression "*(long *)(local_b0 + 8) +\n                                                                (long)iVar24 * 2" (pointer_expression "*(long *)(local_b0 + 8)" (* "*") (cast_expression "(long *)(local_b0 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 8)" (( "(") (binary_expression "local_b0 + 8" (identifier "local_b0") (+ "+") (number_literal "8")) () ")")))) (+ "+") (binary_expression "(long)iVar24 * 2" (cast_expression "(long)iVar24" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar24")) (* "*") (number_literal "2"))) () ")"))))) () ")")))) (; ";")) (expression_statement "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe);" (call_expression "FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" (identifier "FUN_00121136") (argument_list "(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,\n                                 uVar16,0xfffffffffffffffe)" (( "(") (identifier "lVar14") (, ",") (identifier "uVar12") (, ",") (binary_expression "param_7 + 1 + (int)sVar7" (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(int)sVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar7"))) (, ",") (identifier "local_8c") (, ",") (binary_expression "iVar13 + iVar24" (identifier "iVar13") (+ "+") (identifier "iVar24")) (, ",") (identifier "uVar16") (, ",") (number_literal "0xfffffffffffffffe") () ")"))) (; ";")) (expression_statement "FUN_0010f49a(lVar14,0x90);" (call_expression "FUN_0010f49a(lVar14,0x90)" (identifier "FUN_0010f49a") (argument_list "(lVar14,0x90)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x90") () ")"))) (; ";")) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" (identifier "local_88") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (uVar21 == 4) {\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }\n            else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" (if "if") (parenthesized_expression "(uVar21 == 4)" (( "(") (binary_expression "uVar21 == 4" (identifier "uVar21") (== "==") (number_literal "4")) () ")")) (compound_statement "{\nLAB_0017ad29:\n              FUN_00120941(lVar14,param_10);\n            }" ({ "{") (labeled_statement "LAB_0017ad29:\n              FUN_00120941(lVar14,param_10);" (statement_identifier "LAB_0017ad29") (: ":") (expression_statement "FUN_00120941(lVar14,param_10);" (call_expression "FUN_00120941(lVar14,param_10)" (identifier "FUN_00120941") (argument_list "(lVar14,param_10)" (( "(") (identifier "lVar14") (, ",") (identifier "param_10") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" (else "else") (compound_statement "{\n              if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }\n              iVar13 = *(int *)(lVar14 + 0x90);\n              if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }\n              bVar20 = local_c0 != 0 && bVar26;\n              if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }\n              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);\n              if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }\n              local_e4 = 1;\n              if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }\n            }" ({ "{") (if_statement "if ((int)uVar21 < 5) {\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }\n              else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" (if "if") (parenthesized_expression "((int)uVar21 < 5)" (( "(") (binary_expression "(int)uVar21 < 5" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }\n              }" ({ "{") (if_statement "if (0 < (int)uVar21) {\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" (if "if") (parenthesized_expression "(0 < (int)uVar21)" (( "(") (binary_expression "0 < (int)uVar21" (number_literal "0") (< "<") (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21"))) () ")")) (compound_statement "{\n                  FUN_0012834c(param_1,uVar21,lVar23);\n                  goto LAB_0017ad47;\n                }" ({ "{") (expression_statement "FUN_0012834c(param_1,uVar21,lVar23);" (call_expression "FUN_0012834c(param_1,uVar21,lVar23)" (identifier "FUN_0012834c") (argument_list "(param_1,uVar21,lVar23)" (( "(") (identifier "param_1") (, ",") (identifier "uVar21") (, ",") (identifier "lVar23") () ")"))) (; ";")) (goto_statement "goto LAB_0017ad47;" (goto "goto") (statement_identifier "LAB_0017ad47") (; ";")) (} "}"))) (} "}")) (else_clause "else if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" (else "else") (if_statement "if (uVar21 == 6) {\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" (if "if") (parenthesized_expression "(uVar21 == 6)" (( "(") (binary_expression "uVar21 == 6" (identifier "uVar21") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);\n                goto LAB_0017ad29;\n              }" ({ "{") (expression_statement "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);" (call_expression "FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10)" (identifier "FUN_00179afb") (argument_list "(param_1,param_13,param_2,lVar23,iVar10)" (( "(") (identifier "param_1") (, ",") (identifier "param_13") (, ",") (identifier "param_2") (, ",") (identifier "lVar23") (, ",") (identifier "iVar10") () ")"))) (; ";")) (goto_statement "goto LAB_0017ad29;" (goto "goto") (statement_identifier "LAB_0017ad29") (; ";")) (} "}"))))) (expression_statement "iVar13 = *(int *)(lVar14 + 0x90);" (assignment_expression "iVar13 = *(int *)(lVar14 + 0x90)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(lVar14 + 0x90)" (* "*") (cast_expression "(int *)(lVar14 + 0x90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x90)" (( "(") (binary_expression "lVar14 + 0x90" (identifier "lVar14") (+ "+") (number_literal "0x90")) () ")"))))) (; ";")) (if_statement "if (local_fc != 0) {\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" (if "if") (parenthesized_expression "(local_fc != 0)" (( "(") (binary_expression "local_fc != 0" (identifier "local_fc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0011158f(param_1);\n                local_b8 = local_b8 + 1;\n              }" ({ "{") (expression_statement "FUN_0011158f(param_1);" (call_expression "FUN_0011158f(param_1)" (identifier "FUN_0011158f") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "local_b8 = local_b8 + 1;" (assignment_expression "local_b8 = local_b8 + 1" (identifier "local_b8") (= "=") (binary_expression "local_b8 + 1" (identifier "local_b8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "bVar20 = local_c0 != 0 && bVar26;" (assignment_expression "bVar20 = local_c0 != 0 && bVar26" (identifier "bVar20") (= "=") (binary_expression "local_c0 != 0 && bVar26" (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) (&& "&&") (identifier "bVar26"))) (; ";")) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" (if "if") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (compound_statement "{\n                FUN_00120894(lVar14,0x9f,param_4);\n              }" ({ "{") (expression_statement "FUN_00120894(lVar14,0x9f,param_4);" (call_expression "FUN_00120894(lVar14,0x9f,param_4)" (identifier "FUN_00120894") (argument_list "(lVar14,0x9f,param_4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x9f") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10);" (call_expression "FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" (identifier "FUN_00175683") (argument_list "(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,\n                           iVar10)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "local_c0") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "local_dc") (, ",") (cast_expression "(int)sVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar2")) (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (identifier "bVar27") (, ",") (identifier "iVar10") () ")"))) (; ";")) (if_statement "if (bVar20) {\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" (if "if") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (compound_statement "{\n                FUN_00120894(lVar14,0xa0,param_4);\n              }" ({ "{") (expression_statement "FUN_00120894(lVar14,0xa0,param_4);" (call_expression "FUN_00120894(lVar14,0xa0,param_4)" (identifier "FUN_00120894") (argument_list "(lVar14,0xa0,param_4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0xa0") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_fc != 0) {\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" (if "if") (parenthesized_expression "(local_fc != 0)" (( "(") (binary_expression "local_fc != 0" (identifier "local_fc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_001207c0(lVar14,0x52,local_fc,1);\n                uVar12 = FUN_0012083c(lVar14,0xb);\n                FUN_00120437(lVar14,local_c4);\n                local_c4 = *(int *)((long)param_1 + 0x44) - 1;\n                *(uint *)((long)param_1 + 0x44) = local_c4;\n                if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }\n                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }\n                FUN_0012834c(param_1,2,lVar23);\n                FUN_0010f4fb(lVar14,uVar12);\n                local_e4 = 1;\n              }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x52,local_fc,1);" (call_expression "FUN_001207c0(lVar14,0x52,local_fc,1)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x52,local_fc,1)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x52") (, ",") (identifier "local_fc") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "uVar12 = FUN_0012083c(lVar14,0xb);" (assignment_expression "uVar12 = FUN_0012083c(lVar14,0xb)" (identifier "uVar12") (= "=") (call_expression "FUN_0012083c(lVar14,0xb)" (identifier "FUN_0012083c") (argument_list "(lVar14,0xb)" (( "(") (identifier "lVar14") (, ",") (number_literal "0xb") () ")")))) (; ";")) (expression_statement "FUN_00120437(lVar14,local_c4);" (call_expression "FUN_00120437(lVar14,local_c4)" (identifier "FUN_00120437") (argument_list "(lVar14,local_c4)" (( "(") (identifier "lVar14") (, ",") (identifier "local_c4") () ")"))) (; ";")) (expression_statement "local_c4 = *(int *)((long)param_1 + 0x44) - 1;" (assignment_expression "local_c4 = *(int *)((long)param_1 + 0x44) - 1" (identifier "local_c4") (= "=") (binary_expression "*(int *)((long)param_1 + 0x44) - 1" (pointer_expression "*(int *)((long)param_1 + 0x44)" (* "*") (cast_expression "(int *)((long)param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)((long)param_1 + 0x44) = local_c4;" (assignment_expression "*(uint *)((long)param_1 + 0x44) = local_c4" (pointer_expression "*(uint *)((long)param_1 + 0x44)" (* "*") (cast_expression "(uint *)((long)param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x44)" (( "(") (binary_expression "(long)param_1 + 0x44" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "local_c4")) (; ";")) (if_statement "if (*(long *)(lVar23 + 0x48) != 0) {\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" (if "if") (parenthesized_expression "(*(long *)(lVar23 + 0x48) != 0)" (( "(") (binary_expression "*(long *)(lVar23 + 0x48) != 0" (pointer_expression "*(long *)(lVar23 + 0x48)" (* "*") (cast_expression "(long *)(lVar23 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x48)" (( "(") (binary_expression "lVar23 + 0x48" (identifier "lVar23") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);\n                }" ({ "{") (expression_statement "FUN_001207c0(lVar14,0x32,iVar22,local_c4);" (call_expression "FUN_001207c0(lVar14,0x32,iVar22,local_c4)" (identifier "FUN_001207c0") (argument_list "(lVar14,0x32,iVar22,local_c4)" (( "(") (identifier "lVar14") (, ",") (number_literal "0x32") (, ",") (identifier "iVar22") (, ",") (identifier "local_c4") () ")"))) (; ";")) (} "}"))) (for_statement "for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" (for "for") (( "(") (assignment_expression "iVar22 = 0" (identifier "iVar22") (= "=") (number_literal "0")) (; ";") (binary_expression "0 < (iVar13 - iVar11) - iVar22" (number_literal "0") (< "<") (binary_expression "(iVar13 - iVar11) - iVar22" (parenthesized_expression "(iVar13 - iVar11)" (( "(") (binary_expression "iVar13 - iVar11" (identifier "iVar13") (- "-") (identifier "iVar11")) () ")")) (- "-") (identifier "iVar22"))) (; ";") (assignment_expression "iVar22 = iVar22 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);\n                  lVar15 = *(long *)(pbVar17 + 0x10);\n                  bVar19 = *pbVar17;\n                  if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }\n                }" ({ "{") (expression_statement "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);" (assignment_expression "pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010f4bb(lVar14,iVar11 + iVar22)" (identifier "FUN_0010f4bb") (argument_list "(lVar14,iVar11 + iVar22)" (( "(") (identifier "lVar14") (, ",") (binary_expression "iVar11 + iVar22" (identifier "iVar11") (+ "+") (identifier "iVar22")) () ")"))))) (; ";")) (expression_statement "lVar15 = *(long *)(pbVar17 + 0x10);" (assignment_expression "lVar15 = *(long *)(pbVar17 + 0x10)" (identifier "lVar15") (= "=") (pointer_expression "*(long *)(pbVar17 + 0x10)" (* "*") (cast_expression "(long *)(pbVar17 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 0x10)" (( "(") (binary_expression "pbVar17 + 0x10" (identifier "pbVar17") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar19 = *pbVar17;" (assignment_expression "bVar19 = *pbVar17" (identifier "bVar19") (= "=") (pointer_expression "*pbVar17" (* "*") (identifier "pbVar17"))) (; ";")) (if_statement "if (bVar19 != 0x86) {\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" (if "if") (parenthesized_expression "(bVar19 != 0x86)" (( "(") (binary_expression "bVar19 != 0x86" (identifier "bVar19") (!= "!=") (number_literal "0x86")) () ")")) (compound_statement "{\n                    uVar21 = local_c4;\n                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }\n                    if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }\n                    uVar1 = *(undefined2 *)(pbVar17 + 2);\n                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);\n                    FUN_0010f49a(lVar14,uVar1);\n                  }" ({ "{") (expression_statement "uVar21 = local_c4;" (assignment_expression "uVar21 = local_c4" (identifier "uVar21") (= "=") (identifier "local_c4")) (; ";")) (if_statement "if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" (if "if") (parenthesized_expression "(((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0)" (( "(") (binary_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0" (parenthesized_expression "((&DAT_00196340)[(int)(uint)bVar19] & 1)" (( "(") (binary_expression "(&DAT_00196340)[(int)(uint)bVar19] & 1" (subscript_expression "(&DAT_00196340)[(int)(uint)bVar19]" (parenthesized_expression "(&DAT_00196340)" (( "(") (pointer_expression "&DAT_00196340" (& "&") (identifier "DAT_00196340")) () ")")) ([ "[") (cast_expression "(int)(uint)bVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19"))) (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      uVar21 = *(uint *)(pbVar17 + 8);\n                    }" ({ "{") (expression_statement "uVar21 = *(uint *)(pbVar17 + 8);" (assignment_expression "uVar21 = *(uint *)(pbVar17 + 8)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(pbVar17 + 8)" (* "*") (cast_expression "(uint *)(pbVar17 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 8)" (( "(") (binary_expression "pbVar17 + 8" (identifier "pbVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (pbVar17[1] == 0xfd) {\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" (if "if") (parenthesized_expression "(pbVar17[1] == 0xfd)" (( "(") (binary_expression "pbVar17[1] == 0xfd" (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0xfd")) () ")")) (compound_statement "{\n                      local_48 = (int)lVar15;\n                      lVar15 = (long)local_48;\n                    }" ({ "{") (expression_statement "local_48 = (int)lVar15;" (assignment_expression "local_48 = (int)lVar15" (identifier "local_48") (= "=") (cast_expression "(int)lVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar15"))) (; ";")) (expression_statement "lVar15 = (long)local_48;" (assignment_expression "lVar15 = (long)local_48" (identifier "lVar15") (= "=") (cast_expression "(long)local_48" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_48"))) (; ";")) (} "}"))) (expression_statement "uVar1 = *(undefined2 *)(pbVar17 + 2);" (assignment_expression "uVar1 = *(undefined2 *)(pbVar17 + 2)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined2 *)(pbVar17 + 2)" (* "*") (cast_expression "(undefined2 *)(pbVar17 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 2)" (( "(") (binary_expression "pbVar17 + 2" (identifier "pbVar17") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);" (call_expression "FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" (identifier "FUN_00121136") (argument_list "(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,\n                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1])" (( "(") (identifier "lVar14") (, ",") (identifier "bVar19") (, ",") (pointer_expression "*(undefined4 *)(pbVar17 + 4)" (* "*") (cast_expression "(undefined4 *)(pbVar17 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 4)" (( "(") (binary_expression "pbVar17 + 4" (identifier "pbVar17") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "uVar21") (, ",") (pointer_expression "*(undefined4 *)(pbVar17 + 0xc)" (* "*") (cast_expression "(undefined4 *)(pbVar17 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 0xc)" (( "(") (binary_expression "pbVar17 + 0xc" (identifier "pbVar17") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "lVar15") (, ",") (cast_expression "(int)(char)pbVar17[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar17[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")))) () ")"))) (; ";")) (expression_statement "FUN_0010f49a(lVar14,uVar1);" (call_expression "FUN_0010f49a(lVar14,uVar1)" (identifier "FUN_0010f49a") (argument_list "(lVar14,uVar1)" (( "(") (identifier "lVar14") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0012834c(param_1,2,lVar23);" (call_expression "FUN_0012834c(param_1,2,lVar23)" (identifier "FUN_0012834c") (argument_list "(param_1,2,lVar23)" (( "(") (identifier "param_1") (, ",") (number_literal "2") (, ",") (identifier "lVar23") () ")"))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,uVar12);" (call_expression "FUN_0010f4fb(lVar14,uVar12)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,uVar12)" (( "(") (identifier "lVar14") (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "local_e4 = 1;" (assignment_expression "local_e4 = 1" (identifier "local_e4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0017ad47:\n            if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" (statement_identifier "LAB_0017ad47") (: ":") (if_statement "if (lVar23 == local_d0) {\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }\n            else {\n              FUN_00120437(lVar14,iVar8);\n            }" (if "if") (parenthesized_expression "(lVar23 == local_d0)" (( "(") (binary_expression "lVar23 == local_d0" (identifier "lVar23") (== "==") (identifier "local_d0")) () ")")) (compound_statement "{\n              FUN_00120941(lVar14,local_b4 + 1);\n              FUN_0010f4fb(lVar14,local_84);\n            }" ({ "{") (expression_statement "FUN_00120941(lVar14,local_b4 + 1);" (call_expression "FUN_00120941(lVar14,local_b4 + 1)" (identifier "FUN_00120941") (argument_list "(lVar14,local_b4 + 1)" (( "(") (identifier "lVar14") (, ",") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "FUN_0010f4fb(lVar14,local_84);" (call_expression "FUN_0010f4fb(lVar14,local_84)" (identifier "FUN_0010f4fb") (argument_list "(lVar14,local_84)" (( "(") (identifier "lVar14") (, ",") (identifier "local_84") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              FUN_00120437(lVar14,iVar8);\n            }" (else "else") (compound_statement "{\n              FUN_00120437(lVar14,iVar8);\n            }" ({ "{") (expression_statement "FUN_00120437(lVar14,iVar8);" (call_expression "FUN_00120437(lVar14,iVar8)" (identifier "FUN_00120437") (argument_list "(lVar14,iVar8)" (( "(") (identifier "lVar14") (, ",") (identifier "iVar8") () ")"))) (; ";")) (} "}"))))) (if_statement "if (local_dc != iVar9) {\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" (if "if") (parenthesized_expression "(local_dc != iVar9)" (( "(") (binary_expression "local_dc != iVar9" (identifier "local_dc") (!= "!=") (identifier "iVar9")) () ")")) (compound_statement "{\n              FUN_00110ba3(param_1,local_dc,sVar2);\n            }" ({ "{") (expression_statement "FUN_00110ba3(param_1,local_dc,sVar2);" (call_expression "FUN_00110ba3(param_1,local_dc,sVar2)" (identifier "FUN_00110ba3") (argument_list "(param_1,local_dc,sVar2)" (( "(") (identifier "param_1") (, ",") (identifier "local_dc") (, ",") (identifier "sVar2") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}")))) (} "}"))) (expression_statement "lVar23 = *(long *)(lVar23 + 0x28);" (assignment_expression "lVar23 = *(long *)(lVar23 + 0x28)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(lVar23 + 0x28)" (* "*") (cast_expression "(long *)(lVar23 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 0x28)" (( "(") (binary_expression "lVar23 + 0x28" (identifier "lVar23") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_a8 = local_a8 + 1;" (assignment_expression "local_a8 = local_a8 + 1" (identifier "local_a8") (= "=") (binary_expression "local_a8 + 1" (identifier "local_a8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1
               (type_1 *pParse,type_2 *pTab,int *var_51,int iDataCur,int var_63,int var_10,
               int var_1,type_3 var_41,type_3 var_8,int ignoreDest,int *pbMayReplace,
               int *var_7,type_4 *var_35)

{
  int *piVar1;
  type_5 p5;
  short var_57;
  type_6 *db;
  type_7 *var_23;
  bool bVar4;
  type_8 iVar5;
  type_9 var_6;
  int var_55;
  int var_26;
  int var_75;
  int var_58;
  int var_56;
  int var_66;
  int op;
  type_10 *p;
  char *var_32;
  type_11 *pEVar13;
  type_12 *var_60;
  type_13 *var_62;
  type_14 *zP4;
  type_15 *pVVar16;
  type_16 var_74;
  bool bVar18;
  type_9 var_3;
  long var_5;
  type_17 *var_49;
  type_18 zP4_00;
  int var_69;
  type_19 *pCVar22;
  bool var_59;
  bool eMode;
  int var_24;
  type_9 var_17;
  int var_21;
  int var_68;
  type_17 *var_36;
  type_9 local_c8;
  type_9 local_c4;
  type_12 *var_40;
  type_9 var_50;
  int var_53;
  type_17 *var_42;
  int var_52;
  type_9 local_9c;
  int local_90;
  int local_8c;
  int local_88;
  int local_84;
  type_16 var_43;
  type_3 isUpdate;
  int local_48;
  
  var_43 = var_8;
  var_59 = var_1 != 0;
  db = pParse->db;
  p = var_2(pParse);
  var_3 = pTab->tabFlags;
  if ((var_3 & 0x80) == 0) {
    local_9c = 1;
    var_42 = (type_17 *)0x0;
  }
  else {
    var_42 = var_4(pTab);
    local_9c = (type_9)var_42->nKeyCol;
  }
  if ((var_3 >> 0xb & 1) != 0) {
    var_57 = pTab->nCol;
    var_21 = 0;
    var_17 = 0;
    bVar4 = false;
    do {
      for (var_5 = 0; (int)var_5 < (int)var_57; var_5 = var_5 + 1) {
        pCVar22 = pTab->aCol + var_5;
        var_3 = (type_9)pCVar22->notNull;
        if ((pCVar22->notNull != 0) && ((int)pTab->iPKey != (int)var_5)) {
          var_6 = *(type_9 *)&pCVar22->colFlags & 0x60;
          if ((var_6 == 0) || (bVar4)) {
            if (((var_7 == (int *)0x0) || (-1 < var_7[var_5])) || (var_6 != 0)) {
              if (var_8 == '\v') {
                if (var_3 != 0xb) goto LAB_00179e91;
                var_3 = 2;
LAB_00179efc:
                if ((bVar4) && (var_6 == 0)) goto LAB_00179e5a;
              }
              else {
                var_3 = (type_9)var_8;
LAB_00179e91:
                if (var_3 != 5) goto LAB_00179efc;
                if (bVar4) {
                  var_3 = 2;
                }
                else if (pCVar22->pDflt == (type_11 *)0x0) {
                  var_3 = 2;
                }
              }
              iVar5 = var_9(pTab,(type_8)var_5);
              var_26 = var_10 + 1 + (int)iVar5;
              if (var_3 == 2) {
                var_11(pParse);
LAB_00179f5d:
                var_32 = var_12(db,"%s.%s",pTab->zName,pCVar22->zName);
                var_13(p,0x43,0x513,var_3,var_26);
                var_14(p,var_32,-7);
                var_15(p,1);
              }
              else {
                if (var_3 < 3) {
                  if (var_3 == 1) goto LAB_00179f5d;
                }
                else {
                  if (var_3 == 3) goto LAB_00179f5d;
                  if (var_3 == 5) {
                    var_55 = var_16(p,0x33,var_26);
                    var_17 = var_17 + 1;
                    var_18(pParse,pCVar22->pDflt,var_26);
                    var_19(p,var_55);
                    goto LAB_00179e5a;
                  }
                }
                var_20(p,0x32,var_26,ignoreDest);
              }
            }
          }
          else {
            var_21 = var_21 + 1;
          }
        }
LAB_00179e5a:
      }
      if ((var_17 == 0 && var_21 == 0) || (bVar4)) break;
      if ((0 < (int)var_17) && ((pTab->tabFlags & 0x60) != 0)) {
        var_22(pParse,var_10 + 1,pTab);
      }
      bVar4 = true;
    } while( true );
  }
  var_23 = pTab->pCheck;
  bVar4 = false;
  if ((var_23 != (type_7 *)0x0) && ((db->flags & 0x200) == 0)) {
    pParse->iSelfTab = ~var_10;
    var_74 = 2;
    if (var_8 != '\v') {
      var_74 = var_8;
    }
    var_3 = (type_9)var_74;
    for (var_24 = 0; var_24 < var_23->nExpr; var_24 = var_24 + 1) {
      pEVar13 = var_23->a[var_24].pExpr;
      if ((var_7 == (int *)0x0) ||
         (var_26 = var_25(pEVar13,var_7,(type_9)var_41), var_26 != 0)) {
        if (!bVar4) {
          var_27(p,pTab,var_10 + 1);
        }
        var_26 = pParse->nLabel + -1;
        pParse->nLabel = var_26;
        pEVar13 = var_28(db,pEVar13,0);
        if (db->mallocFailed == '\0') {
          var_29(pParse,pEVar13,var_26,0x10);
        }
        var_30(db,pEVar13);
        if (var_3 == 4) {
          var_31(p,ignoreDest);
        }
        else {
          var_32 = var_23->a[var_24].zEName;
          if (var_32 == (char *)0x0) {
            var_32 = pTab->zName;
          }
          if (var_3 == 5) {
            var_3 = 2;
          }
          var_33(pParse,0x113,var_3,var_32,'\0','\x03');
        }
        var_34(p,var_26);
        bVar4 = true;
      }
    }
    pParse->iSelfTab = 0;
  }
  if (var_35 == (type_4 *)0x0) {
    var_53 = 0;
    var_36 = (type_17 *)0x0;
  }
  else if (var_35->pUpsertTarget == (type_7 *)0x0) {
    var_53 = 0;
    var_36 = (type_17 *)0x0;
    var_35 = (type_4 *)0x0;
    var_43 = 4;
  }
  else {
    var_36 = var_35->pUpsertIdx;
    var_53 = 0;
    if (var_36 != (type_17 *)0x0) {
      var_53 = var_37(p,0xb);
    }
  }
  if ((db->flags & 0x6000) == 0) {
    var_40 = (type_12 *)0x0;
    local_c8 = 0;
    var_17 = 0;
  }
  else {
    if (((type_9)db->flags >> 0xd & 1) == 0) {
      var_17 = var_38(pParse,pTab,(int *)0x0,0);
LAB_0017a0bd:
      local_c8 = var_17;
      var_40 = (type_12 *)0x0;
      if (var_17 == 0) goto LAB_0017a102;
    }
    else {
      var_40 = var_39(pParse,pTab,0x7e,(type_7 *)0x0,(int *)0x0);
      if (var_40 == (type_12 *)0x0) {
        var_26 = var_38(pParse,pTab,(int *)0x0,0);
        var_17 = (type_9)(var_26 != 0);
        goto LAB_0017a0bd;
      }
    }
    var_17 = pParse->nMem + 1;
    pParse->nMem = var_17;
    var_20(p,0x45,0,var_17);
    local_c8 = pParse->nLabel - 1;
    pParse->nLabel = local_c8;
  }
LAB_0017a102:
  if ((var_41 == '\0') || (var_42 != (type_17 *)0x0)) {
    var_50 = 0;
    local_90 = 0;
    var_24 = 0;
    var_21 = 0;
    goto LAB_0017a4e9;
  }
  var_26 = pParse->nLabel + -1;
  pParse->nLabel = var_26;
  var_74 = var_43;
  if ((var_43 == 0xb) && (var_74 = pTab->keyConf, pTab->keyConf == 0xb)) {
    var_3 = 2;
    if (var_35 != (type_4 *)0x0) goto LAB_0017a14e;
    if (var_1 != 0) {
      var_3 = 2;
      var_24 = 0;
      goto LAB_0017a437;
    }
    var_13(p,0x20,iDataCur,var_26,var_10);
    var_24 = var_1;
    var_3 = 2;
    goto switchD_0017a48f_caseD_1;
  }
  var_3 = (type_9)var_74;
  if (var_35 != (type_4 *)0x0) {
LAB_0017a14e:
    if (var_35->pUpsertIdx != (type_17 *)0x0) goto LAB_0017a353;
    if (var_35->pUpsertSet != (type_7 *)0x0) {
      if (var_1 != 0) {
        var_3 = 6;
        var_24 = 0;
        goto LAB_0017a437;
      }
      var_13(p,0x20,iDataCur,var_26,var_10);
      var_24 = var_1;
      goto switchD_0017a48f_caseD_6;
    }
    if (var_1 != 0) {
      var_3 = 4;
      var_24 = 0;
      goto LAB_0017a437;
    }
    var_13(p,0x20,iDataCur,var_26,var_10);
    var_24 = var_1;
    goto switchD_0017a48f_caseD_4;
  }
LAB_0017a353:
  if (var_3 == 5) {
    var_24 = 0;
    if ((var_43 != 5) && (pTab->pIndex != (type_17 *)0x0)) {
      var_24 = var_37(p,0xb);
      var_24 = var_24 + 1;
    }
    if (var_1 != 0) {
LAB_0017a437:
      var_13(p,0x35,var_10,var_26,var_1);
      var_15(p,0x90);
      goto LAB_0017a45f;
    }
    var_13(p,0x20,iDataCur,var_26,var_10);
switchD_0017a48f_caseD_5:
    if (var_17 == 0) {
      if (pTab->pIndex == (type_17 *)0x0) {
        var_50 = var_17;
        var_21 = 1;
      }
      else {
        var_44(pParse);
        var_45(pParse,pTab,iDataCur,var_63,(int *)0x0,-1);
        var_50 = var_17;
        var_21 = 1;
      }
    }
    else {
      var_44(pParse);
      var_46
                (pParse,pTab,var_40,iDataCur,var_63,var_10,1,'\0','\x05','\x01',-1);
      var_20(p,0x52,var_17,1);
      var_50 = 1;
      var_21 = 1;
    }
  }
  else {
    var_24 = var_1;
    if (var_1 != 0) {
      var_24 = 0;
      goto LAB_0017a437;
    }
LAB_0017a45f:
    var_13(p,0x20,iDataCur,var_26,var_10);
    switch(var_3) {
    case 5:
      goto switchD_0017a48f_caseD_5;
    case 6:
switchD_0017a48f_caseD_6:
      var_47(pParse,var_35,pTab,(type_17 *)0x0,iDataCur);
    case 4:
switchD_0017a48f_caseD_4:
      var_31(p,ignoreDest);
      var_50 = 0;
      var_21 = 0;
      break;
    default:
      var_3 = 2;
    case 1:
    case 2:
    case 3:
switchD_0017a48f_caseD_1:
      var_48(pParse,var_3,pTab);
      var_50 = 0;
      var_21 = 0;
    }
  }
  var_34(p,var_26);
  local_90 = var_24;
  if (var_24 != 0) {
    local_90 = var_37(p,0xb);
    var_19(p,var_24 + -1);
  }
LAB_0017a4e9:
  var_49 = pTab->pIndex;
  local_c4 = local_c8;
  local_84 = 0;
  var_52 = 0;
  do {
    if (var_49 == (type_17 *)0x0) {
      if (var_24 != 0) {
        var_31(p,var_24);
        var_19(p,local_90);
      }
      if (var_50 != 0) {
        var_20(p,0x14,var_17,local_c4);
        if (var_42 == (type_17 *)0x0) {
          if (var_1 != 0) {
            var_13(p,0x35,var_10,local_c8,var_1);
            var_15(p,0x90);
          }
          var_13(p,0x20,iDataCur,local_c8,var_10);
          var_48(pParse,2,pTab);
        }
        else {
          var_31(p,local_c8);
        }
        var_34(p,local_c4);
      }
      if (((pTab->tabFlags & 0x80) == 0) &&
         (var_13(p,0x5b,var_10 + 1,(int)pTab->nNVCol,var_51[var_52]), !bVar4)) {
        var_27(p,pTab,0);
      }
      *pbMayReplace = var_21;
      return;
    }
    piVar1 = var_51 + var_52;
    if (*piVar1 != 0) {
      if (var_49 == var_36) {
        var_26 = var_53 + 1;
        local_84 = var_31(p,0);
        var_19(p,var_53);
        if (!bVar4) {
LAB_0017a81c:
          var_27(p,pTab,var_10 + 1);
          bVar4 = true;
        }
      }
      else {
        var_26 = pParse->nLabel + -1;
        pParse->nLabel = var_26;
        if ((!bVar4) && (var_36 == (type_17 *)0x0)) goto LAB_0017a81c;
      }
      if (var_49->pPartIdxWhere != (type_11 *)0x0) {
        var_20(p,0x48,0,*piVar1);
        pParse->iSelfTab = ~var_10;
        var_54(pParse,var_49->pPartIdxWhere,var_26,0x10);
        pParse->iSelfTab = 0;
      }
      var_55 = *piVar1;
      var_75 = var_55 + 1;
      var_58 = var_55 + 1;
      for (var_56 = 0; var_56 < (int)(type_9)var_49->nColumn; var_56 = var_56 + 1) {
        var_57 = var_49->aiColumn[var_56];
        if (var_57 == -2) {
          pParse->iSelfTab = ~var_10;
          var_18(pParse,var_49->aColExpr->a[var_56].pExpr,var_58 + var_56);
          pParse->iSelfTab = 0;
        }
        else if ((var_57 == -1) || (var_57 == pTab->iPKey)) {
          var_20(p,0x4f,var_10,var_58 + var_56);
        }
        else {
          iVar5 = var_9(pTab,var_57);
          var_20(p,0x4e,var_10 + 1 + (int)iVar5,var_58 + var_56);
        }
      }
      var_13(p,0x5b,var_75,(type_9)var_49->nColumn,*piVar1);
      eMode = var_49 == var_42;
      if ((var_59 && var_41 == '\0') && (eMode)) {
        var_34(p,var_26);
      }
      else {
        var_3 = (type_9)var_49->onError;
        if (var_49->onError == 0) {
          var_34(p,var_26);
        }
        else {
          if (var_43 == 0xb) {
            if (var_3 == 0xb) {
              var_3 = 2;
            }
          }
          else {
            var_3 = (type_9)var_43;
          }
          if (var_49 == var_36) {
            var_3 = (-(type_9)(var_35->pUpsertSet == (type_7 *)0x0) & 0xfffffffe) + 6;
          }
          if (((((var_52 == 0) && (var_49->pNext == (type_17 *)0x0)) && (var_3 == 5)) && (eMode)) &&
             ((((db->flags & 0x2000) == 0 ||
               (var_60 = var_39(pParse,pTab,0x7e,(type_7 *)0x0,(int *)0x0),
               var_60 == (type_12 *)0x0)) &&
              (((db->flags & 0x4000) == 0 ||
               ((pTab->pFKey == (type_13 *)0x0 &&
                (var_62 = var_61(pTab), var_62 == (type_13 *)0x0)))))))) {
            var_34(p,var_26);
          }
          else {
            var_58 = var_52 + var_63;
            var_56 = var_64(p,0x1c,var_58,var_26,var_75,(type_9)var_49->nKeyCol);
            var_68 = var_75;
            if (var_49 != var_42) {
              var_68 = var_65(pParse,local_9c);
            }
            if ((var_3 == 5) || (var_59)) {
              if ((pTab->tabFlags & 0x80) == 0) {
                var_20(p,0x86,var_58,var_68);
                if (var_1 != 0) {
                  var_13(p,0x35,var_68,var_26,var_1);
                  var_15(p,0x90);
                }
              }
              else {
                var_66 = 0;
                if (var_49 != var_42) {
                  for (; var_66 < (int)(type_9)var_42->nKeyCol; var_66 = var_66 + 1) {
                    iVar5 = var_67(var_49,var_42->aiColumn[var_66]);
                    var_13(p,0x59,var_58,(int)iVar5,var_68 + var_66);
                  }
                }
                if (var_1 != 0) {
                  local_8c = (type_9)var_42->nKeyCol + p->nOp;
                  var_66 = var_68;
                  if ((var_49->field_0x63 & 3) == 2) {
                    var_66 = var_75;
                  }
                  local_88 = 0x34;
                  for (var_69 = 0; var_69 < (int)(type_9)var_42->nKeyCol; var_69 = var_69 + 1) {
                    zP4 = var_70(pParse,var_42->azColl[var_69]);
                    bVar18 = var_42->nKeyCol - 1 == var_69;
                    if (bVar18) {
                      local_8c = var_26;
                    }
                    op = 0x35;
                    if (!bVar18) {
                      op = local_88;
                    }
                    iVar5 = var_9(pTab,var_42->aiColumn[var_69]);
                    var_71(p,op,var_1 + 1 + (int)iVar5,local_8c,var_66 + var_69,
                                      (char *)zP4,-2);
                    var_15(p,0x90);
                    local_88 = op;
                  }
                }
              }
            }
            if (var_3 == 4) {
LAB_0017ad29:
              var_31(p,ignoreDest);
            }
            else {
              if ((int)var_3 < 5) {
                if (0 < (int)var_3) {
                  var_72(pParse,var_3,var_49);
                  goto LAB_0017ad47;
                }
              }
              else if (var_3 == 6) {
                var_47(pParse,var_35,pTab,var_49,var_58);
                goto LAB_0017ad29;
              }
              var_66 = p->nOp;
              if (var_17 != 0) {
                var_44(pParse);
                var_50 = var_50 + 1;
              }
              bVar18 = var_40 != (type_12 *)0x0 && var_59;
              if (bVar18) {
                var_16(p,0x9f,iDataCur);
              }
              var_46
                        (pParse,pTab,var_40,iDataCur,var_63,var_68,(type_8)local_9c,'\0','\x05',
                         eMode,var_58);
              if (bVar18) {
                var_16(p,0xa0,iDataCur);
              }
              var_21 = 1;
              if (var_17 != 0) {
                var_20(p,0x52,var_17,1);
                var_58 = var_37(p,0xb);
                var_34(p,local_c4);
                local_c4 = pParse->nLabel - 1;
                pParse->nLabel = local_c4;
                if (var_49->pPartIdxWhere != (type_11 *)0x0) {
                  var_20(p,0x32,var_55,local_c4);
                }
                for (var_55 = 0; 0 < (var_66 - var_56) - var_55; var_55 = var_55 + 1) {
                  pVVar16 = var_73(p,var_56 + var_55);
                  zP4_00 = pVVar16->p4;
                  var_74 = pVVar16->opcode;
                  if (var_74 != 0x86) {
                    var_3 = local_c4;
                    if ((""[(int)(type_9)var_74] & 1) == 0) {
                      var_3 = pVVar16->p2;
                    }
                    if (pVVar16->p4type == -3) {
                      local_48 = zP4_00.i;
                      zP4_00 = (type_18)(long)local_48;
                    }
                    p5 = pVVar16->p5;
                    var_71(p,(type_9)var_74,pVVar16->var_75,var_3,pVVar16->p3,zP4_00.z,
                                      (int)pVVar16->p4type);
                    var_15(p,p5);
                  }
                }
                var_72(pParse,2,var_49);
                var_19(p,var_58);
                var_21 = 1;
              }
            }
LAB_0017ad47:
            if (var_49 == var_36) {
              var_31(p,var_53 + 1);
              var_19(p,local_84);
            }
            else {
              var_34(p,var_26);
            }
            if (var_68 != var_75) {
              var_76(pParse,var_68,local_9c);
            }
          }
        }
      }
    }
    var_49 = var_49->pNext;
    var_52 = var_52 + 1;
  } while( true );
}


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

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

{
  undefined2 uVar1;
  short sVar2;
  long lVar3;
  int *piVar4;
  bool bVar5;
  short sVar6;
  short sVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  int iVar13;
  long lVar14;
  long lVar15;
  undefined8 uVar16;
  byte *pbVar17;
  byte bVar18;
  byte bVar19;
  bool bVar20;
  uint uVar21;
  int iVar22;
  long lVar23;
  int iVar24;
  undefined8 *puVar25;
  bool bVar26;
  bool bVar27;
  int local_100;
  uint local_fc;
  int local_e4;
  int local_dc;
  long local_d0;
  uint local_c8;
  uint local_c4;
  long local_c0;
  uint local_b8;
  int local_b4;
  long local_b0;
  int local_a8;
  int local_90;
  int local_8c;
  undefined4 local_88;
  undefined4 local_84;
  byte local_74;
  int local_48;
  
  local_74 = param_9;
  bVar26 = param_7 != 0;
  lVar3 = *param_1;
  lVar14 = FUN_00121a1e();
  uVar21 = *(uint *)(param_2 + 8);
  if ((uVar21 & 0x80) == 0) {
    sVar2 = 1;
    local_b0 = 0;
  }
  else {
    local_b0 = FUN_00111247(param_2);
    sVar2 = *(short *)(local_b0 + 0x5e);
  }
  if ((uVar21 >> 0xb & 1) != 0) {
    sVar7 = *(short *)((long)param_2 + 0x46);
    local_e4 = 0;
    local_fc = 0;
    bVar5 = false;
    do {
      for (lVar23 = 0; (int)lVar23 < (int)sVar7; lVar23 = lVar23 + 1) {
        puVar25 = (undefined8 *)(lVar23 * 0x20 + param_2[1]);
        bVar19 = *(byte *)(puVar25 + 3);
        if ((bVar19 != 0) && ((int)*(short *)((long)param_2 + 0x44) != (int)lVar23)) {
          uVar21 = *(uint *)((long)puVar25 + 0x1c) & 0x60;
          if ((uVar21 == 0) || (bVar5)) {
            if (((param_12 == 0) || (-1 < *(int *)(param_12 + lVar23 * 4))) || (uVar21 != 0)) {
              bVar18 = param_9;
              if ((param_9 == 0xb) && (bVar18 = bVar19, bVar19 == 0xb)) {
                bVar18 = 2;
LAB_00179efc:
                if ((bVar5) && (uVar21 == 0)) goto LAB_00179e5a;
              }
              else {
                if (bVar18 != 5) goto LAB_00179efc;
                if (bVar5) {
                  bVar18 = 2;
                }
                else if (puVar25[1] == 0) {
                  bVar18 = 2;
                }
              }
              sVar6 = FUN_001112f9(param_2,(int)(short)lVar23);
              iVar8 = param_6 + 1 + (int)sVar6;
              if (bVar18 == 2) {
                FUN_001115a2(param_1);
LAB_00179f5d:
                uVar16 = FUN_00130001(lVar3,"%s.%s",*param_2,*puVar25);
                FUN_00120767(lVar14,0x43,0x513,bVar18,iVar8);
                FUN_0011aa64(lVar14,uVar16,0xfffffff9);
                FUN_0010f49a(lVar14,1);
              }
              else {
                if (bVar18 < 3) {
                  if (bVar18 == 1) goto LAB_00179f5d;
                }
                else {
                  if (bVar18 == 3) goto LAB_00179f5d;
                  if (bVar18 == 5) {
                    uVar12 = FUN_00120894(lVar14,0x33,iVar8);
                    local_fc = local_fc + 1;
                    FUN_0015ba64(param_1,puVar25[1],iVar8);
                    FUN_0010f4fb(lVar14,uVar12);
                    goto LAB_00179e5a;
                  }
                }
                FUN_001207c0(lVar14,0x32,iVar8,param_10);
              }
            }
          }
          else {
            local_e4 = local_e4 + 1;
          }
        }
LAB_00179e5a:
      }
      if ((local_fc == 0 && local_e4 == 0) || (bVar5)) break;
      if ((0 < (int)local_fc) && ((*(byte *)(param_2 + 8) & 0x60) != 0)) {
        FUN_0015bd19(param_1,param_6 + 1,param_2);
      }
      bVar5 = true;
    } while( true );
  }
  piVar4 = (int *)param_2[6];
  bVar5 = false;
  if ((piVar4 != (int *)0x0) && ((*(byte *)(lVar3 + 0x31) & 2) == 0)) {
    *(uint *)(param_1 + 8) = ~param_6;
    bVar19 = 2;
    if (param_9 != 0xb) {
      bVar19 = param_9;
    }
    for (local_100 = 0; local_100 < *piVar4; local_100 = local_100 + 1) {
      uVar16 = *(undefined8 *)(piVar4 + (long)local_100 * 6 + 2);
      if ((param_12 == 0) || (iVar8 = FUN_001174e9(uVar16,param_12,param_8), iVar8 != 0)) {
        if (!bVar5) {
          FUN_0013c76e(lVar14,param_2,param_6 + 1);
        }
        iVar8 = *(int *)((long)param_1 + 0x44) + -1;
        *(int *)((long)param_1 + 0x44) = iVar8;
        uVar16 = FUN_00135319(lVar3,uVar16,0);
        if (*(char *)(lVar3 + 0x61) == '\0') {
          FUN_00159eda(param_1,uVar16,iVar8,0x10);
        }
        FUN_0011c4af(lVar3,uVar16);
        if (bVar19 == 4) {
          FUN_00120941(lVar14,param_10);
        }
        else {
          lVar23 = *(long *)(piVar4 + (long)local_100 * 6 + 4);
          if (lVar23 == 0) {
            lVar23 = *param_2;
          }
          if (bVar19 == 5) {
            bVar19 = 2;
          }
          FUN_00121c62(param_1,0x113,bVar19,lVar23,0,3);
        }
        FUN_00120437(lVar14,iVar8);
        bVar5 = true;
      }
    }
    *(undefined4 *)(param_1 + 8) = 0;
  }
  if (param_13 == (long *)0x0) {
    local_b4 = 0;
    local_d0 = 0;
  }
  else if (*param_13 == 0) {
    local_b4 = 0;
    local_d0 = 0;
    param_13 = (long *)0x0;
    local_74 = 4;
  }
  else {
    local_d0 = param_13[4];
    local_b4 = 0;
    if (local_d0 != 0) {
      local_b4 = FUN_0012083c(lVar14,0xb);
    }
  }
  if ((*(ulong *)(lVar3 + 0x30) & 0x6000) == 0) {
    local_c0 = 0;
    local_c8 = 0;
    local_fc = 0;
  }
  else {
    if (((uint)*(ulong *)(lVar3 + 0x30) >> 0xd & 1) == 0) {
      local_fc = FUN_001116f3(param_1,param_2,0,0);
LAB_0017a0bd:
      local_c8 = local_fc;
      local_c0 = 0;
      if (local_fc == 0) goto LAB_0017a102;
    }
    else {
      local_c0 = FUN_00111fa0(param_1,param_2,0x7e,0,0);
      if (local_c0 == 0) {
        iVar8 = FUN_001116f3(param_1,param_2,0,0);
        local_fc = (uint)(iVar8 != 0);
        goto LAB_0017a0bd;
      }
    }
    local_fc = (int)param_1[7] + 1;
    *(uint *)(param_1 + 7) = local_fc;
    FUN_001207c0(lVar14,0x45,0,local_fc);
    local_c8 = *(int *)((long)param_1 + 0x44) - 1;
    *(uint *)((long)param_1 + 0x44) = local_c8;
  }
LAB_0017a102:
  if ((param_8 == '\0') || (local_b0 != 0)) {
    local_b8 = 0;
    local_90 = 0;
    local_100 = 0;
    local_e4 = 0;
    goto LAB_0017a4e9;
  }
  iVar8 = *(int *)((long)param_1 + 0x44) + -1;
  *(int *)((long)param_1 + 0x44) = iVar8;
  bVar19 = local_74;
  if ((local_74 == 0xb) &&
     (bVar19 = *(byte *)((long)param_2 + 0x4e), *(byte *)((long)param_2 + 0x4e) == 0xb)) {
    bVar19 = 2;
    if (param_13 != (long *)0x0) goto LAB_0017a14e;
    if (param_7 != 0) {
      bVar19 = 2;
      local_100 = 0;
      goto LAB_0017a437;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    local_100 = param_7;
    bVar19 = 2;
    goto switchD_0017a48f_caseD_1;
  }
  if (param_13 != (long *)0x0) {
LAB_0017a14e:
    if (param_13[4] != 0) goto LAB_0017a353;
    if (param_13[2] != 0) {
      if (param_7 != 0) {
        bVar19 = 6;
        local_100 = 0;
        goto LAB_0017a437;
      }
      FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
      local_100 = param_7;
      goto switchD_0017a48f_caseD_6;
    }
    if (param_7 != 0) {
      bVar19 = 4;
      local_100 = 0;
      goto LAB_0017a437;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    local_100 = param_7;
    goto switchD_0017a48f_caseD_4;
  }
LAB_0017a353:
  if (bVar19 == 5) {
    local_100 = 0;
    if ((local_74 != 5) && (param_2[2] != 0)) {
      local_100 = FUN_0012083c(lVar14,0xb);
      local_100 = local_100 + 1;
    }
    if (param_7 != 0) {
LAB_0017a437:
      FUN_00120767(lVar14,0x35,param_6,iVar8,param_7);
      FUN_0010f49a(lVar14,0x90);
      goto LAB_0017a45f;
    }
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
switchD_0017a48f_caseD_5:
    if (local_fc == 0) {
      if (param_2[2] == 0) {
        local_b8 = local_fc;
        local_e4 = 1;
      }
      else {
        FUN_0011158f(param_1);
        FUN_0016114a(param_1,param_2,param_4,param_5,0,0xffffffff);
        local_b8 = local_fc;
        local_e4 = 1;
      }
    }
    else {
      FUN_0011158f(param_1);
      FUN_00175683(param_1,param_2,local_c0,param_4,param_5,param_6,1,0,5,1,0xffffffffffffffff);
      FUN_001207c0(lVar14,0x52,local_fc,1);
      local_b8 = 1;
      local_e4 = 1;
    }
  }
  else {
    local_100 = param_7;
    if (param_7 != 0) {
      local_100 = 0;
      goto LAB_0017a437;
    }
LAB_0017a45f:
    FUN_00120767(lVar14,0x20,param_4,iVar8,param_6);
    switch(bVar19) {
    case 5:
      goto switchD_0017a48f_caseD_5;
    case 6:
switchD_0017a48f_caseD_6:
      FUN_00179afb(param_1,param_13,param_2,0,param_4);
    case 4:
switchD_0017a48f_caseD_4:
      FUN_00120941(lVar14,param_10);
      local_b8 = 0;
      local_e4 = 0;
      break;
    default:
      bVar19 = 2;
    case 1:
    case 2:
    case 3:
switchD_0017a48f_caseD_1:
      FUN_001300b2(param_1,bVar19,param_2);
      local_b8 = 0;
      local_e4 = 0;
    }
  }
  FUN_00120437(lVar14,iVar8);
  local_90 = local_100;
  if (local_100 != 0) {
    local_90 = FUN_0012083c(lVar14,0xb);
    FUN_0010f4fb(lVar14,local_100 + -1);
  }
LAB_0017a4e9:
  lVar23 = param_2[2];
  local_c4 = local_c8;
  local_84 = 0;
  local_a8 = 0;
  do {
    if (lVar23 == 0) {
      if (local_100 != 0) {
        FUN_00120941(lVar14,local_100);
        FUN_0010f4fb(lVar14,local_90);
      }
      if (local_b8 != 0) {
        FUN_001207c0(lVar14,0x14,local_fc,local_c4);
        if (local_b0 == 0) {
          if (param_7 != 0) {
            FUN_00120767(lVar14,0x35,param_6,local_c8,param_7);
            FUN_0010f49a(lVar14,0x90);
          }
          FUN_00120767(lVar14,0x20,param_4,local_c8,param_6);
          FUN_001300b2(param_1,2,param_2);
        }
        else {
          FUN_00120941(lVar14,local_c8);
        }
        FUN_00120437(lVar14,local_c4);
      }
      if (((*(byte *)(param_2 + 8) & 0x80) == 0) &&
         (FUN_00120767(lVar14,0x5b,param_6 + 1,(int)(short)param_2[9],
                       *(undefined4 *)(param_3 + (long)local_a8 * 4)), !bVar5)) {
        FUN_0013c76e(lVar14,param_2,0);
      }
      *param_11 = local_e4;
      return;
    }
    piVar4 = (int *)(param_3 + (long)local_a8 * 4);
    if (*piVar4 != 0) {
      if (lVar23 == local_d0) {
        iVar8 = local_b4 + 1;
        local_84 = FUN_00120941(lVar14,0);
        FUN_0010f4fb(lVar14,local_b4);
        if (!bVar5) {
LAB_0017a81c:
          FUN_0013c76e(lVar14,param_2,param_6 + 1);
          bVar5 = true;
        }
      }
      else {
        iVar8 = *(int *)((long)param_1 + 0x44) + -1;
        *(int *)((long)param_1 + 0x44) = iVar8;
        if ((!bVar5) && (local_d0 == 0)) goto LAB_0017a81c;
      }
      if (*(long *)(lVar23 + 0x48) != 0) {
        FUN_001207c0(lVar14,0x48,0,*piVar4);
        *(uint *)(param_1 + 8) = ~param_6;
        FUN_00160eed(param_1,*(undefined8 *)(lVar23 + 0x48),iVar8,0x10);
        *(undefined4 *)(param_1 + 8) = 0;
      }
      iVar22 = *piVar4;
      iVar9 = iVar22 + 1;
      iVar10 = iVar22 + 1;
      for (iVar11 = 0; iVar11 < (int)(uint)*(ushort *)(lVar23 + 0x60); iVar11 = iVar11 + 1) {
        sVar7 = *(short *)(*(long *)(lVar23 + 8) + (long)iVar11 * 2);
        if (sVar7 == -2) {
          *(uint *)(param_1 + 8) = ~param_6;
          FUN_0015ba64(param_1,*(undefined8 *)((long)iVar11 * 0x18 + *(long *)(lVar23 + 0x50) + 8),
                       iVar10 + iVar11);
          *(undefined4 *)(param_1 + 8) = 0;
        }
        else if ((sVar7 == -1) || (sVar7 == *(short *)((long)param_2 + 0x44))) {
          FUN_001207c0(lVar14,0x4f,param_6,iVar10 + iVar11);
        }
        else {
          sVar7 = FUN_001112f9(param_2);
          FUN_001207c0(lVar14,0x4e,param_6 + 1 + (int)sVar7,iVar10 + iVar11);
        }
      }
      FUN_00120767(lVar14,0x5b,iVar9,*(ushort *)(lVar23 + 0x60),*piVar4);
      bVar27 = lVar23 == local_b0;
      if ((bVar26 && param_8 == '\0') && (bVar27)) {
        FUN_00120437(lVar14,iVar8);
      }
      else {
        uVar21 = (uint)*(byte *)(lVar23 + 0x62);
        if (*(byte *)(lVar23 + 0x62) == 0) {
          FUN_00120437(lVar14,iVar8);
        }
        else {
          if (local_74 == 0xb) {
            if (uVar21 == 0xb) {
              uVar21 = 2;
            }
          }
          else {
            uVar21 = (uint)local_74;
          }
          if (lVar23 == local_d0) {
            uVar21 = (-(uint)(param_13[2] == 0) & 0xfffffffe) + 6;
          }
          if (((((local_a8 == 0) && (*(long *)(lVar23 + 0x28) == 0)) && (uVar21 == 5)) && (bVar27))
             && ((((*(byte *)(lVar3 + 0x31) & 0x20) == 0 ||
                  (lVar15 = FUN_00111fa0(param_1,param_2,0x7e,0,0), lVar15 == 0)) &&
                 (((*(byte *)(lVar3 + 0x31) & 0x40) == 0 ||
                  ((param_2[4] == 0 && (lVar15 = FUN_00111606(param_2), lVar15 == 0)))))))) {
            FUN_00120437(lVar14,iVar8);
          }
          else {
            iVar10 = local_a8 + param_5;
            iVar11 = FUN_0012085a(lVar14,0x1c,iVar10,iVar8,iVar9,*(undefined2 *)(lVar23 + 0x5e));
            local_dc = iVar9;
            if (lVar23 != local_b0) {
              local_dc = FUN_00110b75(param_1,sVar2);
            }
            if ((uVar21 == 5) || (bVar26)) {
              if ((*(byte *)(param_2 + 8) & 0x80) == 0) {
                FUN_001207c0(lVar14,0x86,iVar10,local_dc);
                if (param_7 != 0) {
                  FUN_00120767(lVar14,0x35,local_dc,iVar8,param_7);
                  FUN_0010f49a(lVar14,0x90);
                }
              }
              else {
                iVar13 = 0;
                if (lVar23 != local_b0) {
                  for (; iVar13 < (int)(uint)*(ushort *)(local_b0 + 0x5e); iVar13 = iVar13 + 1) {
                    sVar7 = FUN_00111273(lVar23,(int)*(short *)(*(long *)(local_b0 + 8) +
                                                               (long)iVar13 * 2));
                    FUN_00120767(lVar14,0x59,iVar10,(int)sVar7,local_dc + iVar13);
                  }
                }
                if (param_7 != 0) {
                  local_8c = (uint)*(ushort *)(local_b0 + 0x5e) + *(int *)(lVar14 + 0x90);
                  iVar13 = local_dc;
                  if ((*(byte *)(lVar23 + 99) & 3) == 2) {
                    iVar13 = iVar9;
                  }
                  local_88 = 0x34;
                  for (iVar24 = 0; iVar24 < (int)(uint)*(ushort *)(local_b0 + 0x5e);
                      iVar24 = iVar24 + 1) {
                    uVar16 = FUN_001372fb(param_1,*(undefined8 *)
                                                   (*(long *)(local_b0 + 0x40) + (long)iVar24 * 8));
                    bVar20 = *(ushort *)(local_b0 + 0x5e) - 1 == iVar24;
                    if (bVar20) {
                      local_8c = iVar8;
                    }
                    uVar12 = 0x35;
                    if (!bVar20) {
                      uVar12 = local_88;
                    }
                    sVar7 = FUN_001112f9(param_2,(int)*(short *)(*(long *)(local_b0 + 8) +
                                                                (long)iVar24 * 2));
                    FUN_00121136(lVar14,uVar12,param_7 + 1 + (int)sVar7,local_8c,iVar13 + iVar24,
                                 uVar16,0xfffffffffffffffe);
                    FUN_0010f49a(lVar14,0x90);
                    local_88 = uVar12;
                  }
                }
              }
            }
            if (uVar21 == 4) {
LAB_0017ad29:
              FUN_00120941(lVar14,param_10);
            }
            else {
              if ((int)uVar21 < 5) {
                if (0 < (int)uVar21) {
                  FUN_0012834c(param_1,uVar21,lVar23);
                  goto LAB_0017ad47;
                }
              }
              else if (uVar21 == 6) {
                FUN_00179afb(param_1,param_13,param_2,lVar23,iVar10);
                goto LAB_0017ad29;
              }
              iVar13 = *(int *)(lVar14 + 0x90);
              if (local_fc != 0) {
                FUN_0011158f(param_1);
                local_b8 = local_b8 + 1;
              }
              bVar20 = local_c0 != 0 && bVar26;
              if (bVar20) {
                FUN_00120894(lVar14,0x9f,param_4);
              }
              FUN_00175683(param_1,param_2,local_c0,param_4,param_5,local_dc,(int)sVar2,0,5,bVar27,
                           iVar10);
              if (bVar20) {
                FUN_00120894(lVar14,0xa0,param_4);
              }
              local_e4 = 1;
              if (local_fc != 0) {
                FUN_001207c0(lVar14,0x52,local_fc,1);
                uVar12 = FUN_0012083c(lVar14,0xb);
                FUN_00120437(lVar14,local_c4);
                local_c4 = *(int *)((long)param_1 + 0x44) - 1;
                *(uint *)((long)param_1 + 0x44) = local_c4;
                if (*(long *)(lVar23 + 0x48) != 0) {
                  FUN_001207c0(lVar14,0x32,iVar22,local_c4);
                }
                for (iVar22 = 0; 0 < (iVar13 - iVar11) - iVar22; iVar22 = iVar22 + 1) {
                  pbVar17 = (byte *)FUN_0010f4bb(lVar14,iVar11 + iVar22);
                  lVar15 = *(long *)(pbVar17 + 0x10);
                  bVar19 = *pbVar17;
                  if (bVar19 != 0x86) {
                    uVar21 = local_c4;
                    if (((&DAT_00196340)[(int)(uint)bVar19] & 1) == 0) {
                      uVar21 = *(uint *)(pbVar17 + 8);
                    }
                    if (pbVar17[1] == 0xfd) {
                      local_48 = (int)lVar15;
                      lVar15 = (long)local_48;
                    }
                    uVar1 = *(undefined2 *)(pbVar17 + 2);
                    FUN_00121136(lVar14,bVar19,*(undefined4 *)(pbVar17 + 4),uVar21,
                                 *(undefined4 *)(pbVar17 + 0xc),lVar15,(int)(char)pbVar17[1]);
                    FUN_0010f49a(lVar14,uVar1);
                  }
                }
                FUN_0012834c(param_1,2,lVar23);
                FUN_0010f4fb(lVar14,uVar12);
                local_e4 = 1;
              }
            }
LAB_0017ad47:
            if (lVar23 == local_d0) {
              FUN_00120941(lVar14,local_b4 + 1);
              FUN_0010f4fb(lVar14,local_84);
            }
            else {
              FUN_00120437(lVar14,iVar8);
            }
            if (local_dc != iVar9) {
              FUN_00110ba3(param_1,local_dc,sVar2);
            }
          }
        }
      }
    }
    lVar23 = *(long *)(lVar23 + 0x28);
    local_a8 = local_a8 + 1;
  } while( true );
}

