
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int resolveSelectStep(Walker *pWalker,Select *p)

{
  undefined1 *puVar1;
  byte bVar2;
  u8 uVar3;
  int iVar4;
  anon_union_4_16_1c331a60_for_u pOuterNC;
  Parse *pParse;
  sqlite3 *psVar5;
  Select *pSVar6;
  Select *pSVar7;
  anon_union_4_16_1c331a60_for_u aVar8;
  char *pcVar9;
  ExprList *pEVar10;
  Window *pWVar11;
  Parse *pParse_00;
  sqlite3 *psVar12;
  Expr *pEVar13;
  ExprList *pEVar14;
  bool bVar15;
  uint uVar16;
  int iVar17;
  char *pcVar18;
  Expr *pEVar19;
  int iVar20;
  Expr *pE;
  SrcList *pSVar21;
  ExprList_item *pEVar22;
  Expr *pEVar23;
  int iVar24;
  Expr *p_00;
  Select *pSelect;
  int iVar25;
  int in_GS_OFFSET;
  Expr *in_stack_ffffff48;
  int in_stack_ffffff4c;
  u8 **pzBuffer;
  Expr *in_stack_ffffff54;
  Select *local_a0;
  int local_90;
  Expr *local_8c;
  int local_7c;
  int iCol;
  NameContext sNC;
  Walker w;
  Token x;
  
  iVar4 = *(int *)(in_GS_OFFSET + 0x14);
  uVar16 = p->selFlags;
  if ((uVar16 & 4) == 0) {
    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;
    pParse = pWalker->pParse;
    psVar5 = pParse->db;
    if ((uVar16 & 0x40) != 0) {
      local_7c = 0;
      pSVar6 = p->pPrior;
      pSelect = p;
      do {
        pSelect->selFlags = uVar16 | 4;
        uVar16 = 0;
        do {
          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;
          uVar16 = uVar16 + 4;
        } while (uVar16 < 0x18);
        sNC.pParse = pParse;
        sNC.pWinSelect = pSelect;
        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);
        if (iVar17 != 0) goto LAB_000548b8;
        pSVar21 = pSelect->pSrc;
        if ((pSelect->selFlags & 0x10000) != 0) {
          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;
          pSelect->pOrderBy = (ExprList *)0x0;
        }
        if (0 < pSVar21->nSrc) {
          iVar17 = 0;
          do {
            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||
                   ((pSVar7->selFlags & 4) != 0))) {
              iVar17 = iVar17 + 1;
              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;
            }
            iVar24 = 0;
            pcVar18 = pParse->zAuthContext;
            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;
                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {
              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].
                                     pEList;
            }
            pcVar9 = pSVar21->a[iVar17].zName;
            if (pcVar9 != (char *)0x0) {
              pParse->zAuthContext = pcVar9;
            }
            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;
            w.pParse = pParse;
            w.xExprCallback = resolveExprStep;
            w.xSelectCallback = resolveSelectStep;
            w.u = pOuterNC;
            sqlite3WalkSelect(&w,pSVar7);
            pParse->zAuthContext = pcVar18;
            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))
            goto LAB_000548b8;
            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {
              iVar24 = iVar24 - (aVar8.pNC)->nRef;
            }
            iVar25 = iVar17 + 1;
            pSVar21->a[iVar17].fg.field_0x1 =
                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;
            pSVar21 = pSelect->pSrc;
            iVar17 = iVar25;
          } while (iVar25 < pSVar21->nSrc);
        }
LAB_00054743:
        sNC.ncFlags = 0x4001;
        sNC.pSrcList = pSVar21;
        sNC.pNext = (NameContext *)pOuterNC;
        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);
        if (iVar17 != 0) goto LAB_000548b8;
        pEVar10 = pSelect->pGroupBy;
        uVar16 = sNC.ncFlags & 0xffffbfff;
        if (pEVar10 == (ExprList *)0x0) {
          if ((sNC.ncFlags & 0x10U) == 0) {
            uVar16 = sNC.ncFlags & 0xffffbffe;
          }
          else {
            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;
          }
          if (pSelect->pHaving != (Expr *)0x0) {
            pcVar18 = "a GROUP BY clause is required before HAVING";
            sNC.ncFlags = uVar16;
            goto LAB_00054968;
          }
        }
        else {
          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;
        }
        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;
        sNC.ncFlags = uVar16 | 0x80;
        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);
        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))
        goto LAB_000548b8;
        pSVar21 = pSelect->pSrc;
        if (0 < pSVar21->nSrc) {
          iVar17 = 0;
          do {
            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {
              iVar17 = iVar17 + 1;
              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;
            }
            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);
            if (iVar24 != 0) goto LAB_000548b8;
            pSVar21 = pSelect->pSrc;
            iVar17 = iVar17 + 1;
          } while (iVar17 < pSVar21->nSrc);
        }
LAB_00054818:
        sNC.ncFlags = sNC.ncFlags | 0x4001;
        sNC.pNext = (NameContext *)0x0;
        if ((pSelect->selFlags & 0x10000) != 0) {
          pSVar7 = pSVar21->a[0].pSelect;
          pSelect->pOrderBy = pSVar7->pOrderBy;
          pSVar7->pOrderBy = (ExprList *)0x0;
        }
        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&
            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||
           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;
        if (pEVar10 != (ExprList *)0x0) {
          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");
          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
          pEVar22 = pEVar10->a;
          if (0 < pEVar10->nExpr) {
            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {
LAB_000549de:
              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";
              goto LAB_00054968;
            }
            iVar17 = 0;
            while( true ) {
              iVar17 = iVar17 + 1;
              pEVar22 = pEVar22 + 1;
              if (iVar17 == pEVar10->nExpr) break;
              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;
            }
          }
        }
        if (1 < pParse->eParseMode) {
          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {
            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);
            if ((iVar17 != 0) ||
               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))
            goto LAB_000548b8;
          }
        }
        pSVar7 = pSelect->pNext;
        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {
          if ((pSVar7->selFlags & 0x200) == 0) {
            pcVar18 = 
            "SELECTs to the left and right of %s do not have the same number of result columns";
          }
          else {
            pcVar18 = "all VALUES must have the same number of terms";
          }
          goto LAB_00054968;
        }
        pSelect = pSelect->pPrior;
        local_7c = local_7c + 1;
        if (pSelect == (Select *)0x0) goto LAB_00054a40;
        uVar16 = pSelect->selFlags;
      } while( true );
    }
    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);
    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
  }
  goto LAB_000548e8;
LAB_00054a40:
  if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {
    iVar17 = pEVar10->nExpr;
    psVar5 = pParse->db;
    if (psVar5->aLimit[2] < iVar17) {
      pcVar18 = "too many terms in ORDER BY clause";
    }
    else {
      iVar24 = 0;
      if (0 < iVar17) {
        do {
          iVar25 = iVar24 + 1;
          puVar1 = &pEVar10->a[iVar24].field_0x9;
          *puVar1 = *puVar1 & 0xfb;
          iVar24 = iVar25;
        } while (iVar17 != iVar25);
      }
      p->pNext = (Select *)0x0;
      pSVar6 = p->pPrior;
      if (p->pPrior == (Select *)0x0) {
        local_a0 = p;
      }
      else {
        do {
          local_a0 = pSVar6;
          local_a0->pNext = p;
          pSVar6 = local_a0->pPrior;
          p = local_a0;
        } while (local_a0->pPrior != (Select *)0x0);
      }
      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {
        bVar15 = false;
        iVar24 = 0;
        pEVar22 = pEVar10->a;
        do {
          iCol = -1;
          if ((pEVar22->field_0x9 & 4) == 0) {
            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {
              while( true ) {
                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;
                if ((p_00->flags & 0x40000) == 0) break;
                p_00 = ((p_00->x).pList)->a[0].pExpr;
                if (p_00 == (Expr *)0x0) goto LAB_00054b33;
              }
            }
LAB_00054b33:
            pzBuffer = (u8 **)0x54b3e;
            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);
            if (iVar17 == 0) {
              if (p_00->op == ';') {
                pzBuffer = (u8 **)0x54ce4;
                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);
                if (iCol == 0) goto LAB_00054c09;
              }
              else {
                iCol = 0;
LAB_00054c09:
                local_8c = p_00;
                if (pParse->eParseMode < 2) {
                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);
                }
                iVar17 = iCol;
                if (psVar5->mallocFailed == '\0') {
                  pEVar14 = local_a0->pEList;
                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;
                  w.walkerDepth = 0;
                  w.eCode = 0;
                  w._22_2_ = 0;
                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;
                  psVar12 = pParse->db;
                  w.u.n = 0x81;
                  uVar3 = psVar12->suppressErr;
                  if (pParse->eParseMode < 2) {
                    psVar12->suppressErr = '\x01';
                  }
                  w.pParse = pParse;
                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;
                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);
                  psVar12->suppressErr = uVar3;
                  iVar25 = 0;
                  iVar17 = iVar25;
                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {
                    do {
                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,
                                                  -1);
                      local_90 = local_90 + 1;
                      iVar17 = local_90;
                      if (iVar20 < 2) break;
                      iVar17 = iVar25;
                    } while (local_90 < pEVar14->nExpr);
                  }
                }
                iCol = iVar17;
                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {
                  sqlite3ExprDeleteNN(psVar5,local_8c);
                }
              }
              if (iCol < 1) {
                bVar15 = true;
                iVar17 = pEVar10->nExpr;
                goto LAB_00054b7d;
              }
            }
            else {
              psVar12 = pParse_00->db;
              if ((iCol < 1) || ((int)psVar12 < iCol)) {
                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",
                                iVar24 + 1,"ORDER",psVar12);
                goto LAB_000548b8;
              }
            }
            if (pParse->eParseMode < 2) {
              w.pParse = (Parse *)0x0;
              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;
              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);
              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;
              pEVar13 = pEVar22->pExpr;
              pEVar19->flags = pEVar19->flags | 0x400;
              (pEVar19->u).iValue = iCol;
              if (p_00 == pEVar13) {
                pEVar22->pExpr = pEVar19;
              }
              else {
                do {
                  pEVar23 = pEVar13;
                  pEVar13 = pEVar23->pLeft;
                } while (pEVar13->op == 'o');
                pEVar23->pLeft = pEVar19;
              }
              if (p_00 != (Expr *)0x0) {
                sqlite3ExprDeleteNN(psVar5,p_00);
              }
              (pEVar22->u).x.iOrderByCol = (u16)iCol;
            }
            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;
            iVar17 = pEVar10->nExpr;
          }
LAB_00054b7d:
          iVar24 = iVar24 + 1;
          pEVar22 = pEVar22 + 1;
        } while (iVar24 < iVar17);
        local_a0 = local_a0->pNext;
        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;
      }
      if (iVar17 < 1) goto LAB_000548e8;
      bVar2 = pEVar10->a[0].field_0x9;
      iVar24 = 0;
      while ((bVar2 & 4) != 0) {
        if (iVar17 == iVar24 + 1) goto LAB_000548e8;
        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);
        iVar24 = iVar24 + 1;
      }
      pcVar18 = "%r ORDER BY term does not match any column in the result set";
    }
LAB_00054968:
    sqlite3ErrorMsg(pParse,pcVar18);
LAB_000548b8:
    iVar17 = 2;
    goto LAB_000548ed;
  }
LAB_000548e8:
  iVar17 = 1;
LAB_000548ed:
  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar17;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x00054b5a) */

undefined4 FUN_00054540(int *param_1,int param_2)

{
  byte *pbVar1;
  byte bVar2;
  undefined1 uVar3;
  int iVar4;
  undefined4 *puVar5;
  char *pcVar6;
  code *pcVar7;
  bool bVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  char *pcVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  int iVar17;
  char *pcVar18;
  int iVar19;
  int iVar20;
  int *piVar21;
  int in_GS_OFFSET;
  int local_a0;
  int local_90;
  char *local_8c;
  int local_7c;
  int local_64;
  int *local_5c [2];
  int local_54;
  uint local_48;
  int local_44;
  int *local_40;
  code *local_3c;
  code *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  int local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x54549;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar9 = *(uint *)(param_2 + 4);
  if ((uVar9 & 4) == 0) {
    iVar17 = param_1[6];
    param_1 = (int *)*param_1;
    iVar14 = *param_1;
    if ((uVar9 & 0x40) != 0) {
      local_7c = 0;
      iVar20 = *(int *)(param_2 + 0x34);
      iVar16 = param_2;
      do {
        *(uint *)(iVar16 + 4) = uVar9 | 4;
        uVar9 = 0;
        do {
          *(undefined4 *)((int)local_5c + uVar9) = 0;
          uVar9 = uVar9 + 4;
        } while (uVar9 < 0x18);
        local_44 = iVar16;
        iVar10 = FUN_0003c9d0();
        if (iVar10 != 0) goto LAB_000548b8;
        piVar21 = *(int **)(iVar16 + 0x20);
        if ((*(byte *)(iVar16 + 6) & 1) != 0) {
          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);
          *(undefined4 *)(iVar16 + 0x30) = 0;
        }
        if (0 < *piVar21) {
          iVar10 = 0;
          do {
            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&
                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {
              iVar19 = 0;
              iVar11 = param_1[0x3d];
              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {
                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);
              }
              if (piVar21[iVar10 * 0x11 + 4] != 0) {
                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];
              }
              local_34 = 0;
              local_40 = param_1;
              local_3c = FUN_00059220;
              local_38 = FUN_00054540;
              local_28 = iVar17;
              FUN_00028900();
              param_1[0x3d] = iVar11;
              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))
              goto LAB_000548b8;
              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {
                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);
              }
              iVar11 = iVar10 * 0x44;
              iVar10 = iVar10 + 1;
              *(byte *)((int)piVar21 + iVar11 + 0x2d) =
                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;
              piVar21 = *(int **)(iVar16 + 0x20);
              if (*piVar21 <= iVar10) goto LAB_00054743;
            }
            iVar10 = iVar10 + 1;
          } while (iVar10 < *piVar21);
        }
LAB_00054743:
        local_48 = 0x4001;
        local_5c[0] = piVar21;
        local_54 = iVar17;
        iVar10 = FUN_0003cad0();
        if (iVar10 != 0) goto LAB_000548b8;
        piVar21 = *(int **)(iVar16 + 0x28);
        uVar9 = local_48 & 0xffffbfff;
        if (piVar21 == (int *)0x0) {
          if ((local_48 & 0x10) == 0) {
            uVar9 = local_48 & 0xffffbffe;
          }
          else {
            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;
          }
          if (*(int *)(iVar16 + 0x2c) != 0) {
            pcVar13 = "a GROUP BY clause is required before HAVING";
            local_48 = uVar9;
            goto LAB_00054968;
          }
        }
        else {
          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;
        }
        local_5c[1] = *(int **)(iVar16 + 0x1c);
        local_48 = uVar9 | 0x80;
        iVar10 = FUN_0003c9d0();
        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;
        piVar15 = *(int **)(iVar16 + 0x20);
        if (0 < *piVar15) {
          iVar10 = 0;
          do {
            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {
              iVar11 = FUN_0003cad0();
              if (iVar11 != 0) goto LAB_000548b8;
              piVar15 = *(int **)(iVar16 + 0x20);
              iVar10 = iVar10 + 1;
              if (*piVar15 <= iVar10) goto LAB_00054818;
            }
            iVar10 = iVar10 + 1;
          } while (iVar10 < *piVar15);
        }
LAB_00054818:
        local_48 = local_48 | 0x4001;
        local_54 = 0;
        if ((*(byte *)(iVar16 + 6) & 1) != 0) {
          iVar10 = piVar15[7];
          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);
          *(undefined4 *)(iVar10 + 0x30) = 0;
        }
        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)
            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
        local_48 = local_48 & 0xffffbfff;
        if (piVar21 != (int *)0x0) {
          iVar10 = FUN_00053c40("GROUP");
          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
          piVar15 = piVar21 + 1;
          if (0 < *piVar21) {
            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {
LAB_000549de:
              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";
              goto LAB_00054968;
            }
            iVar10 = 0;
            while( true ) {
              iVar10 = iVar10 + 1;
              piVar15 = piVar15 + 4;
              if (iVar10 == *piVar21) break;
              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;
            }
          }
        }
        if (1 < *(byte *)(param_1 + 0x33)) {
          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {
            iVar11 = FUN_0003cad0();
            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;
          }
        }
        iVar10 = *(int *)(iVar16 + 0x38);
        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {
          if ((*(byte *)(iVar10 + 5) & 2) == 0) {
            pcVar13 = 
            "SELECTs to the left and right of %s do not have the same number of result columns";
          }
          else {
            pcVar13 = "all VALUES must have the same number of terms";
          }
          goto LAB_00054968;
        }
        iVar16 = *(int *)(iVar16 + 0x34);
        local_7c = local_7c + 1;
        if (iVar16 == 0) goto LAB_00054a40;
        uVar9 = *(uint *)(iVar16 + 4);
      } while( true );
    }
    FUN_0002a7d0();
    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
  }
  goto LAB_000548e8;
LAB_00054a40:
  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {
    iVar14 = *piVar21;
    iVar17 = *param_1;
    if (*(int *)(iVar17 + 0x70) < iVar14) {
      pcVar13 = "too many terms in ORDER BY clause";
    }
    else {
      iVar20 = 0;
      if (0 < iVar14) {
        do {
          iVar16 = iVar20 + 1;
          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);
          *pbVar1 = *pbVar1 & 0xfb;
          iVar20 = iVar16;
        } while (iVar14 != iVar16);
      }
      *(undefined4 *)(param_2 + 0x38) = 0;
      iVar20 = *(int *)(param_2 + 0x34);
      if (*(int *)(param_2 + 0x34) == 0) {
        local_a0 = param_2;
      }
      else {
        do {
          local_a0 = iVar20;
          *(int *)(local_a0 + 0x38) = param_2;
          iVar20 = *(int *)(local_a0 + 0x34);
          param_2 = local_a0;
        } while (*(int *)(local_a0 + 0x34) != 0);
      }
      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {
        bVar8 = false;
        iVar20 = 0;
        piVar15 = piVar21 + 1;
        do {
          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {
            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;
                pcVar13 = *(char **)(pcVar13 + 0xc)) {
              while( true ) {
                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;
                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;
                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);
                if (pcVar13 == (char *)0x0) goto LAB_00054b33;
              }
            }
LAB_00054b33:
            iVar14 = FUN_00029640();
            if (iVar14 != 0) {
              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",
                           iVar20 + 1,"ORDER",*puVar5);
              goto LAB_000548b8;
            }
            if (*pcVar13 == ';') {
              local_64 = FUN_000291e0();
              if (local_64 == 0) goto LAB_00054c09;
            }
            else {
              local_64 = 0;
LAB_00054c09:
              local_8c = pcVar13;
              if (*(byte *)(param_1 + 0x33) < 2) {
                local_8c = (char *)FUN_00052c60(0);
              }
              if (*(char *)(iVar17 + 0x4d) == '\0') {
                pcVar7 = *(code **)(local_a0 + 0x1c);
                local_34 = 0;
                local_30 = 0;
                local_2c = 0;
                local_24 = 0;
                local_3c = *(code **)(local_a0 + 0x20);
                iVar14 = *param_1;
                local_28 = 0x81;
                uVar3 = *(undefined1 *)(iVar14 + 0x51);
                if (*(byte *)(param_1 + 0x33) < 2) {
                  *(undefined1 *)(iVar14 + 0x51) = 1;
                }
                local_40 = param_1;
                local_38 = pcVar7;
                iVar16 = FUN_0003c9d0();
                *(undefined1 *)(iVar14 + 0x51) = uVar3;
                iVar14 = 0;
                local_64 = iVar14;
                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {
                  do {
                    iVar16 = FUN_0004e140(0xffffffff);
                    local_90 = local_90 + 1;
                    local_64 = local_90;
                    if (iVar16 < 2) break;
                    local_64 = iVar14;
                  } while (local_90 < *(int *)pcVar7);
                }
              }
              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {
                FUN_000432e0();
              }
            }
            if (local_64 < 1) {
              bVar8 = true;
              iVar14 = *piVar21;
            }
            else {
              if (*(byte *)(param_1 + 0x33) < 2) {
                local_40 = (int *)0x0;
                local_3c = (code *)0x0;
                iVar14 = FUN_0002ef20(0);
                if (iVar14 == 0) goto LAB_000548b8;
                pcVar6 = (char *)*piVar15;
                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;
                *(int *)(iVar14 + 8) = local_64;
                if (pcVar13 == pcVar6) {
                  *piVar15 = iVar14;
                }
                else {
                  do {
                    pcVar18 = pcVar6;
                    pcVar6 = *(char **)(pcVar18 + 0xc);
                  } while (*pcVar6 == 'o');
                  *(int *)(pcVar18 + 0xc) = iVar14;
                }
                if (pcVar13 != (char *)0x0) {
                  FUN_000432e0();
                }
                *(short *)(piVar15 + 3) = (short)local_64;
              }
              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;
              iVar14 = *piVar21;
            }
          }
          iVar20 = iVar20 + 1;
          piVar15 = piVar15 + 4;
        } while (iVar20 < iVar14);
        local_a0 = *(int *)(local_a0 + 0x38);
        if ((local_a0 == 0) || (!bVar8)) break;
      }
      if (iVar14 < 1) goto LAB_000548e8;
      iVar17 = 0;
      bVar2 = *(byte *)((int)piVar21 + 0xd);
      while ((bVar2 & 4) != 0) {
        iVar17 = iVar17 + 1;
        if (iVar14 == iVar17) goto LAB_000548e8;
        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);
      }
      pcVar13 = "%r ORDER BY term does not match any column in the result set";
    }
LAB_00054968:
    FUN_0003c160(param_1,pcVar13);
LAB_000548b8:
    uVar12 = 2;
    goto LAB_000548ed;
  }
LAB_000548e8:
  uVar12 = 1;
LAB_000548ed:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar12;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000a94f3
ADD EAX,0x89ab7
SUB ESP,0x9c
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0xb4]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x8c],ECX
XOR ECX,ECX
MOV EDX,dword ptr [ESP + 0xb0]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [EAX + 0x4]
TEST AL,0x4
JNZ 0x000548e8
MOV ECX,dword ptr [EDX + 0x18]
TEST AL,0x40
MOV dword ptr [ESP + 0x4],ECX
MOV ECX,dword ptr [EDX]
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,dword ptr [ECX]
MOV dword ptr [ESP + 0xc],ECX
JZ 0x000548c0
MOV EBP,dword ptr [ESP + 0x24]
LEA ESI,[ESP + 0x4c]
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x1c],ESI
MOV ECX,dword ptr [EBP + 0x34]
TEST ECX,ECX
MOV dword ptr [ESP + 0x38],ECX
SETNZ CL
MOVZX ECX,CL
MOV dword ptr [ESP + 0x34],ECX
LEA ECX,[ESP + 0x50]
MOV dword ptr [ESP + 0x2c],ECX
MOV ECX,dword ptr [ESP + 0x10]
LEA ESI,[ECX + 0xfff7b220]
MOV dword ptr [ESP + 0x20],ESI
OR EAX,0x4
XOR EDX,EDX
MOV dword ptr [EBP + 0x4],EAX
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [ECX + EAX*0x1],EDX
ADD EAX,0x4
CMP EAX,0x18
JC 0x000545e7
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [EBP + 0x3c]
MOV dword ptr [ESP + 0x68],EBP
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x0003c9d0
TEST EAX,EAX
JNZ 0x000548b8
TEST byte ptr [EBP + 0x6],0x1
MOV EDI,dword ptr [EBP + 0x20]
JZ 0x0005462f
MOV EDX,dword ptr [EBP + 0x30]
MOV EAX,dword ptr [EDI + 0x1c]
MOV dword ptr [EAX + 0x30],EDX
MOV dword ptr [EBP + 0x30],0x0
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JLE 0x00054743
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x14],EBP
XOR ESI,ESI
MOV EBP,dword ptr [ESP + 0x28]
LEA EAX,[EAX + 0xfff76540]
MOV dword ptr [ESP + 0x18],EAX
JMP 0x00054663
ADD ESI,0x1
CMP dword ptr [EDI],ESI
JLE 0x0005473f
IMUL EAX,ESI,0x44
MOV EDX,dword ptr [EDI + EAX*0x1 + 0x1c]
TEST EDX,EDX
JZ 0x00054658
TEST byte ptr [EDX + 0x4],0x4
JNZ 0x00054658
MOV EAX,dword ptr [ESP + 0x4]
XOR EBX,EBX
MOV ECX,dword ptr [EBP + 0xf4]
TEST EAX,EAX
JZ 0x00054692
LEA ESI,[ESI]
ADD EBX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x00054688
IMUL EAX,ESI,0x44
MOV EAX,dword ptr [EDI + EAX*0x1 + 0x10]
TEST EAX,EAX
JZ 0x000546a3
MOV dword ptr [EBP + 0xf4],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0x78],0x0
MOV dword ptr [ESP + 0x6c],EBP
MOV dword ptr [ESP + 0x70],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x84],EAX
LEA EAX,[ESP + 0x6c]
CALL 0x00028900
MOV EAX,dword ptr [EBP + 0x24]
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
MOV dword ptr [EBP + 0xf4],ECX
JNZ 0x000548b8
MOV ECX,dword ptr [ESP + 0xc]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000548b8
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x00054712
LEA ESI,[ESI]
SUB EBX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x00054708
IMUL EAX,ESI,0x44
TEST EBX,EBX
SETNZ CL
ADD ESI,0x1
SHL ECX,0x3
LEA EDX,[EDI + EAX*0x1 + 0x20]
MOVZX EAX,byte ptr [EDX + 0xd]
AND EAX,0xfffffff7
OR EAX,ECX
MOV byte ptr [EDX + 0xd],AL
MOV EAX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [EAX + 0x20]
CMP dword ptr [EDI],ESI
JG 0x00054663
MOV EBP,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [EBP + 0x1c]
MOV dword ptr [ESP + 0x64],0x4001
MOV dword ptr [ESP + 0x50],EDI
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x0003cad0
TEST EAX,EAX
JNZ 0x000548b8
MOV EAX,dword ptr [ESP + 0x64]
MOV ESI,dword ptr [EBP + 0x28]
MOV EDX,dword ptr [EBP + 0x2c]
MOV ECX,EAX
AND CH,0xbf
TEST ESI,ESI
MOV dword ptr [ESP + 0x64],ECX
JZ 0x00054940
AND EAX,0x1000
OR EAX,0x8
OR dword ptr [EBP + 0x4],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV EBX,dword ptr [ESP + 0x1c]
OR CL,0x80
MOV dword ptr [ESP + 0x64],ECX
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,EBX
CALL 0x0003c9d0
TEST EAX,EAX
JNZ 0x000548b8
MOV EDX,dword ptr [EBP + 0x24]
MOV EAX,EBX
MOV dword ptr [ESP + 0x1c],EBX
CALL 0x0003c9d0
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JNZ 0x000548b8
MOV EDI,dword ptr [EBP + 0x20]
MOV EBX,dword ptr [EDI]
TEST EBX,EBX
JLE 0x00054818
XOR EBX,EBX
MOV EDX,EDI
MOV EDI,EBX
MOV EBX,dword ptr [ESP + 0x1c]
JMP 0x000547ef
ADD EDI,0x1
CMP dword ptr [EDX],EDI
JLE 0x00054816
IMUL EAX,EDI,0x44
ADD EAX,EDX
TEST byte ptr [EAX + 0x2d],0x4
JZ 0x000547e8
MOV EDX,dword ptr [EAX + 0x44]
MOV EAX,EBX
CALL 0x0003cad0
TEST EAX,EAX
JNZ 0x000548b8
MOV EDX,dword ptr [EBP + 0x20]
ADD EDI,0x1
CMP dword ptr [EDX],EDI
JG 0x000547ef
MOV EDI,EDX
OR dword ptr [ESP + 0x64],0x4001
TEST byte ptr [EBP + 0x6],0x1
MOV dword ptr [ESP + 0x58],0x0
JZ 0x0005483e
MOV EAX,dword ptr [EDI + 0x1c]
MOV EDX,dword ptr [EAX + 0x30]
MOV dword ptr [EBP + 0x30],EDX
MOV dword ptr [EAX + 0x30],0x0
MOV EBX,dword ptr [ESP + 0x30]
CMP dword ptr [ESP + 0x34],EBX
JLE 0x000549f0
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000548b8
AND dword ptr [ESP + 0x64],0xffffbfff
TEST ESI,ESI
JNZ 0x0005497a
MOV EAX,dword ptr [ESP + 0x28]
CMP byte ptr [EAX + 0xcc],0x1
JBE 0x00054910
MOV EBX,dword ptr [EBP + 0x48]
TEST EBX,EBX
JZ 0x00054910
MOV ESI,dword ptr [ESP + 0x1c]
JMP 0x000548a5
MOV EDX,dword ptr [EBX + 0x8]
MOV EAX,ESI
CALL 0x0003cad0
TEST EAX,EAX
JNZ 0x000548b8
MOV EBX,dword ptr [EBX + 0x24]
TEST EBX,EBX
JZ 0x00054910
MOV EDX,dword ptr [EBX + 0xc]
MOV EAX,ESI
CALL 0x0003cad0
TEST EAX,EAX
JZ 0x00054890
NOP
LEA ESI,[ESI]
MOV EAX,0x2
JMP 0x000548ed
MOV EBX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,EBX
CALL 0x0002a7d0
MOV EAX,dword ptr [EBX + 0x24]
TEST EAX,EAX
JNZ 0x000548b8
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000548b8
LEA ESI,[ESI]
MOV EAX,0x1
MOV ECX,dword ptr [ESP + 0x8c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00054eb9
ADD ESP,0x9c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x38]
TEST EAX,EAX
JZ 0x00054927
MOV ECX,dword ptr [EBP + 0x1c]
MOV EDX,dword ptr [EAX + 0x1c]
MOV ESI,dword ptr [EDX]
CMP dword ptr [ECX],ESI
JNZ 0x00054e47
MOV EBP,dword ptr [EBP + 0x34]
ADD dword ptr [ESP + 0x30],0x1
TEST EBP,EBP
JZ 0x00054a40
MOV EAX,dword ptr [EBP + 0x4]
JMP 0x000545dd
TEST AL,0x10
JNZ 0x00054a20
AND EAX,0xffffbffe
TEST EDX,EDX
MOV ECX,EAX
MOV dword ptr [ESP + 0x64],EAX
JZ 0x00054791
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffcee90]
PUSH EAX
PUSH dword ptr [ESP + 0x34]
CALL 0x0003c160
ADD ESP,0x10
JMP 0x000548b8
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,EBP
MOV EAX,dword ptr [ESP + 0x1c]
LEA EAX,[EAX + 0xfffcc6ee]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x00053c40
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000548b8
MOV ECX,dword ptr [ESP + 0xc]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000548b8
MOV ECX,dword ptr [ESI]
LEA EDX,[ESI + 0x4]
TEST ECX,ECX
JLE 0x00054866
MOV EBX,dword ptr [ESI + 0x4]
TEST byte ptr [EBX + 0x4],0x10
JNZ 0x000549de
LEA ESI,[ESI]
ADD EAX,0x1
ADD EDX,0x10
CMP EAX,ECX
JZ 0x00054866
MOV EBX,dword ptr [EDX]
TEST byte ptr [EBX + 0x4],0x10
JZ 0x000549c8
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffceebc]
JMP 0x00054968
SUB ESP,0xc
MOV ECX,dword ptr [EBP + 0x30]
MOV EDX,EBP
MOV EAX,dword ptr [ESP + 0x1c]
LEA EAX,[EAX + 0xfffcc6e8]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x00053c40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0005484c
JMP 0x000548b8
AND EAX,0x1000
OR EAX,0x8
OR dword ptr [EBP + 0x4],EAX
TEST EDX,EDX
JZ 0x00054791
JMP 0x0005495b
MOV EAX,dword ptr [ESP + 0x38]
TEST EAX,EAX
JZ 0x000548e8
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + 0x30]
TEST EAX,EAX
MOV dword ptr [ESP + 0x4],EAX
JZ 0x000548e8
MOV EBX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EBX]
CMP EAX,dword ptr [ESI + 0x70]
MOV dword ptr [ESP + 0x18],ESI
JG 0x00054e77
XOR EDX,EDX
TEST EAX,EAX
MOV EBX,dword ptr [ESP + 0x4]
JLE 0x00054a8f
MOV ECX,EDX
ADD EDX,0x1
SHL ECX,0x4
AND byte ptr [EBX + ECX*0x1 + 0xd],0xfb
CMP EAX,EDX
JNZ 0x00054a7e
MOV ESI,dword ptr [ESP + 0x24]
MOV EBX,dword ptr [ESI + 0x34]
MOV dword ptr [ESI + 0x38],0x0
TEST EBX,EBX
MOV dword ptr [ESP + 0xc],EBX
JZ 0x00054ebe
MOV EDX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x24]
JMP 0x00054ab5
MOV EDX,ECX
MOV ECX,dword ptr [EDX + 0x34]
MOV dword ptr [EDX + 0x38],EBX
MOV EBX,EDX
TEST ECX,ECX
JNZ 0x00054ab3
MOV dword ptr [ESP + 0xc],EDX
MOV ESI,dword ptr [ESP + 0x4]
LEA ECX,[ESP + 0x48]
MOV dword ptr [ESP + 0x14],ECX
LEA EBX,[ESI + 0x4]
MOV dword ptr [ESP + 0x38],EBX
MOV EBX,dword ptr [ESP + 0xc]
TEST EAX,EAX
MOV EBX,dword ptr [EBX + 0x1c]
MOV dword ptr [ESP + 0x24],EBX
JLE 0x00054ba6
MOV EDI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x30],0x0
XOR EBP,EBP
LEA ESI,[ESI]
TEST byte ptr [EDI + 0x9],0x4
MOV dword ptr [ESP + 0x48],0xffffffff
JNZ 0x00054b7d
MOV EBX,dword ptr [EDI]
TEST EBX,EBX
JZ 0x00054b33
MOV EAX,dword ptr [EBX + 0x4]
TEST EAX,0x41000
JZ 0x00054b33
TEST EAX,0x40000
JZ 0x00054bf0
MOV EAX,dword ptr [EBX + 0x14]
MOV EBX,dword ptr [EAX + 0x4]
TEST EBX,EBX
JNZ 0x00054b14
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EBX
CALL 0x00029640
TEST EAX,EAX
MOV ESI,EAX
JZ 0x00054bf8
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,dword ptr [ESP + 0x24]
TEST EAX,EAX
MOV EDX,dword ptr [ECX]
JLE 0x00054e1c
CMP EAX,EDX
JG 0x00054e1c
MOV EAX,dword ptr [ESP + 0x28]
CMP byte ptr [EAX + 0xcc],0x1
JBE 0x00054c64
MOV EAX,dword ptr [ESP + 0x4]
OR byte ptr [EDI + 0x9],0x4
MOV EAX,dword ptr [EAX]
ADD EBP,0x1
ADD EDI,0x10
CMP EBP,EAX
JL 0x00054b00
MOV ESI,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ESI + 0x38]
TEST ESI,ESI
MOV dword ptr [ESP + 0xc],ESI
JZ 0x00054ba6
MOV EDX,dword ptr [ESP + 0x30]
TEST EDX,EDX
JNZ 0x00054ad8
TEST EAX,EAX
JLE 0x000548e8
MOV EBX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x8]
TEST byte ptr [EBX + 0xd],0x4
JNZ 0x00054bdc
JMP 0x00054ecf
MOV ESI,dword ptr [ESP + 0x4]
MOV ECX,EDX
SHL ECX,0x4
TEST byte ptr [ESI + ECX*0x1 + 0xd],0x4
JZ 0x00054ecb
ADD EDX,0x1
CMP EAX,EDX
JNZ 0x00054bc8
JMP 0x000548e8
MOV EBX,dword ptr [EBX + 0xc]
JMP 0x00054b10
CMP byte ptr [EBX],0x3b
JZ 0x00054cd8
MOV dword ptr [ESP + 0x48],0x0
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x20],EBX
CMP byte ptr [EAX + 0xcc],0x1
JBE 0x00054dfe
MOV EAX,dword ptr [ESP + 0x18]
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x00054cf5
MOV EAX,dword ptr [ESP + 0x28]
CMP byte ptr [EAX + 0xcc],0x1
JA 0x00054c45
MOV ECX,dword ptr [ESP + 0x20]
TEST ECX,ECX
JNZ 0x00054dec
MOV EAX,dword ptr [ESP + 0x48]
TEST EAX,EAX
JG 0x00054b62
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x30],0x1
MOV EAX,dword ptr [EAX]
JMP 0x00054b7d
MOV dword ptr [ESP + 0x6c],0x0
MOV dword ptr [ESP + 0x70],0x0
LEA ECX,[ESP + 0x6c]
SUB ESP,0xc
MOV EDX,0x98
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x0002ef20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000548b8
MOV EDX,dword ptr [EDI]
MOV ESI,dword ptr [ESP + 0x48]
OR dword ptr [EAX + 0x4],0x400
CMP EBX,EDX
MOV dword ptr [EAX + 0x8],ESI
JNZ 0x00054cb1
JMP 0x00054de5
MOV EDX,ECX
MOV ECX,dword ptr [EDX + 0xc]
CMP byte ptr [ECX],0x6f
JZ 0x00054caf
MOV dword ptr [EDX + 0xc],EAX
TEST EBX,EBX
JZ 0x00054ccf
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EBX
CALL 0x000432e0
MOV ESI,dword ptr [ESP + 0x48]
MOV word ptr [EDI + 0xc],SI
JMP 0x00054b73
MOV EAX,dword ptr [ESP + 0x24]
LEA EDX,[EBX + 0x8]
CALL 0x000291e0
TEST EAX,EAX
MOV dword ptr [ESP + 0x48],EAX
JNZ 0x00054c49
JMP 0x00054c09
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x84],0x0
MOV dword ptr [ESP + 0x78],0x0
MOV dword ptr [ESP + 0x7c],0x0
MOV dword ptr [ESP + 0x80],0x0
MOV dword ptr [ESP + 0x88],0x0
MOV dword ptr [ESP + 0x6c],ECX
MOV EAX,dword ptr [EAX + 0x20]
MOV dword ptr [ESP + 0x2c],EDX
MOV dword ptr [ESP + 0x74],EDX
MOV EDX,ECX
MOV ECX,dword ptr [ECX]
MOV dword ptr [ESP + 0x84],0x81
MOV dword ptr [ESP + 0x70],EAX
CMP byte ptr [EDX + 0xcc],0x1
MOVZX EAX,byte ptr [ECX + 0x51]
MOV byte ptr [ESP + 0x34],AL
JA 0x00054d68
MOV byte ptr [ECX + 0x51],0x1
MOV EDX,dword ptr [ESP + 0x20]
LEA EAX,[ESP + 0x6c]
MOV dword ptr [ESP + 0x3c],ECX
CALL 0x0003c9d0
MOVZX EDX,byte ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
MOV dword ptr [ESP + 0x1c],EAX
MOV byte ptr [ECX + 0x51],DL
JNZ 0x00054ddc
MOV EAX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JG 0x00054da8
JMP 0x00054ddc
MOV EAX,dword ptr [ESP + 0x2c]
CMP dword ptr [EAX],ECX
JLE 0x00054ddc
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x2c]
SUB ESP,0xc
SHL EAX,0x4
MOV EDX,dword ptr [EDX + EAX*0x1 + 0x4]
PUSH -0x1
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x0004e140
ADD dword ptr [ESP + 0x2c],0x1
MOV ECX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
CMP EAX,0x1
JG 0x00054da0
MOV ESI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x48],ESI
JMP 0x00054c2c
MOV dword ptr [EDI],EAX
JMP 0x00054cbc
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000432e0
JMP 0x00054c45
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,EBX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00052c60
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
JMP 0x00054c1e
SUB ESP,0xc
PUSH EDX
MOV ECX,dword ptr [ESP + 0x20]
LEA EAX,[ECX + 0xfffcc6e8]
PUSH EAX
LEA EAX,[EBP + 0x1]
PUSH EAX
LEA EAX,[ECX + 0xfffcedfc]
PUSH EAX
PUSH dword ptr [ESP + 0x44]
CALL 0x0003c160
ADD ESP,0x20
JMP 0x000548b8
TEST byte ptr [EAX + 0x5],0x2
JNZ 0x00054e88
MOVZX EAX,byte ptr [EAX]
CMP AL,0x86
JZ 0x00054e99
CMP AL,0x87
JZ 0x00054ead
CMP AL,0x85
MOV EAX,dword ptr [ESP + 0x10]
JZ 0x00054ea5
LEA EAX,[EAX + 0xfffcc6e2]
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffcef28]
JMP 0x00054968
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffcef7c]
JMP 0x00054968
PUSH ECX
PUSH ECX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffceef8]
JMP 0x00054968
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xfffcc6db]
JMP 0x00054e66
LEA EAX,[EAX + 0xfffcc6c7]
JMP 0x00054e66
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xfffcc6d1]
JMP 0x00054e66
CALL 0x000a9ea0
MOV ECX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0xc],ECX
JMP 0x00054ac5
MOV dword ptr [ESP + 0x8],EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0xc]
ADD EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffcefa0]
JMP 0x00054968
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Removing unreachable block (ram,0x00054b5a) */\n\nundefined4 FUN_00054540(int *param_1,int param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}\n\n" comment comment (function_definition "undefined4 FUN_00054540(int *param_1,int param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}" type_identifier (function_declarator "FUN_00054540(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "char *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int *local_5c [2];" primitive_type (pointer_declarator "*local_5c [2]" * (array_declarator "local_5c [2]" identifier [ number_literal ])) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "code *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "code *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x54549;" (assignment_expression "uStack_14 = 0x54549" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" if (parenthesized_expression "((uVar9 & 4) == 0)" ( (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" ( (binary_expression "uVar9 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" { (expression_statement "iVar17 = param_1[6];" (assignment_expression "iVar17 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" if (parenthesized_expression "((uVar9 & 0x40) != 0)" ( (binary_expression "(uVar9 & 0x40) != 0" (parenthesized_expression "(uVar9 & 0x40)" ( (binary_expression "uVar9 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = param_2;" (assignment_expression "iVar16 = param_2" identifier = identifier) ;) (do_statement "do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );" do (compound_statement "{\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      }" { (expression_statement "*(uint *)(iVar16 + 4) = uVar9 | 4;" (assignment_expression "*(uint *)(iVar16 + 4) = uVar9 | 4" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "uVar9 | 4" identifier | number_literal)) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);" do (compound_statement "{\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        }" { (expression_statement "*(undefined4 *)((int)local_5c + uVar9) = 0;" (assignment_expression "*(undefined4 *)((int)local_5c + uVar9) = 0" (pointer_expression "*(undefined4 *)((int)local_5c + uVar9)" * (cast_expression "(undefined4 *)((int)local_5c + uVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c + uVar9)" ( (binary_expression "(int)local_5c + uVar9" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar9 = uVar9 + 4;" (assignment_expression "uVar9 = uVar9 + 4" identifier = (binary_expression "uVar9 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 < 0x18)" ( (binary_expression "uVar9 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_44 = iVar16;" (assignment_expression "local_44 = iVar16" identifier = identifier) ;) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" if (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" ( (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" * (cast_expression "(byte *)(iVar16 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 6)" ( (binary_expression "iVar16 + 6" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" { (expression_statement "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);" (assignment_expression "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30)" (pointer_expression "*(undefined4 *)(piVar21[7] + 0x30)" * (cast_expression "(undefined4 *)(piVar21[7] + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[7] + 0x30)" ( (binary_expression "piVar21[7] + 0x30" (subscript_expression "piVar21[7]" identifier [ number_literal ]) + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" if (parenthesized_expression "(0 < *piVar21)" ( (binary_expression "0 < *piVar21" number_literal < (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);" do (compound_statement "{\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          }" { (while_statement "while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" while (parenthesized_expression "((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)))" ( (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))" ( (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" identifier [ (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) != number_literal) && (parenthesized_expression "((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4)" ( (binary_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4" (pointer_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" * (cast_expression "(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] + 4)" ( (binary_expression "piVar21[iVar10 * 0x11 + 7] + 4" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" identifier [ (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) )) (compound_statement "{\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar11 = param_1[0x3d];" (assignment_expression "iVar11 = param_1[0x3d]" identifier = (subscript_expression "param_1[0x3d]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" for ( (assignment_expression "iVar4 = iVar17" identifier = identifier) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = *(int *)(iVar4 + 0xc)" identifier = (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" { (expression_statement "iVar19 = iVar19 + *(int *)(iVar4 + 0x10);" (assignment_expression "iVar19 = iVar19 + *(int *)(iVar4 + 0x10)" identifier = (binary_expression "iVar19 + *(int *)(iVar4 + 0x10)" identifier + (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))))) ;) })) (if_statement "if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" if (parenthesized_expression "(piVar21[iVar10 * 0x11 + 4] != 0)" ( (binary_expression "piVar21[iVar10 * 0x11 + 4] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 4]" identifier [ (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" { (expression_statement "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];" (assignment_expression "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4]" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (subscript_expression "piVar21[iVar10 * 0x11 + 4]" identifier [ (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ])) ;) })) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_3c = FUN_00059220;" (assignment_expression "local_3c = FUN_00059220" identifier = identifier) ;) (expression_statement "local_38 = FUN_00054540;" (assignment_expression "local_38 = FUN_00054540" identifier = identifier) ;) (expression_statement "local_28 = iVar17;" (assignment_expression "local_28 = iVar17" identifier = identifier) ;) (expression_statement "FUN_00028900();" (call_expression "FUN_00028900()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x3d] = iVar11;" (assignment_expression "param_1[0x3d] = iVar11" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;" if (parenthesized_expression "((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" ( (comma_expression "iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'" (assignment_expression "iVar11 = iVar17" identifier = identifier) , (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" for ( ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = *(int *)(iVar11 + 0xc)" identifier = (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" { (expression_statement "iVar19 = iVar19 - *(int *)(iVar11 + 0x10);" (assignment_expression "iVar19 = iVar19 - *(int *)(iVar11 + 0x10)" identifier = (binary_expression "iVar19 - *(int *)(iVar11 + 0x10)" identifier - (pointer_expression "*(int *)(iVar11 + 0x10)" * (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))))) ;) })) (expression_statement "iVar11 = iVar10 * 0x44;" (assignment_expression "iVar11 = iVar10 * 0x44" identifier = (binary_expression "iVar10 * 0x44" identifier * number_literal)) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;" (assignment_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) & number_literal) | (binary_expression "(iVar19 != 0) << 3" (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) << number_literal))) ;) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (*piVar21 <= iVar10) goto LAB_00054743;" if (parenthesized_expression "(*piVar21 <= iVar10)" ( (binary_expression "*piVar21 <= iVar10" (pointer_expression "*piVar21" * identifier) <= identifier) )) (goto_statement "goto LAB_00054743;" goto statement_identifier ;)) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < *piVar21)" ( (binary_expression "iVar10 < *piVar21" identifier < (pointer_expression "*piVar21" * identifier)) )) ;) })) (labeled_statement "LAB_00054743:\n        local_48 = 0x4001;" statement_identifier : (expression_statement "local_48 = 0x4001;" (assignment_expression "local_48 = 0x4001" identifier = number_literal) ;)) (expression_statement "local_5c[0] = piVar21;" (assignment_expression "local_5c[0] = piVar21" (subscript_expression "local_5c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_54 = iVar17;" (assignment_expression "local_54 = iVar17" identifier = identifier) ;) (expression_statement "iVar10 = FUN_0003cad0();" (assignment_expression "iVar10 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar21 = *(int **)(iVar16 + 0x28);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x28)" identifier = (pointer_expression "*(int **)(iVar16 + 0x28)" * (cast_expression "(int **)(iVar16 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = local_48 & 0xffffbfff;" (assignment_expression "uVar9 = local_48 & 0xffffbfff" identifier = (binary_expression "local_48 & 0xffffbfff" identifier & number_literal)) ;) (if_statement "if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" if (parenthesized_expression "(piVar21 == (int *)0x0)" ( (binary_expression "piVar21 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }" { (if_statement "if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" if (parenthesized_expression "((local_48 & 0x10) == 0)" ( (binary_expression "(local_48 & 0x10) == 0" (parenthesized_expression "(local_48 & 0x10)" ( (binary_expression "local_48 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar9 = local_48 & 0xffffbffe;\n          }" { (expression_statement "uVar9 = local_48 & 0xffffbffe;" (assignment_expression "uVar9 = local_48 & 0xffffbffe" identifier = (binary_expression "local_48 & 0xffffbffe" identifier & number_literal)) ;) }) (else_clause "else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" else (compound_statement "{\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" { (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) | (binary_expression "local_48 & 0x1000" identifier & number_literal)) | number_literal)) ;) }))) (if_statement "if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" if (parenthesized_expression "(*(int *)(iVar16 + 0x2c) != 0)" ( (binary_expression "*(int *)(iVar16 + 0x2c) != 0" (pointer_expression "*(int *)(iVar16 + 0x2c)" * (cast_expression "(int *)(iVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" { (expression_statement "pcVar13 = "a GROUP BY clause is required before HAVING";" (assignment_expression "pcVar13 = "a GROUP BY clause is required before HAVING"" identifier = (string_literal ""a GROUP BY clause is required before HAVING"" " string_content ")) ;) (expression_statement "local_48 = uVar9;" (assignment_expression "local_48 = uVar9" identifier = identifier) ;) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) }) (else_clause "else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" else (compound_statement "{\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" { (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) | (binary_expression "local_48 & 0x1000" identifier & number_literal)) | number_literal)) ;) }))) (expression_statement "local_5c[1] = *(int **)(iVar16 + 0x1c);" (assignment_expression "local_5c[1] = *(int **)(iVar16 + 0x1c)" (subscript_expression "local_5c[1]" identifier [ number_literal ]) = (pointer_expression "*(int **)(iVar16 + 0x1c)" * (cast_expression "(int **)(iVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x1c)" ( (binary_expression "iVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = uVar9 | 0x80;" (assignment_expression "local_48 = uVar9 | 0x80" identifier = (binary_expression "uVar9 | 0x80" identifier | number_literal)) ;) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;" if (parenthesized_expression "((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0))" ( (binary_expression "(iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" if (parenthesized_expression "(0 < *piVar15)" ( (binary_expression "0 < *piVar15" number_literal < (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);" do (compound_statement "{\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          }" { (while_statement "while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" while (parenthesized_expression "((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4)" ( (binary_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" * (cast_expression "(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + iVar10 * 0x44 + 0x2d)" ( (binary_expression "(int)piVar15 + iVar10 * 0x44 + 0x2d" (binary_expression "(int)piVar15 + iVar10 * 0x44" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar10 * 0x44" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" { (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (*piVar15 <= iVar10) goto LAB_00054818;" if (parenthesized_expression "(*piVar15 <= iVar10)" ( (binary_expression "*piVar15 <= iVar10" (pointer_expression "*piVar15" * identifier) <= identifier) )) (goto_statement "goto LAB_00054818;" goto statement_identifier ;)) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < *piVar15)" ( (binary_expression "iVar10 < *piVar15" identifier < (pointer_expression "*piVar15" * identifier)) )) ;) })) (labeled_statement "LAB_00054818:\n        local_48 = local_48 | 0x4001;" statement_identifier : (expression_statement "local_48 = local_48 | 0x4001;" (assignment_expression "local_48 = local_48 | 0x4001" identifier = (binary_expression "local_48 | 0x4001" identifier | number_literal)) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" if (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" ( (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" * (cast_expression "(byte *)(iVar16 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 6)" ( (binary_expression "iVar16 + 6" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" { (expression_statement "iVar10 = piVar15[7];" (assignment_expression "iVar10 = piVar15[7]" identifier = (subscript_expression "piVar15[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30)" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            )" ( (binary_expression "((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" (parenthesized_expression "((int)(uint)(iVar20 != 0) <= local_7c)" ( (binary_expression "(int)(uint)(iVar20 != 0) <= local_7c" (cast_expression "(int)(uint)(iVar20 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(iVar20 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )))) <= identifier) )) && (parenthesized_expression "(iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_00053c40("ORDER"), iVar10 != 0" (assignment_expression "iVar10 = FUN_00053c40("ORDER")" identifier = (call_expression "FUN_00053c40("ORDER")" identifier (argument_list "("ORDER")" ( (string_literal ""ORDER"" " string_content ") )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "local_48 = local_48 & 0xffffbfff;" (assignment_expression "local_48 = local_48 & 0xffffbfff" identifier = (binary_expression "local_48 & 0xffffbfff" identifier & number_literal)) ;) (if_statement "if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" { (expression_statement "iVar10 = FUN_00053c40("GROUP");" (assignment_expression "iVar10 = FUN_00053c40("GROUP")" identifier = (call_expression "FUN_00053c40("GROUP")" identifier (argument_list "("GROUP")" ( (string_literal ""GROUP"" " string_content ") )))) ;) (if_statement "if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (if_statement "if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" if (parenthesized_expression "(0 < *piVar21)" ( (binary_expression "0 < *piVar21" number_literal < (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" { (if_statement "if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" if (parenthesized_expression "((*(byte *)(piVar21[1] + 4) & 0x10) != 0)" ( (binary_expression "(*(byte *)(piVar21[1] + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar21[1] + 4) & 0x10)" ( (binary_expression "*(byte *)(piVar21[1] + 4) & 0x10" (pointer_expression "*(byte *)(piVar21[1] + 4)" * (cast_expression "(byte *)(piVar21[1] + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[1] + 4)" ( (binary_expression "piVar21[1] + 4" (subscript_expression "piVar21[1]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" { (labeled_statement "LAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" statement_identifier : (expression_statement "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" (assignment_expression "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause"" identifier = (string_literal ""aggregate functions are not allowed in the GROUP BY clause"" " string_content ")) ;)) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 == *piVar21) break;" if (parenthesized_expression "(iVar10 == *piVar21)" ( (binary_expression "iVar10 == *piVar21" identifier == (pointer_expression "*piVar21" * identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;" if (parenthesized_expression "((*(byte *)(*piVar15 + 4) & 0x10) != 0)" ( (binary_expression "(*(byte *)(*piVar15 + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*piVar15 + 4) & 0x10)" ( (binary_expression "*(byte *)(*piVar15 + 4) & 0x10" (pointer_expression "*(byte *)(*piVar15 + 4)" * (cast_expression "(byte *)(*piVar15 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar15 + 4)" ( (binary_expression "*piVar15 + 4" (pointer_expression "*piVar15" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000549de;" goto statement_identifier ;)) })) })) })) (if_statement "if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" if (parenthesized_expression "(1 < *(byte *)(param_1 + 0x33))" ( (binary_expression "1 < *(byte *)(param_1 + 0x33)" number_literal < (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) ))))) )) (compound_statement "{\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" { (for_statement "for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" for ( (assignment_expression "iVar10 = *(int *)(iVar16 + 0x48)" identifier = (pointer_expression "*(int *)(iVar16 + 0x48)" * (cast_expression "(int *)(iVar16 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x48)" ( (binary_expression "iVar16 + 0x48" identifier + number_literal) ))))) ; (binary_expression "iVar10 != 0" identifier != number_literal) ; (assignment_expression "iVar10 = *(int *)(iVar10 + 0x24)" identifier = (pointer_expression "*(int *)(iVar10 + 0x24)" * (cast_expression "(int *)(iVar10 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x24)" ( (binary_expression "iVar10 + 0x24" identifier + number_literal) ))))) ) (compound_statement "{\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" { (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;" if (parenthesized_expression "((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0))" ( (binary_expression "(iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar11 = FUN_0003cad0(), iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0003cad0(), iVar11 != 0" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) })) (expression_statement "iVar10 = *(int *)(iVar16 + 0x38);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x38)" identifier = (pointer_expression "*(int *)(iVar16 + 0x38)" * (cast_expression "(int *)(iVar16 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x38)" ( (binary_expression "iVar16 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" if (parenthesized_expression "((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)))" ( (binary_expression "(iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" ( (binary_expression "**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)" (pointer_expression "**(int **)(iVar16 + 0x1c)" * (pointer_expression "*(int **)(iVar16 + 0x1c)" * (cast_expression "(int **)(iVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x1c)" ( (binary_expression "iVar16 + 0x1c" identifier + number_literal) ))))) != (pointer_expression "**(int **)(iVar10 + 0x1c)" * (pointer_expression "*(int **)(iVar10 + 0x1c)" * (cast_expression "(int **)(iVar10 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" { (if_statement "if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" if (parenthesized_expression "((*(byte *)(iVar10 + 5) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar10 + 5) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar10 + 5) & 2)" ( (binary_expression "*(byte *)(iVar10 + 5) & 2" (pointer_expression "*(byte *)(iVar10 + 5)" * (cast_expression "(byte *)(iVar10 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 5)" ( (binary_expression "iVar10 + 5" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }" { (expression_statement "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";" (assignment_expression "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns"" identifier = (string_literal ""SELECTs to the left and right of %s do not have the same number of result columns"" " string_content ")) ;) }) (else_clause "else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" else (compound_statement "{\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" { (expression_statement "pcVar13 = "all VALUES must have the same number of terms";" (assignment_expression "pcVar13 = "all VALUES must have the same number of terms"" identifier = (string_literal ""all VALUES must have the same number of terms"" " string_content ")) ;) }))) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "iVar16 = *(int *)(iVar16 + 0x34);" (assignment_expression "iVar16 = *(int *)(iVar16 + 0x34)" identifier = (pointer_expression "*(int *)(iVar16 + 0x34)" * (cast_expression "(int *)(iVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x34)" ( (binary_expression "iVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == 0) goto LAB_00054a40;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054a40;" goto statement_identifier ;)) (expression_statement "uVar9 = *(uint *)(iVar16 + 4);" (assignment_expression "uVar9 = *(uint *)(iVar16 + 4)" identifier = (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "FUN_0002a7d0();" (call_expression "FUN_0002a7d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;) (labeled_statement "LAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" statement_identifier : (if_statement "if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" if (parenthesized_expression "((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0))" ( (binary_expression "(iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" ( (comma_expression "piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0" (assignment_expression "piVar21 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) , (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" { (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) (expression_statement "iVar17 = *param_1;" (assignment_expression "iVar17 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" if (parenthesized_expression "(*(int *)(iVar17 + 0x70) < iVar14)" ( (binary_expression "*(int *)(iVar17 + 0x70) < iVar14" (pointer_expression "*(int *)(iVar17 + 0x70)" * (cast_expression "(int *)(iVar17 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x70)" ( (binary_expression "iVar17 + 0x70" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      pcVar13 = "too many terms in ORDER BY clause";\n    }" { (expression_statement "pcVar13 = "too many terms in ORDER BY clause";" (assignment_expression "pcVar13 = "too many terms in ORDER BY clause"" identifier = (string_literal ""too many terms in ORDER BY clause"" " string_content ")) ;) }) (else_clause "else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" else (compound_statement "{\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" { (do_statement "do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);" do (compound_statement "{\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        }" { (expression_statement "iVar16 = iVar20 + 1;" (assignment_expression "iVar16 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);" (assignment_expression "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" identifier = (cast_expression "(byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar20 * 0x10 + 0xd)" ( (binary_expression "(int)piVar21 + iVar20 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar20 * 0x10" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar20 * 0x10" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xfb;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfb" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xfb" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) (expression_statement "iVar20 = iVar16;" (assignment_expression "iVar20 = iVar16" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != iVar16)" ( (binary_expression "iVar14 != iVar16" identifier != identifier) )) ;) })) (expression_statement "*(undefined4 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" if (parenthesized_expression "(*(int *)(param_2 + 0x34) == 0)" ( (binary_expression "*(int *)(param_2 + 0x34) == 0" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_a0 = param_2;\n      }" { (expression_statement "local_a0 = param_2;" (assignment_expression "local_a0 = param_2" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" else (compound_statement "{\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" { (do_statement "do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);" do (compound_statement "{\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        }" { (expression_statement "local_a0 = iVar20;" (assignment_expression "local_a0 = iVar20" identifier = identifier) ;) (expression_statement "*(int *)(local_a0 + 0x38) = param_2;" (assignment_expression "*(int *)(local_a0 + 0x38) = param_2" (pointer_expression "*(int *)(local_a0 + 0x38)" * (cast_expression "(int *)(local_a0 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x38)" ( (binary_expression "local_a0 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar20 = *(int *)(local_a0 + 0x34);" (assignment_expression "iVar20 = *(int *)(local_a0 + 0x34)" identifier = (pointer_expression "*(int *)(local_a0 + 0x34)" * (cast_expression "(int *)(local_a0 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x34)" ( (binary_expression "local_a0 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_2 = local_a0;" (assignment_expression "param_2 = local_a0" identifier = identifier) ;) }) while (parenthesized_expression "(*(int *)(local_a0 + 0x34) != 0)" ( (binary_expression "*(int *)(local_a0 + 0x34) != 0" (pointer_expression "*(int *)(local_a0 + 0x34)" * (cast_expression "(int *)(local_a0 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x34)" ( (binary_expression "local_a0 + 0x34" identifier + number_literal) )))) != number_literal) )) ;) }))) (while_statement "while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" while (parenthesized_expression "(puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14)" ( (comma_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14" (assignment_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c)" identifier = (pointer_expression "*(undefined4 **)(local_a0 + 0x1c)" * (cast_expression "(undefined4 **)(local_a0 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x1c)" ( (binary_expression "local_a0 + 0x1c" identifier + number_literal) ))))) , (binary_expression "0 < iVar14" number_literal < identifier)) )) (compound_statement "{\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" { (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (do_statement "do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);" do (compound_statement "{\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        }" { (if_statement "if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" if (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)((int)piVar15 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 4)" ( (binary_expression "*(byte *)((int)piVar15 + 9) & 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" { (for_statement "for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" for ( (assignment_expression "pcVar13 = (char *)*piVar15" identifier = (cast_expression "(char *)*piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ; (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pcVar13 = *(char **)(pcVar13 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar13 + 0xc)" * (cast_expression "(char **)(pcVar13 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0xc)" ( (binary_expression "pcVar13 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" { (while_statement "while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" { (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;" if (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x41000) == 0)" ( (binary_expression "(*(uint *)(pcVar13 + 4) & 0x41000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x41000)" ( (binary_expression "*(uint *)(pcVar13 + 4) & 0x41000" (pointer_expression "*(uint *)(pcVar13 + 4)" * (cast_expression "(uint *)(pcVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 4)" ( (binary_expression "pcVar13 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;" if (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x40000) == 0)" ( (binary_expression "(*(uint *)(pcVar13 + 4) & 0x40000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x40000)" ( (binary_expression "*(uint *)(pcVar13 + 4) & 0x40000" (pointer_expression "*(uint *)(pcVar13 + 4)" * (cast_expression "(uint *)(pcVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 4)" ( (binary_expression "pcVar13 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);" (assignment_expression "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar13 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar13 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar13 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar13 + 0x14) + 4" (pointer_expression "*(int *)(pcVar13 + 0x14)" * (cast_expression "(int *)(pcVar13 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x14)" ( (binary_expression "pcVar13 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (char *)0x0) goto LAB_00054b33;" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00054b33:\n            iVar14 = FUN_00029640();" statement_identifier : (expression_statement "iVar14 = FUN_00029640();" (assignment_expression "iVar14 = FUN_00029640()" identifier = (call_expression "FUN_00029640()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" { (expression_statement "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);" (call_expression "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" identifier (argument_list "(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" ( identifier , (string_literal ""%r %s BY term out of range - should be between 1 and %d"" " string_content ") , (binary_expression "iVar20 + 1" identifier + number_literal) , (string_literal ""ORDER"" " string_content ") , (pointer_expression "*puVar5" * identifier) ))) ;) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;) })) (if_statement "if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" if (parenthesized_expression "(*pcVar13 == ';')" ( (binary_expression "*pcVar13 == ';'" (pointer_expression "*pcVar13" * identifier) == (char_literal "';'" ' character ')) )) (compound_statement "{\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }" { (expression_statement "local_64 = FUN_000291e0();" (assignment_expression "local_64 = FUN_000291e0()" identifier = (call_expression "FUN_000291e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_64 == 0) goto LAB_00054c09;" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054c09;" goto statement_identifier ;)) }) (else_clause "else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" else (compound_statement "{\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" { (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00054c09:\n              local_8c = pcVar13;" statement_identifier : (expression_statement "local_8c = pcVar13;" (assignment_expression "local_8c = pcVar13" identifier = identifier) ;)) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                local_8c = (char *)FUN_00052c60(0);\n              }" { (expression_statement "local_8c = (char *)FUN_00052c60(0);" (assignment_expression "local_8c = (char *)FUN_00052c60(0)" identifier = (cast_expression "(char *)FUN_00052c60(0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) })) (if_statement "if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" if (parenthesized_expression "(*(char *)(iVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar17 + 0x4d)" * (cast_expression "(char *)(iVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x4d)" ( (binary_expression "iVar17 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" { (expression_statement "pcVar7 = *(code **)(local_a0 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(local_a0 + 0x1c)" identifier = (pointer_expression "*(code **)(local_a0 + 0x1c)" * (cast_expression "(code **)(local_a0 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x1c)" ( (binary_expression "local_a0 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_3c = *(code **)(local_a0 + 0x20);" (assignment_expression "local_3c = *(code **)(local_a0 + 0x20)" identifier = (pointer_expression "*(code **)(local_a0 + 0x20)" * (cast_expression "(code **)(local_a0 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x20)" ( (binary_expression "local_a0 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = 0x81;" (assignment_expression "local_28 = 0x81" identifier = number_literal) ;) (expression_statement "uVar3 = *(undefined1 *)(iVar14 + 0x51);" (assignment_expression "uVar3 = *(undefined1 *)(iVar14 + 0x51)" identifier = (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" { (expression_statement "*(undefined1 *)(iVar14 + 0x51) = 1;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = 1" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_38 = pcVar7;" (assignment_expression "local_38 = pcVar7" identifier = identifier) ;) (expression_statement "iVar16 = FUN_0003c9d0();" (assignment_expression "iVar16 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(iVar14 + 0x51) = uVar3;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = uVar3" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" identifier = identifier) ;) (if_statement "if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" if (parenthesized_expression "((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7))" ( (binary_expression "(iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)" (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_90 = 0, 0 < *(int *)pcVar7)" ( (comma_expression "local_90 = 0, 0 < *(int *)pcVar7" (assignment_expression "local_90 = 0" identifier = number_literal) , (binary_expression "0 < *(int *)pcVar7" number_literal < (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ))) )) (compound_statement "{\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" { (do_statement "do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);" do (compound_statement "{\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  }" { (expression_statement "iVar16 = FUN_0004e140(0xffffffff);" (assignment_expression "iVar16 = FUN_0004e140(0xffffffff)" identifier = (call_expression "FUN_0004e140(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal )))) ;) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "local_64 = local_90;" (assignment_expression "local_64 = local_90" identifier = identifier) ;) (if_statement "if (iVar16 < 2) break;" if (parenthesized_expression "(iVar16 < 2)" ( (binary_expression "iVar16 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" identifier = identifier) ;) }) while (parenthesized_expression "(local_90 < *(int *)pcVar7)" ( (binary_expression "local_90 < *(int *)pcVar7" identifier < (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) ;) })) })) (if_statement "if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }" if (parenthesized_expression "((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0))" ( (binary_expression "(*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)" (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) && (parenthesized_expression "(local_8c != (char *)0x0)" ( (binary_expression "local_8c != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                FUN_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" if (parenthesized_expression "(local_64 < 1)" ( (binary_expression "local_64 < 1" identifier < number_literal) )) (compound_statement "{\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) }) (else_clause "else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" else (compound_statement "{\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" { (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" { (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_3c = (code *)0x0;" (assignment_expression "local_3c = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar14 = FUN_0002ef20(0);" (assignment_expression "iVar14 = FUN_0002ef20(0)" identifier = (call_expression "FUN_0002ef20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pcVar6 = (char *)*piVar15;" (assignment_expression "pcVar6 = (char *)*piVar15" identifier = (cast_expression "(char *)*piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ;) (expression_statement "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(iVar14 + 8) = local_64;" (assignment_expression "*(int *)(iVar14 + 8) = local_64" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" if (parenthesized_expression "(pcVar13 == pcVar6)" ( (binary_expression "pcVar13 == pcVar6" identifier == identifier) )) (compound_statement "{\n                  *piVar15 = iVar14;\n                }" { (expression_statement "*piVar15 = iVar14;" (assignment_expression "*piVar15 = iVar14" (pointer_expression "*piVar15" * identifier) = identifier) ;) }) (else_clause "else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" else (compound_statement "{\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" { (do_statement "do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');" do (compound_statement "{\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  }" { (expression_statement "pcVar18 = pcVar6;" (assignment_expression "pcVar18 = pcVar6" identifier = identifier) ;) (expression_statement "pcVar6 = *(char **)(pcVar18 + 0xc);" (assignment_expression "pcVar6 = *(char **)(pcVar18 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar18 + 0xc)" * (cast_expression "(char **)(pcVar18 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0xc)" ( (binary_expression "pcVar18 + 0xc" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*pcVar6 == 'o')" ( (binary_expression "*pcVar6 == 'o'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'o'" ' character ')) )) ;) (expression_statement "*(int *)(pcVar18 + 0xc) = iVar14;" (assignment_expression "*(int *)(pcVar18 + 0xc) = iVar14" (pointer_expression "*(int *)(pcVar18 + 0xc)" * (cast_expression "(int *)(pcVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0xc)" ( (binary_expression "pcVar18 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }" if (parenthesized_expression "(pcVar13 != (char *)0x0)" ( (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  FUN_000432e0();\n                }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(short *)(piVar15 + 3) = (short)local_64;" (assignment_expression "*(short *)(piVar15 + 3) = (short)local_64" (pointer_expression "*(short *)(piVar15 + 3)" * (cast_expression "(short *)(piVar15 + 3)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 3)" ( (binary_expression "piVar15 + 3" identifier + number_literal) )))) = (cast_expression "(short)local_64" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;" (assignment_expression "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) }))) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 < iVar14)" ( (binary_expression "iVar20 < iVar14" identifier < identifier) )) ;) (expression_statement "local_a0 = *(int *)(local_a0 + 0x38);" (assignment_expression "local_a0 = *(int *)(local_a0 + 0x38)" identifier = (pointer_expression "*(int *)(local_a0 + 0x38)" * (cast_expression "(int *)(local_a0 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x38)" ( (binary_expression "local_a0 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if ((local_a0 == 0) || (!bVar8)) break;" if (parenthesized_expression "((local_a0 == 0) || (!bVar8))" ( (binary_expression "(local_a0 == 0) || (!bVar8)" (parenthesized_expression "(local_a0 == 0)" ( (binary_expression "local_a0 == 0" identifier == number_literal) )) || (parenthesized_expression "(!bVar8)" ( (unary_expression "!bVar8" ! identifier) ))) )) (break_statement "break;" break ;)) })) (if_statement "if (iVar14 < 1) goto LAB_000548e8;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = *(byte *)((int)piVar21 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + 0xd)" identifier = (pointer_expression "*(byte *)((int)piVar21 + 0xd)" * (cast_expression "(byte *)((int)piVar21 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + 0xd)" ( (binary_expression "(int)piVar21 + 0xd" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" while (parenthesized_expression "((bVar2 & 4) != 0)" ( (binary_expression "(bVar2 & 4) != 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (if_statement "if (iVar14 == iVar17) goto LAB_000548e8;" if (parenthesized_expression "(iVar14 == iVar17)" ( (binary_expression "iVar14 == iVar17" identifier == identifier) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" identifier = (pointer_expression "*(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" * (cast_expression "(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar17 * 0x10 + 0xd)" ( (binary_expression "(int)piVar21 + iVar17 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar17 * 0x10" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar17 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) })) (expression_statement "pcVar13 = "%r ORDER BY term does not match any column in the result set";" (assignment_expression "pcVar13 = "%r ORDER BY term does not match any column in the result set"" identifier = (string_literal ""%r ORDER BY term does not match any column in the result set"" " string_content ")) ;) }))) (labeled_statement "LAB_00054968:\n    FUN_0003c160(param_1,pcVar13);" statement_identifier : (expression_statement "FUN_0003c160(param_1,pcVar13);" (call_expression "FUN_0003c160(param_1,pcVar13)" identifier (argument_list "(param_1,pcVar13)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000548b8:\n    uVar12 = 2;" statement_identifier : (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_000548ed;" goto statement_identifier ;) }))) (labeled_statement "LAB_000548e8:\n  uVar12 = 1;" statement_identifier : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar12;\n  }" { (return_statement "return uVar12;" return identifier ;) }))) comment (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nint resolveSelectStep(Walker *pWalker,Select *p)\n\n{\n  undefined1 *puVar1;\n  byte bVar2;\n  u8 uVar3;\n  int iVar4;\n  anon_union_4_16_1c331a60_for_u pOuterNC;\n  Parse *pParse;\n  sqlite3 *psVar5;\n  Select *pSVar6;\n  Select *pSVar7;\n  anon_union_4_16_1c331a60_for_u aVar8;\n  char *pcVar9;\n  ExprList *pEVar10;\n  Window *pWVar11;\n  Parse *pParse_00;\n  sqlite3 *psVar12;\n  Expr *pEVar13;\n  ExprList *pEVar14;\n  bool bVar15;\n  uint uVar16;\n  int iVar17;\n  char *pcVar18;\n  Expr *pEVar19;\n  int iVar20;\n  Expr *pE;\n  SrcList *pSVar21;\n  ExprList_item *pEVar22;\n  Expr *pEVar23;\n  int iVar24;\n  Expr *p_00;\n  Select *pSelect;\n  int iVar25;\n  int in_GS_OFFSET;\n  Expr *in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  u8 **pzBuffer;\n  Expr *in_stack_ffffff54;\n  Select *local_a0;\n  int local_90;\n  Expr *local_8c;\n  int local_7c;\n  int iCol;\n  NameContext sNC;\n  Walker w;\n  Token x;\n  \n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar16 = p->selFlags;\n  if ((uVar16 & 4) == 0) {\n    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;\n    pParse = pWalker->pParse;\n    psVar5 = pParse->db;\n    if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }\n    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);\n    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  iVar17 = 1;\nLAB_000548ed:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar17;\n}\n\n" comment (function_definition "int resolveSelectStep(Walker *pWalker,Select *p)\n\n{\n  undefined1 *puVar1;\n  byte bVar2;\n  u8 uVar3;\n  int iVar4;\n  anon_union_4_16_1c331a60_for_u pOuterNC;\n  Parse *pParse;\n  sqlite3 *psVar5;\n  Select *pSVar6;\n  Select *pSVar7;\n  anon_union_4_16_1c331a60_for_u aVar8;\n  char *pcVar9;\n  ExprList *pEVar10;\n  Window *pWVar11;\n  Parse *pParse_00;\n  sqlite3 *psVar12;\n  Expr *pEVar13;\n  ExprList *pEVar14;\n  bool bVar15;\n  uint uVar16;\n  int iVar17;\n  char *pcVar18;\n  Expr *pEVar19;\n  int iVar20;\n  Expr *pE;\n  SrcList *pSVar21;\n  ExprList_item *pEVar22;\n  Expr *pEVar23;\n  int iVar24;\n  Expr *p_00;\n  Select *pSelect;\n  int iVar25;\n  int in_GS_OFFSET;\n  Expr *in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  u8 **pzBuffer;\n  Expr *in_stack_ffffff54;\n  Select *local_a0;\n  int local_90;\n  Expr *local_8c;\n  int local_7c;\n  int iCol;\n  NameContext sNC;\n  Walker w;\n  Token x;\n  \n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar16 = p->selFlags;\n  if ((uVar16 & 4) == 0) {\n    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;\n    pParse = pWalker->pParse;\n    psVar5 = pParse->db;\n    if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }\n    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);\n    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  iVar17 = 1;\nLAB_000548ed:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar17;\n}" primitive_type (function_declarator "resolveSelectStep(Walker *pWalker,Select *p)" identifier (parameter_list "(Walker *pWalker,Select *p)" ( (parameter_declaration "Walker *pWalker" type_identifier (pointer_declarator "*pWalker" * identifier)) , (parameter_declaration "Select *p" type_identifier (pointer_declarator "*p" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  byte bVar2;\n  u8 uVar3;\n  int iVar4;\n  anon_union_4_16_1c331a60_for_u pOuterNC;\n  Parse *pParse;\n  sqlite3 *psVar5;\n  Select *pSVar6;\n  Select *pSVar7;\n  anon_union_4_16_1c331a60_for_u aVar8;\n  char *pcVar9;\n  ExprList *pEVar10;\n  Window *pWVar11;\n  Parse *pParse_00;\n  sqlite3 *psVar12;\n  Expr *pEVar13;\n  ExprList *pEVar14;\n  bool bVar15;\n  uint uVar16;\n  int iVar17;\n  char *pcVar18;\n  Expr *pEVar19;\n  int iVar20;\n  Expr *pE;\n  SrcList *pSVar21;\n  ExprList_item *pEVar22;\n  Expr *pEVar23;\n  int iVar24;\n  Expr *p_00;\n  Select *pSelect;\n  int iVar25;\n  int in_GS_OFFSET;\n  Expr *in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  u8 **pzBuffer;\n  Expr *in_stack_ffffff54;\n  Select *local_a0;\n  int local_90;\n  Expr *local_8c;\n  int local_7c;\n  int iCol;\n  NameContext sNC;\n  Walker w;\n  Token x;\n  \n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar16 = p->selFlags;\n  if ((uVar16 & 4) == 0) {\n    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;\n    pParse = pWalker->pParse;\n    psVar5 = pParse->db;\n    if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }\n    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);\n    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  iVar17 = 1;\nLAB_000548ed:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar17;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "u8 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "anon_union_4_16_1c331a60_for_u pOuterNC;" type_identifier identifier ;) (declaration "Parse *pParse;" type_identifier (pointer_declarator "*pParse" * identifier) ;) (declaration "sqlite3 *psVar5;" type_identifier (pointer_declarator "*psVar5" * identifier) ;) (declaration "Select *pSVar6;" type_identifier (pointer_declarator "*pSVar6" * identifier) ;) (declaration "Select *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "anon_union_4_16_1c331a60_for_u aVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ExprList *pEVar10;" type_identifier (pointer_declarator "*pEVar10" * identifier) ;) (declaration "Window *pWVar11;" type_identifier (pointer_declarator "*pWVar11" * identifier) ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "sqlite3 *psVar12;" type_identifier (pointer_declarator "*psVar12" * identifier) ;) (declaration "Expr *pEVar13;" type_identifier (pointer_declarator "*pEVar13" * identifier) ;) (declaration "ExprList *pEVar14;" type_identifier (pointer_declarator "*pEVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "Expr *pEVar19;" type_identifier (pointer_declarator "*pEVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "Expr *pE;" type_identifier (pointer_declarator "*pE" * identifier) ;) (declaration "SrcList *pSVar21;" type_identifier (pointer_declarator "*pSVar21" * identifier) ;) (declaration "ExprList_item *pEVar22;" type_identifier (pointer_declarator "*pEVar22" * identifier) ;) (declaration "Expr *pEVar23;" type_identifier (pointer_declarator "*pEVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "Expr *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "Select *pSelect;" type_identifier (pointer_declarator "*pSelect" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "Expr *in_stack_ffffff48;" type_identifier (pointer_declarator "*in_stack_ffffff48" * identifier) ;) (declaration "int in_stack_ffffff4c;" primitive_type identifier ;) (declaration "u8 **pzBuffer;" type_identifier (pointer_declarator "**pzBuffer" * (pointer_declarator "*pzBuffer" * identifier)) ;) (declaration "Expr *in_stack_ffffff54;" type_identifier (pointer_declarator "*in_stack_ffffff54" * identifier) ;) (declaration "Select *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "Expr *local_8c;" type_identifier (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int iCol;" primitive_type identifier ;) (declaration "NameContext sNC;" type_identifier identifier ;) (declaration "Walker w;" type_identifier identifier ;) (declaration "Token x;" type_identifier identifier ;) (expression_statement "iVar4 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar4 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = p->selFlags;" (assignment_expression "uVar16 = p->selFlags" identifier = (field_expression "p->selFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar16 & 4) == 0) {\n    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;\n    pParse = pWalker->pParse;\n    psVar5 = pParse->db;\n    if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }\n    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);\n    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n  }" if (parenthesized_expression "((uVar16 & 4) == 0)" ( (binary_expression "(uVar16 & 4) == 0" (parenthesized_expression "(uVar16 & 4)" ( (binary_expression "uVar16 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;\n    pParse = pWalker->pParse;\n    psVar5 = pParse->db;\n    if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }\n    sqlite3SelectPrep(pParse,p,pOuterNC.pNC);\n    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n  }" { (expression_statement "pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC;" (assignment_expression "pOuterNC = (anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC" identifier = (field_expression "(anon_union_4_16_1c331a60_for_u)(pWalker->u).pNC" (call_expression "(anon_union_4_16_1c331a60_for_u)(pWalker->u)" (parenthesized_expression "(anon_union_4_16_1c331a60_for_u)" ( identifier )) (argument_list "(pWalker->u)" ( (field_expression "pWalker->u" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "pParse = pWalker->pParse;" (assignment_expression "pParse = pWalker->pParse" identifier = (field_expression "pWalker->pParse" identifier -> field_identifier)) ;) (expression_statement "psVar5 = pParse->db;" (assignment_expression "psVar5 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if ((uVar16 & 0x40) != 0) {\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }" if (parenthesized_expression "((uVar16 & 0x40) != 0)" ( (binary_expression "(uVar16 & 0x40) != 0" (parenthesized_expression "(uVar16 & 0x40)" ( (binary_expression "uVar16 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = 0;\n      pSVar6 = p->pPrior;\n      pSelect = p;\n      do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );\n    }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "pSVar6 = p->pPrior;" (assignment_expression "pSVar6 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "pSelect = p;" (assignment_expression "pSelect = p" identifier = identifier) ;) (do_statement "do {\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      } while( true );" do (compound_statement "{\n        pSelect->selFlags = uVar16 | 4;\n        uVar16 = 0;\n        do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);\n        sNC.pParse = pParse;\n        sNC.pWinSelect = pSelect;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }\nLAB_00054743:\n        sNC.ncFlags = 0x4001;\n        sNC.pSrcList = pSVar21;\n        sNC.pNext = (NameContext *)pOuterNC;\n        iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);\n        if (iVar17 != 0) goto LAB_000548b8;\n        pEVar10 = pSelect->pGroupBy;\n        uVar16 = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }\n        sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;\n        sNC.ncFlags = uVar16 | 0x80;\n        iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);\n        if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;\n        pSVar21 = pSelect->pSrc;\n        if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }\nLAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;\n        sNC.pNext = (NameContext *)0x0;\n        if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }\n        if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;\n        if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }\n        pSVar7 = pSelect->pNext;\n        if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        pSelect = pSelect->pPrior;\n        local_7c = local_7c + 1;\n        if (pSelect == (Select *)0x0) goto LAB_00054a40;\n        uVar16 = pSelect->selFlags;\n      }" { (expression_statement "pSelect->selFlags = uVar16 | 4;" (assignment_expression "pSelect->selFlags = uVar16 | 4" (field_expression "pSelect->selFlags" identifier -> field_identifier) = (binary_expression "uVar16 | 4" identifier | number_literal)) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        } while (uVar16 < 0x18);" do (compound_statement "{\n          *(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;\n          uVar16 = uVar16 + 4;\n        }" { (expression_statement "*(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0;" (assignment_expression "*(undefined4 *)((int)&sNC.pSrcList + uVar16) = 0" (pointer_expression "*(undefined4 *)((int)&sNC.pSrcList + uVar16)" * (cast_expression "(undefined4 *)((int)&sNC.pSrcList + uVar16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sNC.pSrcList + uVar16)" ( (binary_expression "(int)&sNC.pSrcList + uVar16" (cast_expression "(int)&sNC.pSrcList" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sNC.pSrcList" & (field_expression "sNC.pSrcList" identifier . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar16 = uVar16 + 4;" (assignment_expression "uVar16 = uVar16 + 4" identifier = (binary_expression "uVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 < 0x18)" ( (binary_expression "uVar16 < 0x18" identifier < number_literal) )) ;) (expression_statement "sNC.pParse = pParse;" (assignment_expression "sNC.pParse = pParse" (field_expression "sNC.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "sNC.pWinSelect = pSelect;" (assignment_expression "sNC.pWinSelect = pSelect" (field_expression "sNC.pWinSelect" identifier . field_identifier) = identifier) ;) (expression_statement "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit);" (assignment_expression "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pLimit)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,pSelect->pLimit)" identifier (argument_list "(&sNC,pSelect->pLimit)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pSelect->pLimit" identifier -> field_identifier) )))) ;) (if_statement "if (iVar17 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pSVar21 = pSelect->pSrc;" (assignment_expression "pSVar21 = pSelect->pSrc" identifier = (field_expression "pSelect->pSrc" identifier -> field_identifier)) ;) (if_statement "if ((pSelect->selFlags & 0x10000) != 0) {\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }" if (parenthesized_expression "((pSelect->selFlags & 0x10000) != 0)" ( (binary_expression "(pSelect->selFlags & 0x10000) != 0" (parenthesized_expression "(pSelect->selFlags & 0x10000)" ( (binary_expression "pSelect->selFlags & 0x10000" (field_expression "pSelect->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          (pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;\n          pSelect->pOrderBy = (ExprList *)0x0;\n        }" { (expression_statement "(pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy;" (assignment_expression "(pSVar21->a[0].pSelect)->pOrderBy = pSelect->pOrderBy" (field_expression "(pSVar21->a[0].pSelect)->pOrderBy" (parenthesized_expression "(pSVar21->a[0].pSelect)" ( (field_expression "pSVar21->a[0].pSelect" (subscript_expression "pSVar21->a[0]" (field_expression "pSVar21->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier) = (field_expression "pSelect->pOrderBy" identifier -> field_identifier)) ;) (expression_statement "pSelect->pOrderBy = (ExprList *)0x0;" (assignment_expression "pSelect->pOrderBy = (ExprList *)0x0" (field_expression "pSelect->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }" if (parenthesized_expression "(0 < pSVar21->nSrc)" ( (binary_expression "0 < pSVar21->nSrc" number_literal < (field_expression "pSVar21->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n          iVar17 = 0;\n          do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          } while (iVar25 < pSVar21->nSrc);" do (compound_statement "{\n            while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }\n            iVar24 = 0;\n            pcVar18 = pParse->zAuthContext;\n            for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }\n            pcVar9 = pSVar21->a[iVar17].zName;\n            if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }\n            w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n            w.pParse = pParse;\n            w.xExprCallback = resolveExprStep;\n            w.xSelectCallback = resolveSelectStep;\n            w.u = pOuterNC;\n            sqlite3WalkSelect(&w,pSVar7);\n            pParse->zAuthContext = pcVar18;\n            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;\n            for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }\n            iVar25 = iVar17 + 1;\n            pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar25;\n          }" { (while_statement "while ((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }" while (parenthesized_expression "((pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0)))" ( (parenthesized_expression "(pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0))" ( (comma_expression "pSVar7 = pSVar21->a[iVar17].pSelect, pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0)" (assignment_expression "pSVar7 = pSVar21->a[iVar17].pSelect" identifier = (field_expression "pSVar21->a[iVar17].pSelect" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) , (binary_expression "pSVar7 == (Select *)0x0 ||\n                   ((pSVar7->selFlags & 4) != 0)" (binary_expression "pSVar7 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "((pSVar7->selFlags & 4) != 0)" ( (binary_expression "(pSVar7->selFlags & 4) != 0" (parenthesized_expression "(pSVar7->selFlags & 4)" ( (binary_expression "pSVar7->selFlags & 4" (field_expression "pSVar7->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )))) )) )) (compound_statement "{\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054743;\n            }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (if_statement "if (pSVar21->nSrc <= iVar17) goto LAB_00054743;" if (parenthesized_expression "(pSVar21->nSrc <= iVar17)" ( (binary_expression "pSVar21->nSrc <= iVar17" (field_expression "pSVar21->nSrc" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_00054743;" goto statement_identifier ;)) })) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "pcVar18 = pParse->zAuthContext;" (assignment_expression "pcVar18 = pParse->zAuthContext" identifier = (field_expression "pParse->zAuthContext" identifier -> field_identifier)) ;) (for_statement "for (aVar8 = pOuterNC; aVar8.pNC != (NameContext *)0x0;\n                aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext) {\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }" for ( (assignment_expression "aVar8 = pOuterNC" identifier = identifier) ; (binary_expression "aVar8.pNC != (NameContext *)0x0" (field_expression "aVar8.pNC" identifier . field_identifier) != (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "aVar8 = (anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext" identifier = (field_expression "(anon_union_4_16_1c331a60_for_u)(aVar8.pNC)->pNext" (call_expression "(anon_union_4_16_1c331a60_for_u)(aVar8.pNC)" (parenthesized_expression "(anon_union_4_16_1c331a60_for_u)" ( identifier )) (argument_list "(aVar8.pNC)" ( (field_expression "aVar8.pNC" identifier . field_identifier) ))) -> field_identifier)) ) (compound_statement "{\n              iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;\n            }" { (expression_statement "iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList;" (assignment_expression "iVar24 = iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList" identifier = (binary_expression "iVar24 + (int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList" identifier + (cast_expression "(int)((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList" ( (type_descriptor "int" primitive_type) ) (field_expression "((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2].\n                                     pEList" (subscript_expression "((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)[2]" (parenthesized_expression "((anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a)" ( (cast_expression "(anon_union_4_3_1bb8468b_for_uNC *)(aVar8.pSrcList)->a" ( (type_descriptor "anon_union_4_3_1bb8468b_for_uNC *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(aVar8.pSrcList)->a" (parenthesized_expression "(aVar8.pSrcList)" ( (field_expression "aVar8.pSrcList" identifier . field_identifier) )) -> field_identifier)) )) [ number_literal ]) . field_identifier)))) ;) })) (expression_statement "pcVar9 = pSVar21->a[iVar17].zName;" (assignment_expression "pcVar9 = pSVar21->a[iVar17].zName" identifier = (field_expression "pSVar21->a[iVar17].zName" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (pcVar9 != (char *)0x0) {\n              pParse->zAuthContext = pcVar9;\n            }" if (parenthesized_expression "(pcVar9 != (char *)0x0)" ( (binary_expression "pcVar9 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pParse->zAuthContext = pcVar9;\n            }" { (expression_statement "pParse->zAuthContext = pcVar9;" (assignment_expression "pParse->zAuthContext = pcVar9" (field_expression "pParse->zAuthContext" identifier -> field_identifier) = identifier) ;) })) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.pParse = pParse;" (assignment_expression "w.pParse = pParse" (field_expression "w.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "w.xExprCallback = resolveExprStep;" (assignment_expression "w.xExprCallback = resolveExprStep" (field_expression "w.xExprCallback" identifier . field_identifier) = identifier) ;) (expression_statement "w.xSelectCallback = resolveSelectStep;" (assignment_expression "w.xSelectCallback = resolveSelectStep" (field_expression "w.xSelectCallback" identifier . field_identifier) = identifier) ;) (expression_statement "w.u = pOuterNC;" (assignment_expression "w.u = pOuterNC" (field_expression "w.u" identifier . field_identifier) = identifier) ;) (expression_statement "sqlite3WalkSelect(&w,pSVar7);" (call_expression "sqlite3WalkSelect(&w,pSVar7)" identifier (argument_list "(&w,pSVar7)" ( (pointer_expression "&w" & identifier) , identifier ))) ;) (expression_statement "pParse->zAuthContext = pcVar18;" (assignment_expression "pParse->zAuthContext = pcVar18" (field_expression "pParse->zAuthContext" identifier -> field_identifier) = identifier) ;) (if_statement "if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))\n            goto LAB_000548b8;" if (parenthesized_expression "((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))" ( (binary_expression "(pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0')" (parenthesized_expression "(pParse->nErr != 0)" ( (binary_expression "pParse->nErr != 0" (field_expression "pParse->nErr" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(aVar8 = pOuterNC, psVar5->mallocFailed != '\0')" ( (comma_expression "aVar8 = pOuterNC, psVar5->mallocFailed != '\0'" (assignment_expression "aVar8 = pOuterNC" identifier = identifier) , (binary_expression "psVar5->mallocFailed != '\0'" (field_expression "psVar5->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (for_statement "for (; aVar8.pNC != (NameContext *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }" for ( ; (binary_expression "aVar8.pNC != (NameContext *)0x0" (field_expression "aVar8.pNC" identifier . field_identifier) != (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "aVar8.pNC = (aVar8.pNC)->pNext" (field_expression "aVar8.pNC" identifier . field_identifier) = (field_expression "(aVar8.pNC)->pNext" (parenthesized_expression "(aVar8.pNC)" ( (field_expression "aVar8.pNC" identifier . field_identifier) )) -> field_identifier)) ) (compound_statement "{\n              iVar24 = iVar24 - (aVar8.pNC)->nRef;\n            }" { (expression_statement "iVar24 = iVar24 - (aVar8.pNC)->nRef;" (assignment_expression "iVar24 = iVar24 - (aVar8.pNC)->nRef" identifier = (binary_expression "iVar24 - (aVar8.pNC)->nRef" identifier - (field_expression "(aVar8.pNC)->nRef" (parenthesized_expression "(aVar8.pNC)" ( (field_expression "aVar8.pNC" identifier . field_identifier) )) -> field_identifier))) ;) })) (expression_statement "iVar25 = iVar17 + 1;" (assignment_expression "iVar25 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3;" (assignment_expression "pSVar21->a[iVar17].fg.field_0x1 =\n                 pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3" (field_expression "pSVar21->a[iVar17].fg.field_0x1" (field_expression "pSVar21->a[iVar17].fg" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) = (binary_expression "pSVar21->a[iVar17].fg.field_0x1 & 0xf7 | (iVar24 != 0) << 3" (binary_expression "pSVar21->a[iVar17].fg.field_0x1 & 0xf7" (field_expression "pSVar21->a[iVar17].fg.field_0x1" (field_expression "pSVar21->a[iVar17].fg" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) | (binary_expression "(iVar24 != 0) << 3" (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) << number_literal))) ;) (expression_statement "pSVar21 = pSelect->pSrc;" (assignment_expression "pSVar21 = pSelect->pSrc" identifier = (field_expression "pSelect->pSrc" identifier -> field_identifier)) ;) (expression_statement "iVar17 = iVar25;" (assignment_expression "iVar17 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 < pSVar21->nSrc)" ( (binary_expression "iVar25 < pSVar21->nSrc" identifier < (field_expression "pSVar21->nSrc" identifier -> field_identifier)) )) ;) })) (labeled_statement "LAB_00054743:\n        sNC.ncFlags = 0x4001;" statement_identifier : (expression_statement "sNC.ncFlags = 0x4001;" (assignment_expression "sNC.ncFlags = 0x4001" (field_expression "sNC.ncFlags" identifier . field_identifier) = number_literal) ;)) (expression_statement "sNC.pSrcList = pSVar21;" (assignment_expression "sNC.pSrcList = pSVar21" (field_expression "sNC.pSrcList" identifier . field_identifier) = identifier) ;) (expression_statement "sNC.pNext = (NameContext *)pOuterNC;" (assignment_expression "sNC.pNext = (NameContext *)pOuterNC" (field_expression "sNC.pNext" identifier . field_identifier) = (cast_expression "(NameContext *)pOuterNC" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList);" (assignment_expression "iVar17 = sqlite3ResolveExprListNames(&sNC,pSelect->pEList)" identifier = (call_expression "sqlite3ResolveExprListNames(&sNC,pSelect->pEList)" identifier (argument_list "(&sNC,pSelect->pEList)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pSelect->pEList" identifier -> field_identifier) )))) ;) (if_statement "if (iVar17 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pEVar10 = pSelect->pGroupBy;" (assignment_expression "pEVar10 = pSelect->pGroupBy" identifier = (field_expression "pSelect->pGroupBy" identifier -> field_identifier)) ;) (expression_statement "uVar16 = sNC.ncFlags & 0xffffbfff;" (assignment_expression "uVar16 = sNC.ncFlags & 0xffffbfff" identifier = (binary_expression "sNC.ncFlags & 0xffffbfff" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal)) ;) (if_statement "if (pEVar10 == (ExprList *)0x0) {\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }" if (parenthesized_expression "(pEVar10 == (ExprList *)0x0)" ( (binary_expression "pEVar10 == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }\n          if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }\n        }" { (if_statement "if ((sNC.ncFlags & 0x10U) == 0) {\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }\n          else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }" if (parenthesized_expression "((sNC.ncFlags & 0x10U) == 0)" ( (binary_expression "(sNC.ncFlags & 0x10U) == 0" (parenthesized_expression "(sNC.ncFlags & 0x10U)" ( (binary_expression "sNC.ncFlags & 0x10U" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar16 = sNC.ncFlags & 0xffffbffe;\n          }" { (expression_statement "uVar16 = sNC.ncFlags & 0xffffbffe;" (assignment_expression "uVar16 = sNC.ncFlags & 0xffffbffe" identifier = (binary_expression "sNC.ncFlags & 0xffffbffe" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal)) ;) }) (else_clause "else {\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }" else (compound_statement "{\n            pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n          }" { (expression_statement "pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;" (assignment_expression "pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8" (field_expression "pSelect->selFlags" identifier -> field_identifier) = (binary_expression "pSelect->selFlags | sNC.ncFlags & 0x1000U | 8" (binary_expression "pSelect->selFlags | sNC.ncFlags & 0x1000U" (field_expression "pSelect->selFlags" identifier -> field_identifier) | (binary_expression "sNC.ncFlags & 0x1000U" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal)) | number_literal)) ;) }))) (if_statement "if (pSelect->pHaving != (Expr *)0x0) {\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }" if (parenthesized_expression "(pSelect->pHaving != (Expr *)0x0)" ( (binary_expression "pSelect->pHaving != (Expr *)0x0" (field_expression "pSelect->pHaving" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar18 = "a GROUP BY clause is required before HAVING";\n            sNC.ncFlags = uVar16;\n            goto LAB_00054968;\n          }" { (expression_statement "pcVar18 = "a GROUP BY clause is required before HAVING";" (assignment_expression "pcVar18 = "a GROUP BY clause is required before HAVING"" identifier = (string_literal ""a GROUP BY clause is required before HAVING"" " string_content ")) ;) (expression_statement "sNC.ncFlags = uVar16;" (assignment_expression "sNC.ncFlags = uVar16" (field_expression "sNC.ncFlags" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) }) (else_clause "else {\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }" else (compound_statement "{\n          pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;\n        }" { (expression_statement "pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8;" (assignment_expression "pSelect->selFlags = pSelect->selFlags | sNC.ncFlags & 0x1000U | 8" (field_expression "pSelect->selFlags" identifier -> field_identifier) = (binary_expression "pSelect->selFlags | sNC.ncFlags & 0x1000U | 8" (binary_expression "pSelect->selFlags | sNC.ncFlags & 0x1000U" (field_expression "pSelect->selFlags" identifier -> field_identifier) | (binary_expression "sNC.ncFlags & 0x1000U" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal)) | number_literal)) ;) }))) (expression_statement "sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList;" (assignment_expression "sNC.uNC = (anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList" (field_expression "sNC.uNC" identifier . field_identifier) = (cast_expression "(anon_union_4_3_1bb8468b_for_uNC)pSelect->pEList" ( (type_descriptor "anon_union_4_3_1bb8468b_for_uNC" type_identifier) ) (field_expression "pSelect->pEList" identifier -> field_identifier))) ;) (expression_statement "sNC.ncFlags = uVar16 | 0x80;" (assignment_expression "sNC.ncFlags = uVar16 | 0x80" (field_expression "sNC.ncFlags" identifier . field_identifier) = (binary_expression "uVar16 | 0x80" identifier | number_literal)) ;) (expression_statement "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving);" (assignment_expression "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pHaving)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,pSelect->pHaving)" identifier (argument_list "(&sNC,pSelect->pHaving)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pSelect->pHaving" identifier -> field_identifier) )))) ;) (if_statement "if ((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))\n        goto LAB_000548b8;" if (parenthesized_expression "((iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0))" ( (binary_expression "(iVar17 != 0) || (iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0)" (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0)" ( (comma_expression "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere), iVar17 != 0" (assignment_expression "iVar17 = sqlite3ResolveExprNames(&sNC,pSelect->pWhere)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,pSelect->pWhere)" identifier (argument_list "(&sNC,pSelect->pWhere)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pSelect->pWhere" identifier -> field_identifier) )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pSVar21 = pSelect->pSrc;" (assignment_expression "pSVar21 = pSelect->pSrc" identifier = (field_expression "pSelect->pSrc" identifier -> field_identifier)) ;) (if_statement "if (0 < pSVar21->nSrc) {\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }" if (parenthesized_expression "(0 < pSVar21->nSrc)" ( (binary_expression "0 < pSVar21->nSrc" number_literal < (field_expression "pSVar21->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n          iVar17 = 0;\n          do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pSVar21->nSrc);" do (compound_statement "{\n            while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }\n            iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);\n            if (iVar24 != 0) goto LAB_000548b8;\n            pSVar21 = pSelect->pSrc;\n            iVar17 = iVar17 + 1;\n          }" { (while_statement "while ((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0) {\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }" while (parenthesized_expression "((pSVar21->a[iVar17].fg.field_0x1 & 4) == 0)" ( (binary_expression "(pSVar21->a[iVar17].fg.field_0x1 & 4) == 0" (parenthesized_expression "(pSVar21->a[iVar17].fg.field_0x1 & 4)" ( (binary_expression "pSVar21->a[iVar17].fg.field_0x1 & 4" (field_expression "pSVar21->a[iVar17].fg.field_0x1" (field_expression "pSVar21->a[iVar17].fg" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar17 = iVar17 + 1;\n              if (pSVar21->nSrc <= iVar17) goto LAB_00054818;\n            }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (if_statement "if (pSVar21->nSrc <= iVar17) goto LAB_00054818;" if (parenthesized_expression "(pSVar21->nSrc <= iVar17)" ( (binary_expression "pSVar21->nSrc <= iVar17" (field_expression "pSVar21->nSrc" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_00054818;" goto statement_identifier ;)) })) (expression_statement "iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg);" (assignment_expression "iVar24 = sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg)" identifier = (call_expression "sqlite3ResolveExprListNames(&sNC,pSVar21->a[iVar17].u1.pFuncArg)" identifier (argument_list "(&sNC,pSVar21->a[iVar17].u1.pFuncArg)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pSVar21->a[iVar17].u1.pFuncArg" (field_expression "pSVar21->a[iVar17].u1" (subscript_expression "pSVar21->a[iVar17]" (field_expression "pSVar21->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) )))) ;) (if_statement "if (iVar24 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pSVar21 = pSelect->pSrc;" (assignment_expression "pSVar21 = pSelect->pSrc" identifier = (field_expression "pSelect->pSrc" identifier -> field_identifier)) ;) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar17 < pSVar21->nSrc)" ( (binary_expression "iVar17 < pSVar21->nSrc" identifier < (field_expression "pSVar21->nSrc" identifier -> field_identifier)) )) ;) })) (labeled_statement "LAB_00054818:\n        sNC.ncFlags = sNC.ncFlags | 0x4001;" statement_identifier : (expression_statement "sNC.ncFlags = sNC.ncFlags | 0x4001;" (assignment_expression "sNC.ncFlags = sNC.ncFlags | 0x4001" (field_expression "sNC.ncFlags" identifier . field_identifier) = (binary_expression "sNC.ncFlags | 0x4001" (field_expression "sNC.ncFlags" identifier . field_identifier) | number_literal)) ;)) (expression_statement "sNC.pNext = (NameContext *)0x0;" (assignment_expression "sNC.pNext = (NameContext *)0x0" (field_expression "sNC.pNext" identifier . field_identifier) = (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((pSelect->selFlags & 0x10000) != 0) {\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }" if (parenthesized_expression "((pSelect->selFlags & 0x10000) != 0)" ( (binary_expression "(pSelect->selFlags & 0x10000) != 0" (parenthesized_expression "(pSelect->selFlags & 0x10000)" ( (binary_expression "pSelect->selFlags & 0x10000" (field_expression "pSelect->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          pSVar7 = pSVar21->a[0].pSelect;\n          pSelect->pOrderBy = pSVar7->pOrderBy;\n          pSVar7->pOrderBy = (ExprList *)0x0;\n        }" { (expression_statement "pSVar7 = pSVar21->a[0].pSelect;" (assignment_expression "pSVar7 = pSVar21->a[0].pSelect" identifier = (field_expression "pSVar21->a[0].pSelect" (subscript_expression "pSVar21->a[0]" (field_expression "pSVar21->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "pSelect->pOrderBy = pSVar7->pOrderBy;" (assignment_expression "pSelect->pOrderBy = pSVar7->pOrderBy" (field_expression "pSelect->pOrderBy" identifier -> field_identifier) = (field_expression "pSVar7->pOrderBy" identifier -> field_identifier)) ;) (expression_statement "pSVar7->pOrderBy = (ExprList *)0x0;" (assignment_expression "pSVar7->pOrderBy = (ExprList *)0x0" (field_expression "pSVar7->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if ((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0'))" ( (binary_expression "(((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)) ||\n           (psVar5->mallocFailed != '\0')" (parenthesized_expression "(((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0))" ( (binary_expression "((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c) &&\n            (iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)" (parenthesized_expression "((int)(uint)(pSVar6 != (Select *)0x0) <= local_7c)" ( (binary_expression "(int)(uint)(pSVar6 != (Select *)0x0) <= local_7c" (cast_expression "(int)(uint)(pSVar6 != (Select *)0x0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(pSVar6 != (Select *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pSVar6 != (Select *)0x0)" ( (binary_expression "pSVar6 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) <= identifier) )) && (parenthesized_expression "(iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0)" ( (comma_expression "iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER"), iVar17 != 0" (assignment_expression "iVar17 = resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER")" identifier = (call_expression "resolveOrderGroupBy(&sNC,pSelect,pSelect->pOrderBy,"ORDER")" identifier (argument_list "(&sNC,pSelect,pSelect->pOrderBy,"ORDER")" ( (pointer_expression "&sNC" & identifier) , identifier , (field_expression "pSelect->pOrderBy" identifier -> field_identifier) , (string_literal ""ORDER"" " string_content ") )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(psVar5->mallocFailed != '\0')" ( (binary_expression "psVar5->mallocFailed != '\0'" (field_expression "psVar5->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "sNC.ncFlags = sNC.ncFlags & 0xffffbfff;" (assignment_expression "sNC.ncFlags = sNC.ncFlags & 0xffffbfff" (field_expression "sNC.ncFlags" identifier . field_identifier) = (binary_expression "sNC.ncFlags & 0xffffbfff" (field_expression "sNC.ncFlags" identifier . field_identifier) & number_literal)) ;) (if_statement "if (pEVar10 != (ExprList *)0x0) {\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" if (parenthesized_expression "(pEVar10 != (ExprList *)0x0)" ( (binary_expression "pEVar10 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");\n          if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;\n          pEVar22 = pEVar10->a;\n          if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" { (expression_statement "iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP");" (assignment_expression "iVar17 = resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP")" identifier = (call_expression "resolveOrderGroupBy(&sNC,pSelect,pEVar10,"GROUP")" identifier (argument_list "(&sNC,pSelect,pEVar10,"GROUP")" ( (pointer_expression "&sNC" & identifier) , identifier , identifier , (string_literal ""GROUP"" " string_content ") )))) ;) (if_statement "if ((iVar17 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((iVar17 != 0) || (psVar5->mallocFailed != '\0'))" ( (binary_expression "(iVar17 != 0) || (psVar5->mallocFailed != '\0')" (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) || (parenthesized_expression "(psVar5->mallocFailed != '\0')" ( (binary_expression "psVar5->mallocFailed != '\0'" (field_expression "psVar5->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pEVar22 = pEVar10->a;" (assignment_expression "pEVar22 = pEVar10->a" identifier = (field_expression "pEVar10->a" identifier -> field_identifier)) ;) (if_statement "if (0 < pEVar10->nExpr) {\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }" if (parenthesized_expression "(0 < pEVar10->nExpr)" ( (binary_expression "0 < pEVar10->nExpr" number_literal < (field_expression "pEVar10->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n            if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar17 = 0;\n            while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }\n          }" { (if_statement "if (((pEVar10->a[0].pExpr)->flags & 0x10) != 0) {\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" if (parenthesized_expression "(((pEVar10->a[0].pExpr)->flags & 0x10) != 0)" ( (binary_expression "((pEVar10->a[0].pExpr)->flags & 0x10) != 0" (parenthesized_expression "((pEVar10->a[0].pExpr)->flags & 0x10)" ( (binary_expression "(pEVar10->a[0].pExpr)->flags & 0x10" (field_expression "(pEVar10->a[0].pExpr)->flags" (parenthesized_expression "(pEVar10->a[0].pExpr)" ( (field_expression "pEVar10->a[0].pExpr" (subscript_expression "pEVar10->a[0]" (field_expression "pEVar10->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" { (labeled_statement "LAB_000549de:\n              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";" statement_identifier : (expression_statement "pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";" (assignment_expression "pcVar18 = "aggregate functions are not allowed in the GROUP BY clause"" identifier = (string_literal ""aggregate functions are not allowed in the GROUP BY clause"" " string_content ")) ;)) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar17 = iVar17 + 1;\n              pEVar22 = pEVar22 + 1;\n              if (iVar17 == pEVar10->nExpr) break;\n              if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;\n            }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "pEVar22 = pEVar22 + 1;" (assignment_expression "pEVar22 = pEVar22 + 1" identifier = (binary_expression "pEVar22 + 1" identifier + number_literal)) ;) (if_statement "if (iVar17 == pEVar10->nExpr) break;" if (parenthesized_expression "(iVar17 == pEVar10->nExpr)" ( (binary_expression "iVar17 == pEVar10->nExpr" identifier == (field_expression "pEVar10->nExpr" identifier -> field_identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((pEVar22->pExpr->flags & 0x10) != 0) goto LAB_000549de;" if (parenthesized_expression "((pEVar22->pExpr->flags & 0x10) != 0)" ( (binary_expression "(pEVar22->pExpr->flags & 0x10) != 0" (parenthesized_expression "(pEVar22->pExpr->flags & 0x10)" ( (binary_expression "pEVar22->pExpr->flags & 0x10" (field_expression "pEVar22->pExpr->flags" (field_expression "pEVar22->pExpr" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000549de;" goto statement_identifier ;)) })) })) })) (if_statement "if (1 < pParse->eParseMode) {\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }" if (parenthesized_expression "(1 < pParse->eParseMode)" ( (binary_expression "1 < pParse->eParseMode" number_literal < (field_expression "pParse->eParseMode" identifier -> field_identifier)) )) (compound_statement "{\n          for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }\n        }" { (for_statement "for (pWVar11 = pSelect->pWinDefn; pWVar11 != (Window *)0x0; pWVar11 = pWVar11->pNextWin) {\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }" for ( (assignment_expression "pWVar11 = pSelect->pWinDefn" identifier = (field_expression "pSelect->pWinDefn" identifier -> field_identifier)) ; (binary_expression "pWVar11 != (Window *)0x0" identifier != (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pWVar11 = pWVar11->pNextWin" identifier = (field_expression "pWVar11->pNextWin" identifier -> field_identifier)) ) (compound_statement "{\n            iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);\n            if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;\n          }" { (expression_statement "iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy);" (assignment_expression "iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy)" identifier = (call_expression "sqlite3ResolveExprListNames(&sNC,pWVar11->pOrderBy)" identifier (argument_list "(&sNC,pWVar11->pOrderBy)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pWVar11->pOrderBy" identifier -> field_identifier) )))) ;) (if_statement "if ((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))\n            goto LAB_000548b8;" if (parenthesized_expression "((iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0))" ( (binary_expression "(iVar17 != 0) ||\n               (iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0)" (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0)" ( (comma_expression "iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition), iVar17 != 0" (assignment_expression "iVar17 = sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition)" identifier = (call_expression "sqlite3ResolveExprListNames(&sNC,pWVar11->pPartition)" identifier (argument_list "(&sNC,pWVar11->pPartition)" ( (pointer_expression "&sNC" & identifier) , (field_expression "pWVar11->pPartition" identifier -> field_identifier) )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) })) (expression_statement "pSVar7 = pSelect->pNext;" (assignment_expression "pSVar7 = pSelect->pNext" identifier = (field_expression "pSelect->pNext" identifier -> field_identifier)) ;) (if_statement "if ((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)) {\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" if (parenthesized_expression "((pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr))" ( (binary_expression "(pSVar7 != (Select *)0x0) && (pSelect->pEList->nExpr != pSVar7->pEList->nExpr)" (parenthesized_expression "(pSVar7 != (Select *)0x0)" ( (binary_expression "pSVar7 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pSelect->pEList->nExpr != pSVar7->pEList->nExpr)" ( (binary_expression "pSelect->pEList->nExpr != pSVar7->pEList->nExpr" (field_expression "pSelect->pEList->nExpr" (field_expression "pSelect->pEList" identifier -> field_identifier) -> field_identifier) != (field_expression "pSVar7->pEList->nExpr" (field_expression "pSVar7->pEList" identifier -> field_identifier) -> field_identifier)) ))) )) (compound_statement "{\n          if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" { (if_statement "if ((pSVar7->selFlags & 0x200) == 0) {\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }" if (parenthesized_expression "((pSVar7->selFlags & 0x200) == 0)" ( (binary_expression "(pSVar7->selFlags & 0x200) == 0" (parenthesized_expression "(pSVar7->selFlags & 0x200)" ( (binary_expression "pSVar7->selFlags & 0x200" (field_expression "pSVar7->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }" { (expression_statement "pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";" (assignment_expression "pcVar18 = \n            "SELECTs to the left and right of %s do not have the same number of result columns"" identifier = (string_literal ""SELECTs to the left and right of %s do not have the same number of result columns"" " string_content ")) ;) }) (else_clause "else {\n            pcVar18 = "all VALUES must have the same number of terms";\n          }" else (compound_statement "{\n            pcVar18 = "all VALUES must have the same number of terms";\n          }" { (expression_statement "pcVar18 = "all VALUES must have the same number of terms";" (assignment_expression "pcVar18 = "all VALUES must have the same number of terms"" identifier = (string_literal ""all VALUES must have the same number of terms"" " string_content ")) ;) }))) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "pSelect = pSelect->pPrior;" (assignment_expression "pSelect = pSelect->pPrior" identifier = (field_expression "pSelect->pPrior" identifier -> field_identifier)) ;) (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;) (if_statement "if (pSelect == (Select *)0x0) goto LAB_00054a40;" if (parenthesized_expression "(pSelect == (Select *)0x0)" ( (binary_expression "pSelect == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00054a40;" goto statement_identifier ;)) (expression_statement "uVar16 = pSelect->selFlags;" (assignment_expression "uVar16 = pSelect->selFlags" identifier = (field_expression "pSelect->selFlags" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "sqlite3SelectPrep(pParse,p,pOuterNC.pNC);" (call_expression "sqlite3SelectPrep(pParse,p,pOuterNC.pNC)" identifier (argument_list "(pParse,p,pOuterNC.pNC)" ( identifier , identifier , (field_expression "pOuterNC.pNC" identifier . field_identifier) ))) ;) (if_statement "if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((pParse->nErr != 0) || (psVar5->mallocFailed != '\0'))" ( (binary_expression "(pParse->nErr != 0) || (psVar5->mallocFailed != '\0')" (parenthesized_expression "(pParse->nErr != 0)" ( (binary_expression "pParse->nErr != 0" (field_expression "pParse->nErr" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(psVar5->mallocFailed != '\0')" ( (binary_expression "psVar5->mallocFailed != '\0'" (field_expression "psVar5->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;) (labeled_statement "LAB_00054a40:\n  if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }" statement_identifier : (if_statement "if ((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)) {\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }" if (parenthesized_expression "((pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0))" ( (binary_expression "(pSVar6 != (Select *)0x0) && (pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)" (parenthesized_expression "(pSVar6 != (Select *)0x0)" ( (binary_expression "pSVar6 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0)" ( (comma_expression "pEVar10 = p->pOrderBy, pEVar10 != (ExprList *)0x0" (assignment_expression "pEVar10 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) , (binary_expression "pEVar10 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    iVar17 = pEVar10->nExpr;\n    psVar5 = pParse->db;\n    if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);\nLAB_000548b8:\n    iVar17 = 2;\n    goto LAB_000548ed;\n  }" { (expression_statement "iVar17 = pEVar10->nExpr;" (assignment_expression "iVar17 = pEVar10->nExpr" identifier = (field_expression "pEVar10->nExpr" identifier -> field_identifier)) ;) (expression_statement "psVar5 = pParse->db;" (assignment_expression "psVar5 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if (psVar5->aLimit[2] < iVar17) {\n      pcVar18 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }" if (parenthesized_expression "(psVar5->aLimit[2] < iVar17)" ( (binary_expression "psVar5->aLimit[2] < iVar17" (subscript_expression "psVar5->aLimit[2]" (field_expression "psVar5->aLimit" identifier -> field_identifier) [ number_literal ]) < identifier) )) (compound_statement "{\n      pcVar18 = "too many terms in ORDER BY clause";\n    }" { (expression_statement "pcVar18 = "too many terms in ORDER BY clause";" (assignment_expression "pcVar18 = "too many terms in ORDER BY clause"" identifier = (string_literal ""too many terms in ORDER BY clause"" " string_content ")) ;) }) (else_clause "else {\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }" else (compound_statement "{\n      iVar24 = 0;\n      if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }\n      p->pNext = (Select *)0x0;\n      pSVar6 = p->pPrior;\n      if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }\n      while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }\n      if (iVar17 < 1) goto LAB_000548e8;\n      bVar2 = pEVar10->a[0].field_0x9;\n      iVar24 = 0;\n      while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }\n      pcVar18 = "%r ORDER BY term does not match any column in the result set";\n    }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar17) {\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);\n      }" { (do_statement "do {\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        } while (iVar17 != iVar25);" do (compound_statement "{\n          iVar25 = iVar24 + 1;\n          puVar1 = &pEVar10->a[iVar24].field_0x9;\n          *puVar1 = *puVar1 & 0xfb;\n          iVar24 = iVar25;\n        }" { (expression_statement "iVar25 = iVar24 + 1;" (assignment_expression "iVar25 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = &pEVar10->a[iVar24].field_0x9;" (assignment_expression "puVar1 = &pEVar10->a[iVar24].field_0x9" identifier = (pointer_expression "&pEVar10->a[iVar24].field_0x9" & (field_expression "pEVar10->a[iVar24].field_0x9" (subscript_expression "pEVar10->a[iVar24]" (field_expression "pEVar10->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 & 0xfb;" (assignment_expression "*puVar1 = *puVar1 & 0xfb" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 & 0xfb" (pointer_expression "*puVar1" * identifier) & number_literal)) ;) (expression_statement "iVar24 = iVar25;" (assignment_expression "iVar24 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar17 != iVar25)" ( (binary_expression "iVar17 != iVar25" identifier != identifier) )) ;) })) (expression_statement "p->pNext = (Select *)0x0;" (assignment_expression "p->pNext = (Select *)0x0" (field_expression "p->pNext" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar6 = p->pPrior;" (assignment_expression "pSVar6 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (if_statement "if (p->pPrior == (Select *)0x0) {\n        local_a0 = p;\n      }\n      else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }" if (parenthesized_expression "(p->pPrior == (Select *)0x0)" ( (binary_expression "p->pPrior == (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_a0 = p;\n      }" { (expression_statement "local_a0 = p;" (assignment_expression "local_a0 = p" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }" else (compound_statement "{\n        do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);\n      }" { (do_statement "do {\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        } while (local_a0->pPrior != (Select *)0x0);" do (compound_statement "{\n          local_a0 = pSVar6;\n          local_a0->pNext = p;\n          pSVar6 = local_a0->pPrior;\n          p = local_a0;\n        }" { (expression_statement "local_a0 = pSVar6;" (assignment_expression "local_a0 = pSVar6" identifier = identifier) ;) (expression_statement "local_a0->pNext = p;" (assignment_expression "local_a0->pNext = p" (field_expression "local_a0->pNext" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar6 = local_a0->pPrior;" (assignment_expression "pSVar6 = local_a0->pPrior" identifier = (field_expression "local_a0->pPrior" identifier -> field_identifier)) ;) (expression_statement "p = local_a0;" (assignment_expression "p = local_a0" identifier = identifier) ;) }) while (parenthesized_expression "(local_a0->pPrior != (Select *)0x0)" ( (binary_expression "local_a0->pPrior != (Select *)0x0" (field_expression "local_a0->pPrior" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }))) (while_statement "while (pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17) {\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }" while (parenthesized_expression "(pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17)" ( (comma_expression "pParse_00 = (Parse *)local_a0->pEList, 0 < iVar17" (assignment_expression "pParse_00 = (Parse *)local_a0->pEList" identifier = (cast_expression "(Parse *)local_a0->pEList" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_a0->pEList" identifier -> field_identifier))) , (binary_expression "0 < iVar17" number_literal < identifier)) )) (compound_statement "{\n        bVar15 = false;\n        iVar24 = 0;\n        pEVar22 = pEVar10->a;\n        do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);\n        local_a0 = local_a0->pNext;\n        if ((local_a0 == (Select *)0x0) || (!bVar15)) break;\n      }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "pEVar22 = pEVar10->a;" (assignment_expression "pEVar22 = pEVar10->a" identifier = (field_expression "pEVar10->a" identifier -> field_identifier)) ;) (do_statement "do {\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        } while (iVar24 < iVar17);" do (compound_statement "{\n          iCol = -1;\n          if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }\nLAB_00054b7d:\n          iVar24 = iVar24 + 1;\n          pEVar22 = pEVar22 + 1;\n        }" { (expression_statement "iCol = -1;" (assignment_expression "iCol = -1" identifier = number_literal) ;) (if_statement "if ((pEVar22->field_0x9 & 4) == 0) {\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }" if (parenthesized_expression "((pEVar22->field_0x9 & 4) == 0)" ( (binary_expression "(pEVar22->field_0x9 & 4) == 0" (parenthesized_expression "(pEVar22->field_0x9 & 4)" ( (binary_expression "pEVar22->field_0x9 & 4" (field_expression "pEVar22->field_0x9" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;\n            iVar17 = sqlite3ExprIsInteger(p_00,&iCol);\n            if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }\n            if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }\n            pEVar22->field_0x9 = pEVar22->field_0x9 | 4;\n            iVar17 = pEVar10->nExpr;\n          }" { (for_statement "for (p_00 = pEVar22->pExpr; p_00 != (Expr *)0x0; p_00 = p_00->pLeft) {\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }" for ( (assignment_expression "p_00 = pEVar22->pExpr" identifier = (field_expression "pEVar22->pExpr" identifier -> field_identifier)) ; (binary_expression "p_00 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "p_00 = p_00->pLeft" identifier = (field_expression "p_00->pLeft" identifier -> field_identifier)) ) (compound_statement "{\n              while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }\n            }" { (while_statement "while( true ) {\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;\n                if ((p_00->flags & 0x40000) == 0) break;\n                p_00 = ((p_00->x).pList)->a[0].pExpr;\n                if (p_00 == (Expr *)0x0) goto LAB_00054b33;\n              }" { (if_statement "if ((p_00->flags & 0x41000) == 0) goto LAB_00054b33;" if (parenthesized_expression "((p_00->flags & 0x41000) == 0)" ( (binary_expression "(p_00->flags & 0x41000) == 0" (parenthesized_expression "(p_00->flags & 0x41000)" ( (binary_expression "p_00->flags & 0x41000" (field_expression "p_00->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) (if_statement "if ((p_00->flags & 0x40000) == 0) break;" if (parenthesized_expression "((p_00->flags & 0x40000) == 0)" ( (binary_expression "(p_00->flags & 0x40000) == 0" (parenthesized_expression "(p_00->flags & 0x40000)" ( (binary_expression "p_00->flags & 0x40000" (field_expression "p_00->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "p_00 = ((p_00->x).pList)->a[0].pExpr;" (assignment_expression "p_00 = ((p_00->x).pList)->a[0].pExpr" identifier = (field_expression "((p_00->x).pList)->a[0].pExpr" (subscript_expression "((p_00->x).pList)->a[0]" (field_expression "((p_00->x).pList)->a" (parenthesized_expression "((p_00->x).pList)" ( (field_expression "(p_00->x).pList" (parenthesized_expression "(p_00->x)" ( (field_expression "p_00->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (p_00 == (Expr *)0x0) goto LAB_00054b33;" if (parenthesized_expression "(p_00 == (Expr *)0x0)" ( (binary_expression "p_00 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00054b33:\n            pzBuffer = (u8 **)0x54b3e;" statement_identifier : (expression_statement "pzBuffer = (u8 **)0x54b3e;" (assignment_expression "pzBuffer = (u8 **)0x54b3e" identifier = (cast_expression "(u8 **)0x54b3e" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) (expression_statement "iVar17 = sqlite3ExprIsInteger(p_00,&iCol);" (assignment_expression "iVar17 = sqlite3ExprIsInteger(p_00,&iCol)" identifier = (call_expression "sqlite3ExprIsInteger(p_00,&iCol)" identifier (argument_list "(p_00,&iCol)" ( identifier , (pointer_expression "&iCol" & identifier) )))) ;) (if_statement "if (iVar17 == 0) {\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }\n            else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n              if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }\n              if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }\n            }" { (if_statement "if (p_00->op == ';') {\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }\n              else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }" if (parenthesized_expression "(p_00->op == ';')" ( (binary_expression "p_00->op == ';'" (field_expression "p_00->op" identifier -> field_identifier) == (char_literal "';'" ' character ')) )) (compound_statement "{\n                pzBuffer = (u8 **)0x54ce4;\n                iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);\n                if (iCol == 0) goto LAB_00054c09;\n              }" { (expression_statement "pzBuffer = (u8 **)0x54ce4;" (assignment_expression "pzBuffer = (u8 **)0x54ce4" identifier = (cast_expression "(u8 **)0x54ce4" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54);" (assignment_expression "iCol = resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54)" identifier = (call_expression "resolveAsName(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54)" identifier (argument_list "(pParse_00,(ExprList *)&p_00->u,pE,in_stack_ffffff54)" ( identifier , (cast_expression "(ExprList *)&p_00->u" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_00->u" & (field_expression "p_00->u" identifier -> field_identifier))) , identifier , identifier )))) ;) (if_statement "if (iCol == 0) goto LAB_00054c09;" if (parenthesized_expression "(iCol == 0)" ( (binary_expression "iCol == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054c09;" goto statement_identifier ;)) }) (else_clause "else {\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }" else (compound_statement "{\n                iCol = 0;\nLAB_00054c09:\n                local_8c = p_00;\n                if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }\n                iVar17 = iCol;\n                if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }\n                iCol = iVar17;\n                if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }\n              }" { (expression_statement "iCol = 0;" (assignment_expression "iCol = 0" identifier = number_literal) ;) (labeled_statement "LAB_00054c09:\n                local_8c = p_00;" statement_identifier : (expression_statement "local_8c = p_00;" (assignment_expression "local_8c = p_00" identifier = identifier) ;)) (if_statement "if (pParse->eParseMode < 2) {\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }" if (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n                  local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);\n                }" { (expression_statement "local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);" (assignment_expression "local_8c = exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer)" identifier = (call_expression "exprDup((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer)" identifier (argument_list "((sqlite3 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier )))) ;) })) (expression_statement "iVar17 = iCol;" (assignment_expression "iVar17 = iCol" identifier = identifier) ;) (if_statement "if (psVar5->mallocFailed == '\0') {\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }" if (parenthesized_expression "(psVar5->mallocFailed == '\0')" ( (binary_expression "psVar5->mallocFailed == '\0'" (field_expression "psVar5->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  pEVar14 = local_a0->pEList;\n                  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n                  w.walkerDepth = 0;\n                  w.eCode = 0;\n                  w._22_2_ = 0;\n                  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;\n                  psVar12 = pParse->db;\n                  w.u.n = 0x81;\n                  uVar3 = psVar12->suppressErr;\n                  if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }\n                  w.pParse = pParse;\n                  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;\n                  iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);\n                  psVar12->suppressErr = uVar3;\n                  iVar25 = 0;\n                  iVar17 = iVar25;\n                  if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }\n                }" { (expression_statement "pEVar14 = local_a0->pEList;" (assignment_expression "pEVar14 = local_a0->pEList" identifier = (field_expression "local_a0->pEList" identifier -> field_identifier)) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.walkerDepth = 0;" (assignment_expression "w.walkerDepth = 0" (field_expression "w.walkerDepth" identifier . field_identifier) = number_literal) ;) (expression_statement "w.eCode = 0;" (assignment_expression "w.eCode = 0" (field_expression "w.eCode" identifier . field_identifier) = number_literal) ;) (expression_statement "w._22_2_ = 0;" (assignment_expression "w._22_2_ = 0" (field_expression "w._22_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc;" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)local_a0->pSrc" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_a0->pSrc" identifier -> field_identifier))) ;) (expression_statement "psVar12 = pParse->db;" (assignment_expression "psVar12 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "w.u.n = 0x81;" (assignment_expression "w.u.n = 0x81" (field_expression "w.u.n" (field_expression "w.u" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "uVar3 = psVar12->suppressErr;" (assignment_expression "uVar3 = psVar12->suppressErr" identifier = (field_expression "psVar12->suppressErr" identifier -> field_identifier)) ;) (if_statement "if (pParse->eParseMode < 2) {\n                    psVar12->suppressErr = '\x01';\n                  }" if (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n                    psVar12->suppressErr = '\x01';\n                  }" { (expression_statement "psVar12->suppressErr = '\x01';" (assignment_expression "psVar12->suppressErr = '\x01'" (field_expression "psVar12->suppressErr" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "w.pParse = pParse;" (assignment_expression "w.pParse = pParse" (field_expression "w.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14;" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)pEVar14" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)pEVar14" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c);" (assignment_expression "iVar20 = sqlite3ResolveExprNames((NameContext *)&w,local_8c)" identifier = (call_expression "sqlite3ResolveExprNames((NameContext *)&w,local_8c)" identifier (argument_list "((NameContext *)&w,local_8c)" ( (cast_expression "(NameContext *)&w" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&w" & identifier)) , identifier )))) ;) (expression_statement "psVar12->suppressErr = uVar3;" (assignment_expression "psVar12->suppressErr = uVar3" (field_expression "psVar12->suppressErr" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = iVar25;" (assignment_expression "iVar17 = iVar25" identifier = identifier) ;) (if_statement "if ((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)) {\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }" if (parenthesized_expression "((iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr))" ( (binary_expression "(iVar20 == 0) && (local_90 = 0, 0 < pEVar14->nExpr)" (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_90 = 0, 0 < pEVar14->nExpr)" ( (comma_expression "local_90 = 0, 0 < pEVar14->nExpr" (assignment_expression "local_90 = 0" identifier = number_literal) , (binary_expression "0 < pEVar14->nExpr" number_literal < (field_expression "pEVar14->nExpr" identifier -> field_identifier))) ))) )) (compound_statement "{\n                    do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);\n                  }" { (do_statement "do {\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    } while (local_90 < pEVar14->nExpr);" do (compound_statement "{\n                      iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);\n                      local_90 = local_90 + 1;\n                      iVar17 = local_90;\n                      if (iVar20 < 2) break;\n                      iVar17 = iVar25;\n                    }" { (expression_statement "iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1);" (assignment_expression "iVar20 = sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1)" identifier = (call_expression "sqlite3ExprCompare((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1)" identifier (argument_list "((Parse *)0x0,pEVar14->a[local_90].pExpr,local_8c,\n                                                  -1)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (field_expression "pEVar14->a[local_90].pExpr" (subscript_expression "pEVar14->a[local_90]" (field_expression "pEVar14->a" identifier -> field_identifier) [ identifier ]) . field_identifier) , identifier , number_literal )))) ;) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = local_90;" (assignment_expression "iVar17 = local_90" identifier = identifier) ;) (if_statement "if (iVar20 < 2) break;" if (parenthesized_expression "(iVar20 < 2)" ( (binary_expression "iVar20 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar17 = iVar25;" (assignment_expression "iVar17 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(local_90 < pEVar14->nExpr)" ( (binary_expression "local_90 < pEVar14->nExpr" identifier < (field_expression "pEVar14->nExpr" identifier -> field_identifier)) )) ;) })) })) (expression_statement "iCol = iVar17;" (assignment_expression "iCol = iVar17" identifier = identifier) ;) (if_statement "if ((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)) {\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }" if (parenthesized_expression "((pParse->eParseMode < 2) && (local_8c != (Expr *)0x0))" ( (binary_expression "(pParse->eParseMode < 2) && (local_8c != (Expr *)0x0)" (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) )) && (parenthesized_expression "(local_8c != (Expr *)0x0)" ( (binary_expression "local_8c != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                  sqlite3ExprDeleteNN(psVar5,local_8c);\n                }" { (expression_statement "sqlite3ExprDeleteNN(psVar5,local_8c);" (call_expression "sqlite3ExprDeleteNN(psVar5,local_8c)" identifier (argument_list "(psVar5,local_8c)" ( identifier , identifier ))) ;) })) }))) (if_statement "if (iCol < 1) {\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }" if (parenthesized_expression "(iCol < 1)" ( (binary_expression "iCol < 1" identifier < number_literal) )) (compound_statement "{\n                bVar15 = true;\n                iVar17 = pEVar10->nExpr;\n                goto LAB_00054b7d;\n              }" { (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" identifier = true) ;) (expression_statement "iVar17 = pEVar10->nExpr;" (assignment_expression "iVar17 = pEVar10->nExpr" identifier = (field_expression "pEVar10->nExpr" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00054b7d;" goto statement_identifier ;) })) }) (else_clause "else {\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }" else (compound_statement "{\n              psVar12 = pParse_00->db;\n              if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }\n            }" { (expression_statement "psVar12 = pParse_00->db;" (assignment_expression "psVar12 = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (if_statement "if ((iCol < 1) || ((int)psVar12 < iCol)) {\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }" if (parenthesized_expression "((iCol < 1) || ((int)psVar12 < iCol))" ( (binary_expression "(iCol < 1) || ((int)psVar12 < iCol)" (parenthesized_expression "(iCol < 1)" ( (binary_expression "iCol < 1" identifier < number_literal) )) || (parenthesized_expression "((int)psVar12 < iCol)" ( (binary_expression "(int)psVar12 < iCol" (cast_expression "(int)psVar12" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ))) )) (compound_statement "{\n                sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);\n                goto LAB_000548b8;\n              }" { (expression_statement "sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12);" (call_expression "sqlite3ErrorMsg(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12)" identifier (argument_list "(pParse,"%r %s BY term out of range - should be between 1 and %d",\n                                iVar24 + 1,"ORDER",psVar12)" ( identifier , (string_literal ""%r %s BY term out of range - should be between 1 and %d"" " string_content ") , (binary_expression "iVar24 + 1" identifier + number_literal) , (string_literal ""ORDER"" " string_content ") , identifier ))) ;) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;) })) }))) (if_statement "if (pParse->eParseMode < 2) {\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }" if (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n              w.pParse = (Parse *)0x0;\n              w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);\n              if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;\n              pEVar13 = pEVar22->pExpr;\n              pEVar19->flags = pEVar19->flags | 0x400;\n              (pEVar19->u).iValue = iCol;\n              if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }\n              if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }\n              (pEVar22->u).x.iOrderByCol = (u16)iCol;\n            }" { (expression_statement "w.pParse = (Parse *)0x0;" (assignment_expression "w.pParse = (Parse *)0x0" (field_expression "w.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0;" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)0x0" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0);" (assignment_expression "pEVar19 = sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0)" identifier = (call_expression "sqlite3ExprAlloc(psVar5,0x98,(Token *)&w,0)" identifier (argument_list "(psVar5,0x98,(Token *)&w,0)" ( identifier , number_literal , (cast_expression "(Token *)&w" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&w" & identifier)) , number_literal )))) ;) (if_statement "if (pEVar19 == (Expr *)0x0) goto LAB_000548b8;" if (parenthesized_expression "(pEVar19 == (Expr *)0x0)" ( (binary_expression "pEVar19 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pEVar13 = pEVar22->pExpr;" (assignment_expression "pEVar13 = pEVar22->pExpr" identifier = (field_expression "pEVar22->pExpr" identifier -> field_identifier)) ;) (expression_statement "pEVar19->flags = pEVar19->flags | 0x400;" (assignment_expression "pEVar19->flags = pEVar19->flags | 0x400" (field_expression "pEVar19->flags" identifier -> field_identifier) = (binary_expression "pEVar19->flags | 0x400" (field_expression "pEVar19->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "(pEVar19->u).iValue = iCol;" (assignment_expression "(pEVar19->u).iValue = iCol" (field_expression "(pEVar19->u).iValue" (parenthesized_expression "(pEVar19->u)" ( (field_expression "pEVar19->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (p_00 == pEVar13) {\n                pEVar22->pExpr = pEVar19;\n              }\n              else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }" if (parenthesized_expression "(p_00 == pEVar13)" ( (binary_expression "p_00 == pEVar13" identifier == identifier) )) (compound_statement "{\n                pEVar22->pExpr = pEVar19;\n              }" { (expression_statement "pEVar22->pExpr = pEVar19;" (assignment_expression "pEVar22->pExpr = pEVar19" (field_expression "pEVar22->pExpr" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }" else (compound_statement "{\n                do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');\n                pEVar23->pLeft = pEVar19;\n              }" { (do_statement "do {\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                } while (pEVar13->op == 'o');" do (compound_statement "{\n                  pEVar23 = pEVar13;\n                  pEVar13 = pEVar23->pLeft;\n                }" { (expression_statement "pEVar23 = pEVar13;" (assignment_expression "pEVar23 = pEVar13" identifier = identifier) ;) (expression_statement "pEVar13 = pEVar23->pLeft;" (assignment_expression "pEVar13 = pEVar23->pLeft" identifier = (field_expression "pEVar23->pLeft" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pEVar13->op == 'o')" ( (binary_expression "pEVar13->op == 'o'" (field_expression "pEVar13->op" identifier -> field_identifier) == (char_literal "'o'" ' character ')) )) ;) (expression_statement "pEVar23->pLeft = pEVar19;" (assignment_expression "pEVar23->pLeft = pEVar19" (field_expression "pEVar23->pLeft" identifier -> field_identifier) = identifier) ;) }))) (if_statement "if (p_00 != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }" if (parenthesized_expression "(p_00 != (Expr *)0x0)" ( (binary_expression "p_00 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                sqlite3ExprDeleteNN(psVar5,p_00);\n              }" { (expression_statement "sqlite3ExprDeleteNN(psVar5,p_00);" (call_expression "sqlite3ExprDeleteNN(psVar5,p_00)" identifier (argument_list "(psVar5,p_00)" ( identifier , identifier ))) ;) })) (expression_statement "(pEVar22->u).x.iOrderByCol = (u16)iCol;" (assignment_expression "(pEVar22->u).x.iOrderByCol = (u16)iCol" (field_expression "(pEVar22->u).x.iOrderByCol" (field_expression "(pEVar22->u).x" (parenthesized_expression "(pEVar22->u)" ( (field_expression "pEVar22->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(u16)iCol" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) })) (expression_statement "pEVar22->field_0x9 = pEVar22->field_0x9 | 4;" (assignment_expression "pEVar22->field_0x9 = pEVar22->field_0x9 | 4" (field_expression "pEVar22->field_0x9" identifier -> field_identifier) = (binary_expression "pEVar22->field_0x9 | 4" (field_expression "pEVar22->field_0x9" identifier -> field_identifier) | number_literal)) ;) (expression_statement "iVar17 = pEVar10->nExpr;" (assignment_expression "iVar17 = pEVar10->nExpr" identifier = (field_expression "pEVar10->nExpr" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_00054b7d:\n          iVar24 = iVar24 + 1;" statement_identifier : (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;)) (expression_statement "pEVar22 = pEVar22 + 1;" (assignment_expression "pEVar22 = pEVar22 + 1" identifier = (binary_expression "pEVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) )) ;) (expression_statement "local_a0 = local_a0->pNext;" (assignment_expression "local_a0 = local_a0->pNext" identifier = (field_expression "local_a0->pNext" identifier -> field_identifier)) ;) (if_statement "if ((local_a0 == (Select *)0x0) || (!bVar15)) break;" if (parenthesized_expression "((local_a0 == (Select *)0x0) || (!bVar15))" ( (binary_expression "(local_a0 == (Select *)0x0) || (!bVar15)" (parenthesized_expression "(local_a0 == (Select *)0x0)" ( (binary_expression "local_a0 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) ))) )) (break_statement "break;" break ;)) })) (if_statement "if (iVar17 < 1) goto LAB_000548e8;" if (parenthesized_expression "(iVar17 < 1)" ( (binary_expression "iVar17 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "bVar2 = pEVar10->a[0].field_0x9;" (assignment_expression "bVar2 = pEVar10->a[0].field_0x9" identifier = (field_expression "pEVar10->a[0].field_0x9" (subscript_expression "pEVar10->a[0]" (field_expression "pEVar10->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (while_statement "while ((bVar2 & 4) != 0) {\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }" while (parenthesized_expression "((bVar2 & 4) != 0)" ( (binary_expression "(bVar2 & 4) != 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (iVar17 == iVar24 + 1) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);\n        iVar24 = iVar24 + 1;\n      }" { (if_statement "if (iVar17 == iVar24 + 1) goto LAB_000548e8;" if (parenthesized_expression "(iVar17 == iVar24 + 1)" ( (binary_expression "iVar17 == iVar24 + 1" identifier == (binary_expression "iVar24 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1);" (assignment_expression "bVar2 = *(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1)" identifier = (pointer_expression "*(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1)" * (cast_expression "(byte *)((int)&pEVar10[1].a[iVar24].zEName + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar10[1].a[iVar24].zEName + 1)" ( (binary_expression "(int)&pEVar10[1].a[iVar24].zEName + 1" (cast_expression "(int)&pEVar10[1].a[iVar24].zEName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar10[1].a[iVar24].zEName" & (field_expression "pEVar10[1].a[iVar24].zEName" (subscript_expression "pEVar10[1].a[iVar24]" (field_expression "pEVar10[1].a" (subscript_expression "pEVar10[1]" identifier [ number_literal ]) . field_identifier) [ identifier ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar18 = "%r ORDER BY term does not match any column in the result set";" (assignment_expression "pcVar18 = "%r ORDER BY term does not match any column in the result set"" identifier = (string_literal ""%r ORDER BY term does not match any column in the result set"" " string_content ")) ;) }))) (labeled_statement "LAB_00054968:\n    sqlite3ErrorMsg(pParse,pcVar18);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,pcVar18);" (call_expression "sqlite3ErrorMsg(pParse,pcVar18)" identifier (argument_list "(pParse,pcVar18)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000548b8:\n    iVar17 = 2;" statement_identifier : (expression_statement "iVar17 = 2;" (assignment_expression "iVar17 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_000548ed;" goto statement_identifier ;) }))) (labeled_statement "LAB_000548e8:\n  iVar17 = 1;" statement_identifier : (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000548ed:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar4 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar4 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar17;" return identifier ;) })))
(translation_unit "undefined4 FUN_00054540(int *param_1,int param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    \n  FUN_000a9ea0();\n}\n\n" (function_definition "undefined4 FUN_00054540(int *param_1,int param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    \n  FUN_000a9ea0();\n}" type_identifier (function_declarator "FUN_00054540(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    \n  FUN_000a9ea0();\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "char *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int *local_5c [2];" primitive_type (pointer_declarator "*local_5c [2]" * (array_declarator "local_5c [2]" identifier [ number_literal ])) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "code *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "code *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x54549;" (assignment_expression "uStack_14 = 0x54549" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" if (parenthesized_expression "((uVar9 & 4) == 0)" ( (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" ( (binary_expression "uVar9 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" { (expression_statement "iVar17 = param_1[6];" (assignment_expression "iVar17 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" if (parenthesized_expression "((uVar9 & 0x40) != 0)" ( (binary_expression "(uVar9 & 0x40) != 0" (parenthesized_expression "(uVar9 & 0x40)" ( (binary_expression "uVar9 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = param_2;" (assignment_expression "iVar16 = param_2" identifier = identifier) ;) (do_statement "do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );" do (compound_statement "{\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      }" { (expression_statement "*(uint *)(iVar16 + 4) = uVar9 | 4;" (assignment_expression "*(uint *)(iVar16 + 4) = uVar9 | 4" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "uVar9 | 4" identifier | number_literal)) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);" do (compound_statement "{\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        }" { (expression_statement "*(undefined4 *)((int)local_5c + uVar9) = 0;" (assignment_expression "*(undefined4 *)((int)local_5c + uVar9) = 0" (pointer_expression "*(undefined4 *)((int)local_5c + uVar9)" * (cast_expression "(undefined4 *)((int)local_5c + uVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c + uVar9)" ( (binary_expression "(int)local_5c + uVar9" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar9 = uVar9 + 4;" (assignment_expression "uVar9 = uVar9 + 4" identifier = (binary_expression "uVar9 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 < 0x18)" ( (binary_expression "uVar9 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_44 = iVar16;" (assignment_expression "local_44 = iVar16" identifier = identifier) ;) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" if (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" ( (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" * (cast_expression "(byte *)(iVar16 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 6)" ( (binary_expression "iVar16 + 6" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" { (expression_statement "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);" (assignment_expression "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30)" (pointer_expression "*(undefined4 *)(piVar21[7] + 0x30)" * (cast_expression "(undefined4 *)(piVar21[7] + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[7] + 0x30)" ( (binary_expression "piVar21[7] + 0x30" (subscript_expression "piVar21[7]" identifier [ number_literal ]) + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" if (parenthesized_expression "(0 < *piVar21)" ( (binary_expression "0 < *piVar21" number_literal < (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);" do (compound_statement "{\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          }" { (while_statement "while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" while (parenthesized_expression "((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)))" ( (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))" ( (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" identifier [ (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) != number_literal) && (parenthesized_expression "((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4)" ( (binary_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4" (pointer_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" * (cast_expression "(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] + 4)" ( (binary_expression "piVar21[iVar10 * 0x11 + 7] + 4" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" identifier [ (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) )) (compound_statement "{\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar11 = param_1[0x3d];" (assignment_expression "iVar11 = param_1[0x3d]" identifier = (subscript_expression "param_1[0x3d]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" for ( (assignment_expression "iVar4 = iVar17" identifier = identifier) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = *(int *)(iVar4 + 0xc)" identifier = (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" { (expression_statement "iVar19 = iVar19 + *(int *)(iVar4 + 0x10);" (assignment_expression "iVar19 = iVar19 + *(int *)(iVar4 + 0x10)" identifier = (binary_expression "iVar19 + *(int *)(iVar4 + 0x10)" identifier + (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))))) ;) })) (if_statement "if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" if (parenthesized_expression "(piVar21[iVar10 * 0x11 + 4] != 0)" ( (binary_expression "piVar21[iVar10 * 0x11 + 4] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 4]" identifier [ (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" { (expression_statement "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];" (assignment_expression "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4]" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (subscript_expression "piVar21[iVar10 * 0x11 + 4]" identifier [ (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" identifier * number_literal) + number_literal) ])) ;) })) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_3c = FUN_00059220;" (assignment_expression "local_3c = FUN_00059220" identifier = identifier) ;) (expression_statement "local_38 = FUN_00054540;" (assignment_expression "local_38 = FUN_00054540" identifier = identifier) ;) (expression_statement "local_28 = iVar17;" (assignment_expression "local_28 = iVar17" identifier = identifier) ;) (expression_statement "FUN_00028900();" (call_expression "FUN_00028900()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x3d] = iVar11;" (assignment_expression "param_1[0x3d] = iVar11" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;" if (parenthesized_expression "((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" ( (comma_expression "iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'" (assignment_expression "iVar11 = iVar17" identifier = identifier) , (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" for ( ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = *(int *)(iVar11 + 0xc)" identifier = (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" { (expression_statement "iVar19 = iVar19 - *(int *)(iVar11 + 0x10);" (assignment_expression "iVar19 = iVar19 - *(int *)(iVar11 + 0x10)" identifier = (binary_expression "iVar19 - *(int *)(iVar11 + 0x10)" identifier - (pointer_expression "*(int *)(iVar11 + 0x10)" * (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))))) ;) })) (expression_statement "iVar11 = iVar10 * 0x44;" (assignment_expression "iVar11 = iVar10 * 0x44" identifier = (binary_expression "iVar10 * 0x44" identifier * number_literal)) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;" (assignment_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) & number_literal) | (binary_expression "(iVar19 != 0) << 3" (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) << number_literal))) ;) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (*piVar21 <= iVar10) goto LAB_00054743;" if (parenthesized_expression "(*piVar21 <= iVar10)" ( (binary_expression "*piVar21 <= iVar10" (pointer_expression "*piVar21" * identifier) <= identifier) )) (goto_statement "goto LAB_00054743;" goto statement_identifier ;)) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < *piVar21)" ( (binary_expression "iVar10 < *piVar21" identifier < (pointer_expression "*piVar21" * identifier)) )) ;) })) (labeled_statement "LAB_00054743:\n        local_48 = 0x4001;" statement_identifier : (expression_statement "local_48 = 0x4001;" (assignment_expression "local_48 = 0x4001" identifier = number_literal) ;)) (expression_statement "local_5c[0] = piVar21;" (assignment_expression "local_5c[0] = piVar21" (subscript_expression "local_5c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_54 = iVar17;" (assignment_expression "local_54 = iVar17" identifier = identifier) ;) (expression_statement "iVar10 = FUN_0003cad0();" (assignment_expression "iVar10 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar21 = *(int **)(iVar16 + 0x28);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x28)" identifier = (pointer_expression "*(int **)(iVar16 + 0x28)" * (cast_expression "(int **)(iVar16 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = local_48 & 0xffffbfff;" (assignment_expression "uVar9 = local_48 & 0xffffbfff" identifier = (binary_expression "local_48 & 0xffffbfff" identifier & number_literal)) ;) (if_statement "if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" if (parenthesized_expression "(piVar21 == (int *)0x0)" ( (binary_expression "piVar21 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }" { (if_statement "if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" if (parenthesized_expression "((local_48 & 0x10) == 0)" ( (binary_expression "(local_48 & 0x10) == 0" (parenthesized_expression "(local_48 & 0x10)" ( (binary_expression "local_48 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            uVar9 = local_48 & 0xffffbffe;\n          }" { (expression_statement "uVar9 = local_48 & 0xffffbffe;" (assignment_expression "uVar9 = local_48 & 0xffffbffe" identifier = (binary_expression "local_48 & 0xffffbffe" identifier & number_literal)) ;) }) (else_clause "else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" else (compound_statement "{\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" { (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) | (binary_expression "local_48 & 0x1000" identifier & number_literal)) | number_literal)) ;) }))) (if_statement "if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" if (parenthesized_expression "(*(int *)(iVar16 + 0x2c) != 0)" ( (binary_expression "*(int *)(iVar16 + 0x2c) != 0" (pointer_expression "*(int *)(iVar16 + 0x2c)" * (cast_expression "(int *)(iVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" { (expression_statement "pcVar13 = "a GROUP BY clause is required before HAVING";" (assignment_expression "pcVar13 = "a GROUP BY clause is required before HAVING"" identifier = (string_literal ""a GROUP BY clause is required before HAVING"" " string_content ")) ;) (expression_statement "local_48 = uVar9;" (assignment_expression "local_48 = uVar9" identifier = identifier) ;) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) }) (else_clause "else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" else (compound_statement "{\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" { (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) )))) | (binary_expression "local_48 & 0x1000" identifier & number_literal)) | number_literal)) ;) }))) (expression_statement "local_5c[1] = *(int **)(iVar16 + 0x1c);" (assignment_expression "local_5c[1] = *(int **)(iVar16 + 0x1c)" (subscript_expression "local_5c[1]" identifier [ number_literal ]) = (pointer_expression "*(int **)(iVar16 + 0x1c)" * (cast_expression "(int **)(iVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x1c)" ( (binary_expression "iVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = uVar9 | 0x80;" (assignment_expression "local_48 = uVar9 | 0x80" identifier = (binary_expression "uVar9 | 0x80" identifier | number_literal)) ;) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;" if (parenthesized_expression "((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0))" ( (binary_expression "(iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" if (parenthesized_expression "(0 < *piVar15)" ( (binary_expression "0 < *piVar15" number_literal < (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);" do (compound_statement "{\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          }" { (while_statement "while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" while (parenthesized_expression "((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4)" ( (binary_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" * (cast_expression "(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + iVar10 * 0x44 + 0x2d)" ( (binary_expression "(int)piVar15 + iVar10 * 0x44 + 0x2d" (binary_expression "(int)piVar15 + iVar10 * 0x44" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar10 * 0x44" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" { (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" identifier = (pointer_expression "*(int **)(iVar16 + 0x20)" * (cast_expression "(int **)(iVar16 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (*piVar15 <= iVar10) goto LAB_00054818;" if (parenthesized_expression "(*piVar15 <= iVar10)" ( (binary_expression "*piVar15 <= iVar10" (pointer_expression "*piVar15" * identifier) <= identifier) )) (goto_statement "goto LAB_00054818;" goto statement_identifier ;)) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 < *piVar15)" ( (binary_expression "iVar10 < *piVar15" identifier < (pointer_expression "*piVar15" * identifier)) )) ;) })) (labeled_statement "LAB_00054818:\n        local_48 = local_48 | 0x4001;" statement_identifier : (expression_statement "local_48 = local_48 | 0x4001;" (assignment_expression "local_48 = local_48 | 0x4001" identifier = (binary_expression "local_48 | 0x4001" identifier | number_literal)) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" if (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" ( (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" * (cast_expression "(byte *)(iVar16 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 6)" ( (binary_expression "iVar16 + 6" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" { (expression_statement "iVar10 = piVar15[7];" (assignment_expression "iVar10 = piVar15[7]" identifier = (subscript_expression "piVar15[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30)" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" * (cast_expression "(undefined4 *)(iVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            )" ( (binary_expression "((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" (parenthesized_expression "((int)(uint)(iVar20 != 0) <= local_7c)" ( (binary_expression "(int)(uint)(iVar20 != 0) <= local_7c" (cast_expression "(int)(uint)(iVar20 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(iVar20 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )))) <= identifier) )) && (parenthesized_expression "(iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_00053c40("ORDER"), iVar10 != 0" (assignment_expression "iVar10 = FUN_00053c40("ORDER")" identifier = (call_expression "FUN_00053c40("ORDER")" identifier (argument_list "("ORDER")" ( (string_literal ""ORDER"" " string_content ") )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "local_48 = local_48 & 0xffffbfff;" (assignment_expression "local_48 = local_48 & 0xffffbfff" identifier = (binary_expression "local_48 & 0xffffbfff" identifier & number_literal)) ;) (if_statement "if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" { (expression_statement "iVar10 = FUN_00053c40("GROUP");" (assignment_expression "iVar10 = FUN_00053c40("GROUP")" identifier = (call_expression "FUN_00053c40("GROUP")" identifier (argument_list "("GROUP")" ( (string_literal ""GROUP"" " string_content ") )))) ;) (if_statement "if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (if_statement "if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" if (parenthesized_expression "(0 < *piVar21)" ( (binary_expression "0 < *piVar21" number_literal < (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" { (if_statement "if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" if (parenthesized_expression "((*(byte *)(piVar21[1] + 4) & 0x10) != 0)" ( (binary_expression "(*(byte *)(piVar21[1] + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar21[1] + 4) & 0x10)" ( (binary_expression "*(byte *)(piVar21[1] + 4) & 0x10" (pointer_expression "*(byte *)(piVar21[1] + 4)" * (cast_expression "(byte *)(piVar21[1] + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar21[1] + 4)" ( (binary_expression "piVar21[1] + 4" (subscript_expression "piVar21[1]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" { (labeled_statement "LAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" statement_identifier : (expression_statement "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" (assignment_expression "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause"" identifier = (string_literal ""aggregate functions are not allowed in the GROUP BY clause"" " string_content ")) ;)) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 == *piVar21) break;" if (parenthesized_expression "(iVar10 == *piVar21)" ( (binary_expression "iVar10 == *piVar21" identifier == (pointer_expression "*piVar21" * identifier)) )) (break_statement "break;" break ;)) (if_statement "if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;" if (parenthesized_expression "((*(byte *)(*piVar15 + 4) & 0x10) != 0)" ( (binary_expression "(*(byte *)(*piVar15 + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*piVar15 + 4) & 0x10)" ( (binary_expression "*(byte *)(*piVar15 + 4) & 0x10" (pointer_expression "*(byte *)(*piVar15 + 4)" * (cast_expression "(byte *)(*piVar15 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar15 + 4)" ( (binary_expression "*piVar15 + 4" (pointer_expression "*piVar15" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000549de;" goto statement_identifier ;)) })) })) })) (if_statement "if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" if (parenthesized_expression "(1 < *(byte *)(param_1 + 0x33))" ( (binary_expression "1 < *(byte *)(param_1 + 0x33)" number_literal < (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) ))))) )) (compound_statement "{\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" { (for_statement "for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" for ( (assignment_expression "iVar10 = *(int *)(iVar16 + 0x48)" identifier = (pointer_expression "*(int *)(iVar16 + 0x48)" * (cast_expression "(int *)(iVar16 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x48)" ( (binary_expression "iVar16 + 0x48" identifier + number_literal) ))))) ; (binary_expression "iVar10 != 0" identifier != number_literal) ; (assignment_expression "iVar10 = *(int *)(iVar10 + 0x24)" identifier = (pointer_expression "*(int *)(iVar10 + 0x24)" * (cast_expression "(int *)(iVar10 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x24)" ( (binary_expression "iVar10 + 0x24" identifier + number_literal) ))))) ) (compound_statement "{\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" { (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;" if (parenthesized_expression "((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0))" ( (binary_expression "(iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar11 = FUN_0003cad0(), iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0003cad0(), iVar11 != 0" (assignment_expression "iVar11 = FUN_0003cad0()" identifier = (call_expression "FUN_0003cad0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) })) (expression_statement "iVar10 = *(int *)(iVar16 + 0x38);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x38)" identifier = (pointer_expression "*(int *)(iVar16 + 0x38)" * (cast_expression "(int *)(iVar16 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x38)" ( (binary_expression "iVar16 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" if (parenthesized_expression "((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)))" ( (binary_expression "(iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" ( (binary_expression "**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)" (pointer_expression "**(int **)(iVar16 + 0x1c)" * (pointer_expression "*(int **)(iVar16 + 0x1c)" * (cast_expression "(int **)(iVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + 0x1c)" ( (binary_expression "iVar16 + 0x1c" identifier + number_literal) ))))) != (pointer_expression "**(int **)(iVar10 + 0x1c)" * (pointer_expression "*(int **)(iVar10 + 0x1c)" * (cast_expression "(int **)(iVar10 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" { (if_statement "if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" if (parenthesized_expression "((*(byte *)(iVar10 + 5) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar10 + 5) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar10 + 5) & 2)" ( (binary_expression "*(byte *)(iVar10 + 5) & 2" (pointer_expression "*(byte *)(iVar10 + 5)" * (cast_expression "(byte *)(iVar10 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 5)" ( (binary_expression "iVar10 + 5" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }" { (expression_statement "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";" (assignment_expression "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns"" identifier = (string_literal ""SELECTs to the left and right of %s do not have the same number of result columns"" " string_content ")) ;) }) (else_clause "else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" else (compound_statement "{\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" { (expression_statement "pcVar13 = "all VALUES must have the same number of terms";" (assignment_expression "pcVar13 = "all VALUES must have the same number of terms"" identifier = (string_literal ""all VALUES must have the same number of terms"" " string_content ")) ;) }))) (goto_statement "goto LAB_00054968;" goto statement_identifier ;) })) (expression_statement "iVar16 = *(int *)(iVar16 + 0x34);" (assignment_expression "iVar16 = *(int *)(iVar16 + 0x34)" identifier = (pointer_expression "*(int *)(iVar16 + 0x34)" * (cast_expression "(int *)(iVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x34)" ( (binary_expression "iVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == 0) goto LAB_00054a40;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054a40;" goto statement_identifier ;)) (expression_statement "uVar9 = *(uint *)(iVar16 + 4);" (assignment_expression "uVar9 = *(uint *)(iVar16 + 4)" identifier = (pointer_expression "*(uint *)(iVar16 + 4)" * (cast_expression "(uint *)(iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 4)" ( (binary_expression "iVar16 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "FUN_0002a7d0();" (call_expression "FUN_0002a7d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" if (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" ( (binary_expression "(param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" * (cast_expression "(char *)(iVar14 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4d)" ( (binary_expression "iVar14 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;) (labeled_statement "LAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" statement_identifier : (if_statement "if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" if (parenthesized_expression "((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0))" ( (binary_expression "(iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" ( (comma_expression "piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0" (assignment_expression "piVar21 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) , (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" { (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) (expression_statement "iVar17 = *param_1;" (assignment_expression "iVar17 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" if (parenthesized_expression "(*(int *)(iVar17 + 0x70) < iVar14)" ( (binary_expression "*(int *)(iVar17 + 0x70) < iVar14" (pointer_expression "*(int *)(iVar17 + 0x70)" * (cast_expression "(int *)(iVar17 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x70)" ( (binary_expression "iVar17 + 0x70" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      pcVar13 = "too many terms in ORDER BY clause";\n    }" { (expression_statement "pcVar13 = "too many terms in ORDER BY clause";" (assignment_expression "pcVar13 = "too many terms in ORDER BY clause"" identifier = (string_literal ""too many terms in ORDER BY clause"" " string_content ")) ;) }) (else_clause "else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" else (compound_statement "{\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" { (do_statement "do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);" do (compound_statement "{\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        }" { (expression_statement "iVar16 = iVar20 + 1;" (assignment_expression "iVar16 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);" (assignment_expression "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" identifier = (cast_expression "(byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar20 * 0x10 + 0xd)" ( (binary_expression "(int)piVar21 + iVar20 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar20 * 0x10" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar20 * 0x10" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xfb;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfb" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xfb" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) (expression_statement "iVar20 = iVar16;" (assignment_expression "iVar20 = iVar16" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != iVar16)" ( (binary_expression "iVar14 != iVar16" identifier != identifier) )) ;) })) (expression_statement "*(undefined4 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" if (parenthesized_expression "(*(int *)(param_2 + 0x34) == 0)" ( (binary_expression "*(int *)(param_2 + 0x34) == 0" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_a0 = param_2;\n      }" { (expression_statement "local_a0 = param_2;" (assignment_expression "local_a0 = param_2" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" else (compound_statement "{\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" { (do_statement "do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);" do (compound_statement "{\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        }" { (expression_statement "local_a0 = iVar20;" (assignment_expression "local_a0 = iVar20" identifier = identifier) ;) (expression_statement "*(int *)(local_a0 + 0x38) = param_2;" (assignment_expression "*(int *)(local_a0 + 0x38) = param_2" (pointer_expression "*(int *)(local_a0 + 0x38)" * (cast_expression "(int *)(local_a0 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x38)" ( (binary_expression "local_a0 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar20 = *(int *)(local_a0 + 0x34);" (assignment_expression "iVar20 = *(int *)(local_a0 + 0x34)" identifier = (pointer_expression "*(int *)(local_a0 + 0x34)" * (cast_expression "(int *)(local_a0 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x34)" ( (binary_expression "local_a0 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_2 = local_a0;" (assignment_expression "param_2 = local_a0" identifier = identifier) ;) }) while (parenthesized_expression "(*(int *)(local_a0 + 0x34) != 0)" ( (binary_expression "*(int *)(local_a0 + 0x34) != 0" (pointer_expression "*(int *)(local_a0 + 0x34)" * (cast_expression "(int *)(local_a0 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x34)" ( (binary_expression "local_a0 + 0x34" identifier + number_literal) )))) != number_literal) )) ;) }))) (while_statement "while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" while (parenthesized_expression "(puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14)" ( (comma_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14" (assignment_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c)" identifier = (pointer_expression "*(undefined4 **)(local_a0 + 0x1c)" * (cast_expression "(undefined4 **)(local_a0 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x1c)" ( (binary_expression "local_a0 + 0x1c" identifier + number_literal) ))))) , (binary_expression "0 < iVar14" number_literal < identifier)) )) (compound_statement "{\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" { (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (do_statement "do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);" do (compound_statement "{\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        }" { (if_statement "if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" if (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)((int)piVar15 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 4)" ( (binary_expression "*(byte *)((int)piVar15 + 9) & 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" { (for_statement "for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" for ( (assignment_expression "pcVar13 = (char *)*piVar15" identifier = (cast_expression "(char *)*piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ; (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pcVar13 = *(char **)(pcVar13 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar13 + 0xc)" * (cast_expression "(char **)(pcVar13 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0xc)" ( (binary_expression "pcVar13 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" { (while_statement "while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" { (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;" if (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x41000) == 0)" ( (binary_expression "(*(uint *)(pcVar13 + 4) & 0x41000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x41000)" ( (binary_expression "*(uint *)(pcVar13 + 4) & 0x41000" (pointer_expression "*(uint *)(pcVar13 + 4)" * (cast_expression "(uint *)(pcVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 4)" ( (binary_expression "pcVar13 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;" if (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x40000) == 0)" ( (binary_expression "(*(uint *)(pcVar13 + 4) & 0x40000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x40000)" ( (binary_expression "*(uint *)(pcVar13 + 4) & 0x40000" (pointer_expression "*(uint *)(pcVar13 + 4)" * (cast_expression "(uint *)(pcVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 4)" ( (binary_expression "pcVar13 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);" (assignment_expression "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar13 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar13 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar13 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar13 + 0x14) + 4" (pointer_expression "*(int *)(pcVar13 + 0x14)" * (cast_expression "(int *)(pcVar13 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x14)" ( (binary_expression "pcVar13 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (char *)0x0) goto LAB_00054b33;" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00054b33;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00054b33:\n            iVar14 = FUN_00029640();" statement_identifier : (expression_statement "iVar14 = FUN_00029640();" (assignment_expression "iVar14 = FUN_00029640()" identifier = (call_expression "FUN_00029640()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" { (expression_statement "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);" (call_expression "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" identifier (argument_list "(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" ( identifier , (string_literal ""%r %s BY term out of range - should be between 1 and %d"" " string_content ") , (binary_expression "iVar20 + 1" identifier + number_literal) , (string_literal ""ORDER"" " string_content ") , (pointer_expression "*puVar5" * identifier) ))) ;) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;) })) (if_statement "if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" if (parenthesized_expression "(*pcVar13 == ';')" ( (binary_expression "*pcVar13 == ';'" (pointer_expression "*pcVar13" * identifier) == (char_literal "';'" ' character ')) )) (compound_statement "{\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }" { (expression_statement "local_64 = FUN_000291e0();" (assignment_expression "local_64 = FUN_000291e0()" identifier = (call_expression "FUN_000291e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_64 == 0) goto LAB_00054c09;" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054c09;" goto statement_identifier ;)) }) (else_clause "else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" else (compound_statement "{\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" { (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00054c09:\n              local_8c = pcVar13;" statement_identifier : (expression_statement "local_8c = pcVar13;" (assignment_expression "local_8c = pcVar13" identifier = identifier) ;)) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                local_8c = (char *)FUN_00052c60(0);\n              }" { (expression_statement "local_8c = (char *)FUN_00052c60(0);" (assignment_expression "local_8c = (char *)FUN_00052c60(0)" identifier = (cast_expression "(char *)FUN_00052c60(0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00052c60(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) })) (if_statement "if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" if (parenthesized_expression "(*(char *)(iVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar17 + 0x4d)" * (cast_expression "(char *)(iVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x4d)" ( (binary_expression "iVar17 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" { (expression_statement "pcVar7 = *(code **)(local_a0 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(local_a0 + 0x1c)" identifier = (pointer_expression "*(code **)(local_a0 + 0x1c)" * (cast_expression "(code **)(local_a0 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x1c)" ( (binary_expression "local_a0 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_3c = *(code **)(local_a0 + 0x20);" (assignment_expression "local_3c = *(code **)(local_a0 + 0x20)" identifier = (pointer_expression "*(code **)(local_a0 + 0x20)" * (cast_expression "(code **)(local_a0 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_a0 + 0x20)" ( (binary_expression "local_a0 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = 0x81;" (assignment_expression "local_28 = 0x81" identifier = number_literal) ;) (expression_statement "uVar3 = *(undefined1 *)(iVar14 + 0x51);" (assignment_expression "uVar3 = *(undefined1 *)(iVar14 + 0x51)" identifier = (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" { (expression_statement "*(undefined1 *)(iVar14 + 0x51) = 1;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = 1" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" identifier = identifier) ;) (expression_statement "local_38 = pcVar7;" (assignment_expression "local_38 = pcVar7" identifier = identifier) ;) (expression_statement "iVar16 = FUN_0003c9d0();" (assignment_expression "iVar16 = FUN_0003c9d0()" identifier = (call_expression "FUN_0003c9d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(iVar14 + 0x51) = uVar3;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = uVar3" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" * (cast_expression "(undefined1 *)(iVar14 + 0x51)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x51)" ( (binary_expression "iVar14 + 0x51" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" identifier = identifier) ;) (if_statement "if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" if (parenthesized_expression "((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7))" ( (binary_expression "(iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)" (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_90 = 0, 0 < *(int *)pcVar7)" ( (comma_expression "local_90 = 0, 0 < *(int *)pcVar7" (assignment_expression "local_90 = 0" identifier = number_literal) , (binary_expression "0 < *(int *)pcVar7" number_literal < (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ))) )) (compound_statement "{\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" { (do_statement "do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);" do (compound_statement "{\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  }" { (expression_statement "iVar16 = FUN_0004e140(0xffffffff);" (assignment_expression "iVar16 = FUN_0004e140(0xffffffff)" identifier = (call_expression "FUN_0004e140(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal )))) ;) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "local_64 = local_90;" (assignment_expression "local_64 = local_90" identifier = identifier) ;) (if_statement "if (iVar16 < 2) break;" if (parenthesized_expression "(iVar16 < 2)" ( (binary_expression "iVar16 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" identifier = identifier) ;) }) while (parenthesized_expression "(local_90 < *(int *)pcVar7)" ( (binary_expression "local_90 < *(int *)pcVar7" identifier < (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) ;) })) })) (if_statement "if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }" if (parenthesized_expression "((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0))" ( (binary_expression "(*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)" (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) && (parenthesized_expression "(local_8c != (char *)0x0)" ( (binary_expression "local_8c != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                FUN_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" if (parenthesized_expression "(local_64 < 1)" ( (binary_expression "local_64 < 1" identifier < number_literal) )) (compound_statement "{\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) }) (else_clause "else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" else (compound_statement "{\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" { (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" if (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" ( (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" * (cast_expression "(byte *)(param_1 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x33)" ( (binary_expression "param_1 + 0x33" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" { (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_3c = (code *)0x0;" (assignment_expression "local_3c = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar14 = FUN_0002ef20(0);" (assignment_expression "iVar14 = FUN_0002ef20(0)" identifier = (call_expression "FUN_0002ef20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_000548b8;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000548b8;" goto statement_identifier ;)) (expression_statement "pcVar6 = (char *)*piVar15;" (assignment_expression "pcVar6 = (char *)*piVar15" identifier = (cast_expression "(char *)*piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ;) (expression_statement "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(iVar14 + 8) = local_64;" (assignment_expression "*(int *)(iVar14 + 8) = local_64" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" if (parenthesized_expression "(pcVar13 == pcVar6)" ( (binary_expression "pcVar13 == pcVar6" identifier == identifier) )) (compound_statement "{\n                  *piVar15 = iVar14;\n                }" { (expression_statement "*piVar15 = iVar14;" (assignment_expression "*piVar15 = iVar14" (pointer_expression "*piVar15" * identifier) = identifier) ;) }) (else_clause "else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" else (compound_statement "{\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" { (do_statement "do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');" do (compound_statement "{\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  }" { (expression_statement "pcVar18 = pcVar6;" (assignment_expression "pcVar18 = pcVar6" identifier = identifier) ;) (expression_statement "pcVar6 = *(char **)(pcVar18 + 0xc);" (assignment_expression "pcVar6 = *(char **)(pcVar18 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar18 + 0xc)" * (cast_expression "(char **)(pcVar18 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0xc)" ( (binary_expression "pcVar18 + 0xc" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*pcVar6 == 'o')" ( (binary_expression "*pcVar6 == 'o'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'o'" ' character ')) )) ;) (expression_statement "*(int *)(pcVar18 + 0xc) = iVar14;" (assignment_expression "*(int *)(pcVar18 + 0xc) = iVar14" (pointer_expression "*(int *)(pcVar18 + 0xc)" * (cast_expression "(int *)(pcVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0xc)" ( (binary_expression "pcVar18 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }" if (parenthesized_expression "(pcVar13 != (char *)0x0)" ( (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  FUN_000432e0();\n                }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(short *)(piVar15 + 3) = (short)local_64;" (assignment_expression "*(short *)(piVar15 + 3) = (short)local_64" (pointer_expression "*(short *)(piVar15 + 3)" * (cast_expression "(short *)(piVar15 + 3)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 3)" ( (binary_expression "piVar15 + 3" identifier + number_literal) )))) = (cast_expression "(short)local_64" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;" (assignment_expression "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) }))) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 < iVar14)" ( (binary_expression "iVar20 < iVar14" identifier < identifier) )) ;) (expression_statement "local_a0 = *(int *)(local_a0 + 0x38);" (assignment_expression "local_a0 = *(int *)(local_a0 + 0x38)" identifier = (pointer_expression "*(int *)(local_a0 + 0x38)" * (cast_expression "(int *)(local_a0 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a0 + 0x38)" ( (binary_expression "local_a0 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if ((local_a0 == 0) || (!bVar8)) break;" if (parenthesized_expression "((local_a0 == 0) || (!bVar8))" ( (binary_expression "(local_a0 == 0) || (!bVar8)" (parenthesized_expression "(local_a0 == 0)" ( (binary_expression "local_a0 == 0" identifier == number_literal) )) || (parenthesized_expression "(!bVar8)" ( (unary_expression "!bVar8" ! identifier) ))) )) (break_statement "break;" break ;)) })) (if_statement "if (iVar14 < 1) goto LAB_000548e8;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = *(byte *)((int)piVar21 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + 0xd)" identifier = (pointer_expression "*(byte *)((int)piVar21 + 0xd)" * (cast_expression "(byte *)((int)piVar21 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + 0xd)" ( (binary_expression "(int)piVar21 + 0xd" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" while (parenthesized_expression "((bVar2 & 4) != 0)" ( (binary_expression "(bVar2 & 4) != 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (if_statement "if (iVar14 == iVar17) goto LAB_000548e8;" if (parenthesized_expression "(iVar14 == iVar17)" ( (binary_expression "iVar14 == iVar17" identifier == identifier) )) (goto_statement "goto LAB_000548e8;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" identifier = (pointer_expression "*(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" * (cast_expression "(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + iVar17 * 0x10 + 0xd)" ( (binary_expression "(int)piVar21 + iVar17 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar17 * 0x10" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar17 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) })) (expression_statement "pcVar13 = "%r ORDER BY term does not match any column in the result set";" (assignment_expression "pcVar13 = "%r ORDER BY term does not match any column in the result set"" identifier = (string_literal ""%r ORDER BY term does not match any column in the result set"" " string_content ")) ;) }))) (labeled_statement "LAB_00054968:\n    FUN_0003c160(param_1,pcVar13);" statement_identifier : (expression_statement "FUN_0003c160(param_1,pcVar13);" (call_expression "FUN_0003c160(param_1,pcVar13)" identifier (argument_list "(param_1,pcVar13)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000548b8:\n    uVar12 = 2;" statement_identifier : (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_000548ed;" goto statement_identifier ;) }))) (labeled_statement "LAB_000548e8:\n  uVar12 = 1;" statement_identifier : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar12;\n  }" { (return_statement "return uVar12;" return identifier ;) }))) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) + LIT) )))) & LIT) )) == LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_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 [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence '))) ))) )) (goto_statement goto statement_identifier ;)) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) << LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (binary_expression IDENT & LIT)) | 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 (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (binary_expression IDENT & LIT)) | LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_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 (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (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 (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (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) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) ;) }))) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (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) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression IDENT + LIT) , (string_literal " string_content ") , (pointer_expression * IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = LIT) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (break_statement break ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression 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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_00054540(int *param_1,int param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    \n  FUN_000a9ea0();\n}" (type_identifier "undefined4") (function_declarator "FUN_00054540(int *param_1,int param_2)" (identifier "FUN_00054540") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  undefined1 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  char *pcVar6;\n  code *pcVar7;\n  bool bVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  char *pcVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  int iVar17;\n  char *pcVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int in_GS_OFFSET;\n  int local_a0;\n  int local_90;\n  char *local_8c;\n  int local_7c;\n  int local_64;\n  int *local_5c [2];\n  int local_54;\n  uint local_48;\n  int local_44;\n  int *local_40;\n  code *local_3c;\n  code *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x54549;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar9 = *(uint *)(param_2 + 4);\n  if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }\n  goto LAB_000548e8;\nLAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }\nLAB_000548e8:\n  uVar12 = 1;\nLAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }\n                    \n  FUN_000a9ea0();\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "undefined1 uVar3;" (type_identifier "undefined1") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (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 "char *pcVar13;" (primitive_type "char") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "char *pcVar18;" (primitive_type "char") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int *piVar21;" (primitive_type "int") (pointer_declarator "*piVar21" (* "*") (identifier "piVar21")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "char *local_8c;" (primitive_type "char") (pointer_declarator "*local_8c" (* "*") (identifier "local_8c")) (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int *local_5c [2];" (primitive_type "int") (pointer_declarator "*local_5c [2]" (* "*") (array_declarator "local_5c [2]" (identifier "local_5c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int *local_40;" (primitive_type "int") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "code *local_3c;" (type_identifier "code") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "code *local_38;" (type_identifier "code") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x54549;" (assignment_expression "uStack_14 = 0x54549" (identifier "uStack_14") (= "=") (number_literal "0x54549")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar9 & 4) == 0) {\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" (if "if") (parenthesized_expression "((uVar9 & 4) == 0)" (( "(") (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" (( "(") (binary_expression "uVar9 & 4" (identifier "uVar9") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar17 = param_1[6];\n    param_1 = (int *)*param_1;\n    iVar14 = *param_1;\n    if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }\n    FUN_0002a7d0();\n    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n  }" ({ "{") (expression_statement "iVar17 = param_1[6];" (assignment_expression "iVar17 = param_1[6]" (identifier "iVar17") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" (identifier "param_1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((uVar9 & 0x40) != 0) {\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" (if "if") (parenthesized_expression "((uVar9 & 0x40) != 0)" (( "(") (binary_expression "(uVar9 & 0x40) != 0" (parenthesized_expression "(uVar9 & 0x40)" (( "(") (binary_expression "uVar9 & 0x40" (identifier "uVar9") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_7c = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      iVar16 = param_2;\n      do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );\n    }" ({ "{") (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar16 = param_2;" (assignment_expression "iVar16 = param_2" (identifier "iVar16") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      } while( true );" (do "do") (compound_statement "{\n        *(uint *)(iVar16 + 4) = uVar9 | 4;\n        uVar9 = 0;\n        do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);\n        local_44 = iVar16;\n        iVar10 = FUN_0003c9d0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x20);\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }\n        if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }\nLAB_00054743:\n        local_48 = 0x4001;\n        local_5c[0] = piVar21;\n        local_54 = iVar17;\n        iVar10 = FUN_0003cad0();\n        if (iVar10 != 0) goto LAB_000548b8;\n        piVar21 = *(int **)(iVar16 + 0x28);\n        uVar9 = local_48 & 0xffffbfff;\n        if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }\n        local_5c[1] = *(int **)(iVar16 + 0x1c);\n        local_48 = uVar9 | 0x80;\n        iVar10 = FUN_0003c9d0();\n        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;\n        piVar15 = *(int **)(iVar16 + 0x20);\n        if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }\nLAB_00054818:\n        local_48 = local_48 | 0x4001;\n        local_54 = 0;\n        if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }\n        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n        local_48 = local_48 & 0xffffbfff;\n        if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }\n        if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }\n        iVar10 = *(int *)(iVar16 + 0x38);\n        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }\n        iVar16 = *(int *)(iVar16 + 0x34);\n        local_7c = local_7c + 1;\n        if (iVar16 == 0) goto LAB_00054a40;\n        uVar9 = *(uint *)(iVar16 + 4);\n      }" ({ "{") (expression_statement "*(uint *)(iVar16 + 4) = uVar9 | 4;" (assignment_expression "*(uint *)(iVar16 + 4) = uVar9 | 4" (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "uVar9 | 4" (identifier "uVar9") (| "|") (number_literal "4"))) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        } while (uVar9 < 0x18);" (do "do") (compound_statement "{\n          *(undefined4 *)((int)local_5c + uVar9) = 0;\n          uVar9 = uVar9 + 4;\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)local_5c + uVar9) = 0;" (assignment_expression "*(undefined4 *)((int)local_5c + uVar9) = 0" (pointer_expression "*(undefined4 *)((int)local_5c + uVar9)" (* "*") (cast_expression "(undefined4 *)((int)local_5c + uVar9)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_5c + uVar9)" (( "(") (binary_expression "(int)local_5c + uVar9" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (+ "+") (identifier "uVar9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = uVar9 + 4;" (assignment_expression "uVar9 = uVar9 + 4" (identifier "uVar9") (= "=") (binary_expression "uVar9 + 4" (identifier "uVar9") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar9 < 0x18)" (( "(") (binary_expression "uVar9 < 0x18" (identifier "uVar9") (< "<") (number_literal "0x18")) () ")")) (; ";")) (expression_statement "local_44 = iVar16;" (assignment_expression "local_44 = iVar16" (identifier "local_44") (= "=") (identifier "iVar16")) (; ";")) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" (identifier "piVar21") (= "=") (pointer_expression "*(int **)(iVar16 + 0x20)" (* "*") (cast_expression "(int **)(iVar16 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" (if "if") (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" (( "(") (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" (* "*") (cast_expression "(byte *)(iVar16 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 6)" (( "(") (binary_expression "iVar16 + 6" (identifier "iVar16") (+ "+") (number_literal "6")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);\n          *(undefined4 *)(iVar16 + 0x30) = 0;\n        }" ({ "{") (expression_statement "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);" (assignment_expression "*(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30)" (pointer_expression "*(undefined4 *)(piVar21[7] + 0x30)" (* "*") (cast_expression "(undefined4 *)(piVar21[7] + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar21[7] + 0x30)" (( "(") (binary_expression "piVar21[7] + 0x30" (subscript_expression "piVar21[7]" (identifier "piVar21") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x30)" (( "(") (binary_expression "iVar16 + 0x30" (identifier "iVar16") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x30)" (( "(") (binary_expression "iVar16 + 0x30" (identifier "iVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (0 < *piVar21) {\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" (if "if") (parenthesized_expression "(0 < *piVar21)" (( "(") (binary_expression "0 < *piVar21" (number_literal "0") (< "<") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) () ")")) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);\n        }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar21);" (do "do") (compound_statement "{\n            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }\n            iVar10 = iVar10 + 1;\n          }" ({ "{") (while_statement "while ((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" (while "while") (parenthesized_expression "((piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)))" (( "(") (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))" (( "(") (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0 &&\n                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" (binary_expression "piVar21[iVar10 * 0x11 + 7] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" (identifier "piVar21") ([ "[") (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" (identifier "iVar10") (* "*") (number_literal "0x11")) (+ "+") (number_literal "7")) (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4)" (( "(") (binary_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4" (pointer_expression "*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" (* "*") (cast_expression "(byte *)(piVar21[iVar10 * 0x11 + 7] + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar21[iVar10 * 0x11 + 7] + 4)" (( "(") (binary_expression "piVar21[iVar10 * 0x11 + 7] + 4" (subscript_expression "piVar21[iVar10 * 0x11 + 7]" (identifier "piVar21") ([ "[") (binary_expression "iVar10 * 0x11 + 7" (binary_expression "iVar10 * 0x11" (identifier "iVar10") (* "*") (number_literal "0x11")) (+ "+") (number_literal "7")) (] "]")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")")) (compound_statement "{\n              iVar19 = 0;\n              iVar11 = param_1[0x3d];\n              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }\n              if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }\n              local_34 = 0;\n              local_40 = param_1;\n              local_3c = FUN_00059220;\n              local_38 = FUN_00054540;\n              local_28 = iVar17;\n              FUN_00028900();\n              param_1[0x3d] = iVar11;\n              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;\n              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }\n              iVar11 = iVar10 * 0x44;\n              iVar10 = iVar10 + 1;\n              *(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;\n              piVar21 = *(int **)(iVar16 + 0x20);\n              if (*piVar21 <= iVar10) goto LAB_00054743;\n            }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar11 = param_1[0x3d];" (assignment_expression "iVar11 = param_1[0x3d]" (identifier "iVar11") (= "=") (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]"))) (; ";")) (for_statement "for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" (for "for") (( "(") (assignment_expression "iVar4 = iVar17" (identifier "iVar4") (= "=") (identifier "iVar17")) (; ";") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar4 = *(int *)(iVar4 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")"))))) () ")") (compound_statement "{\n                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);\n              }" ({ "{") (expression_statement "iVar19 = iVar19 + *(int *)(iVar4 + 0x10);" (assignment_expression "iVar19 = iVar19 + *(int *)(iVar4 + 0x10)" (identifier "iVar19") (= "=") (binary_expression "iVar19 + *(int *)(iVar4 + 0x10)" (identifier "iVar19") (+ "+") (pointer_expression "*(int *)(iVar4 + 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (} "}"))) (if_statement "if (piVar21[iVar10 * 0x11 + 4] != 0) {\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" (if "if") (parenthesized_expression "(piVar21[iVar10 * 0x11 + 4] != 0)" (( "(") (binary_expression "piVar21[iVar10 * 0x11 + 4] != 0" (subscript_expression "piVar21[iVar10 * 0x11 + 4]" (identifier "piVar21") ([ "[") (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" (identifier "iVar10") (* "*") (number_literal "0x11")) (+ "+") (number_literal "4")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];\n              }" ({ "{") (expression_statement "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];" (assignment_expression "param_1[0x3d] = piVar21[iVar10 * 0x11 + 4]" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (subscript_expression "piVar21[iVar10 * 0x11 + 4]" (identifier "piVar21") ([ "[") (binary_expression "iVar10 * 0x11 + 4" (binary_expression "iVar10 * 0x11" (identifier "iVar10") (* "*") (number_literal "0x11")) (+ "+") (number_literal "4")) (] "]"))) (; ";")) (} "}"))) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" (identifier "local_40") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_3c = FUN_00059220;" (assignment_expression "local_3c = FUN_00059220" (identifier "local_3c") (= "=") (identifier "FUN_00059220")) (; ";")) (expression_statement "local_38 = FUN_00054540;" (assignment_expression "local_38 = FUN_00054540" (identifier "local_38") (= "=") (identifier "FUN_00054540")) (; ";")) (expression_statement "local_28 = iVar17;" (assignment_expression "local_28 = iVar17" (identifier "local_28") (= "=") (identifier "iVar17")) (; ";")) (expression_statement "FUN_00028900();" (call_expression "FUN_00028900()" (identifier "FUN_00028900") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[0x3d] = iVar11;" (assignment_expression "param_1[0x3d] = iVar11" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (if_statement "if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))\n              goto LAB_000548b8;" (if "if") (parenthesized_expression "((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))" (( "(") (binary_expression "(param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0')" (( "(") (comma_expression "iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'" (assignment_expression "iVar11 = iVar17" (identifier "iVar11") (= "=") (identifier "iVar17")) (, ",") (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" (* "*") (cast_expression "(char *)(iVar14 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x4d)" (( "(") (binary_expression "iVar14 + 0x4d" (identifier "iVar14") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" (for "for") (( "(") (; ";") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar11 = *(int *)(iVar11 + 0xc)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 0xc)" (* "*") (cast_expression "(int *)(iVar11 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xc)" (( "(") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) () ")"))))) () ")") (compound_statement "{\n                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);\n              }" ({ "{") (expression_statement "iVar19 = iVar19 - *(int *)(iVar11 + 0x10);" (assignment_expression "iVar19 = iVar19 - *(int *)(iVar11 + 0x10)" (identifier "iVar19") (= "=") (binary_expression "iVar19 - *(int *)(iVar11 + 0x10)" (identifier "iVar19") (- "-") (pointer_expression "*(int *)(iVar11 + 0x10)" (* "*") (cast_expression "(int *)(iVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x10)" (( "(") (binary_expression "iVar11 + 0x10" (identifier "iVar11") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (} "}"))) (expression_statement "iVar11 = iVar10 * 0x44;" (assignment_expression "iVar11 = iVar10 * 0x44" (identifier "iVar11") (= "=") (binary_expression "iVar10 * 0x44" (identifier "iVar10") (* "*") (number_literal "0x44"))) (; ";")) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;" (assignment_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) =\n                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" (( "(") (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (+ "+") (identifier "iVar11")) (+ "+") (number_literal "0x2d")) () ")")))) (= "=") (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3" (binary_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7" (pointer_expression "*(byte *)((int)piVar21 + iVar11 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar21 + iVar11 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 + iVar11 + 0x2d)" (( "(") (binary_expression "(int)piVar21 + iVar11 + 0x2d" (binary_expression "(int)piVar21 + iVar11" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (+ "+") (identifier "iVar11")) (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "0xf7")) (| "|") (binary_expression "(iVar19 != 0) << 3" (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (<< "<<") (number_literal "3")))) (; ";")) (expression_statement "piVar21 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x20)" (identifier "piVar21") (= "=") (pointer_expression "*(int **)(iVar16 + 0x20)" (* "*") (cast_expression "(int **)(iVar16 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (*piVar21 <= iVar10) goto LAB_00054743;" (if "if") (parenthesized_expression "(*piVar21 <= iVar10)" (( "(") (binary_expression "*piVar21 <= iVar10" (pointer_expression "*piVar21" (* "*") (identifier "piVar21")) (<= "<=") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_00054743;" (goto "goto") (statement_identifier "LAB_00054743") (; ";"))) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 < *piVar21)" (( "(") (binary_expression "iVar10 < *piVar21" (identifier "iVar10") (< "<") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00054743:\n        local_48 = 0x4001;" (statement_identifier "LAB_00054743") (: ":") (expression_statement "local_48 = 0x4001;" (assignment_expression "local_48 = 0x4001" (identifier "local_48") (= "=") (number_literal "0x4001")) (; ";"))) (expression_statement "local_5c[0] = piVar21;" (assignment_expression "local_5c[0] = piVar21" (subscript_expression "local_5c[0]" (identifier "local_5c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "piVar21")) (; ";")) (expression_statement "local_54 = iVar17;" (assignment_expression "local_54 = iVar17" (identifier "local_54") (= "=") (identifier "iVar17")) (; ";")) (expression_statement "iVar10 = FUN_0003cad0();" (assignment_expression "iVar10 = FUN_0003cad0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003cad0()" (identifier "FUN_0003cad0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_000548b8;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "piVar21 = *(int **)(iVar16 + 0x28);" (assignment_expression "piVar21 = *(int **)(iVar16 + 0x28)" (identifier "piVar21") (= "=") (pointer_expression "*(int **)(iVar16 + 0x28)" (* "*") (cast_expression "(int **)(iVar16 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x28)" (( "(") (binary_expression "iVar16 + 0x28" (identifier "iVar16") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar9 = local_48 & 0xffffbfff;" (assignment_expression "uVar9 = local_48 & 0xffffbfff" (identifier "uVar9") (= "=") (binary_expression "local_48 & 0xffffbfff" (identifier "local_48") (& "&") (number_literal "0xffffbfff"))) (; ";")) (if_statement "if (piVar21 == (int *)0x0) {\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }\n        else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" (if "if") (parenthesized_expression "(piVar21 == (int *)0x0)" (( "(") (binary_expression "piVar21 == (int *)0x0" (identifier "piVar21") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }\n          if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }\n        }" ({ "{") (if_statement "if ((local_48 & 0x10) == 0) {\n            uVar9 = local_48 & 0xffffbffe;\n          }\n          else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" (if "if") (parenthesized_expression "((local_48 & 0x10) == 0)" (( "(") (binary_expression "(local_48 & 0x10) == 0" (parenthesized_expression "(local_48 & 0x10)" (( "(") (binary_expression "local_48 & 0x10" (identifier "local_48") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar9 = local_48 & 0xffffbffe;\n          }" ({ "{") (expression_statement "uVar9 = local_48 & 0xffffbffe;" (assignment_expression "uVar9 = local_48 & 0xffffbffe" (identifier "uVar9") (= "=") (binary_expression "local_48 & 0xffffbffe" (identifier "local_48") (& "&") (number_literal "0xffffbffe"))) (; ";")) (} "}")) (else_clause "else {\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" (else "else") (compound_statement "{\n            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n          }" ({ "{") (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")")))) (| "|") (binary_expression "local_48 & 0x1000" (identifier "local_48") (& "&") (number_literal "0x1000"))) (| "|") (number_literal "8"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(iVar16 + 0x2c) != 0) {\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar16 + 0x2c) != 0)" (( "(") (binary_expression "*(int *)(iVar16 + 0x2c) != 0" (pointer_expression "*(int *)(iVar16 + 0x2c)" (* "*") (cast_expression "(int *)(iVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x2c)" (( "(") (binary_expression "iVar16 + 0x2c" (identifier "iVar16") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar13 = "a GROUP BY clause is required before HAVING";\n            local_48 = uVar9;\n            goto LAB_00054968;\n          }" ({ "{") (expression_statement "pcVar13 = "a GROUP BY clause is required before HAVING";" (assignment_expression "pcVar13 = "a GROUP BY clause is required before HAVING"" (identifier "pcVar13") (= "=") (string_literal ""a GROUP BY clause is required before HAVING"" (" """) (string_content "a GROUP BY clause is required before HAVING") (" """))) (; ";")) (expression_statement "local_48 = uVar9;" (assignment_expression "local_48 = uVar9" (identifier "local_48") (= "=") (identifier "uVar9")) (; ";")) (goto_statement "goto LAB_00054968;" (goto "goto") (statement_identifier "LAB_00054968") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" (else "else") (compound_statement "{\n          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;\n        }" ({ "{") (expression_statement "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;" (assignment_expression "*(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8" (binary_expression "*(uint *)(iVar16 + 4) | local_48 & 0x1000" (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")")))) (| "|") (binary_expression "local_48 & 0x1000" (identifier "local_48") (& "&") (number_literal "0x1000"))) (| "|") (number_literal "8"))) (; ";")) (} "}")))) (expression_statement "local_5c[1] = *(int **)(iVar16 + 0x1c);" (assignment_expression "local_5c[1] = *(int **)(iVar16 + 0x1c)" (subscript_expression "local_5c[1]" (identifier "local_5c") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(int **)(iVar16 + 0x1c)" (* "*") (cast_expression "(int **)(iVar16 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x1c)" (( "(") (binary_expression "iVar16 + 0x1c" (identifier "iVar16") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_48 = uVar9 | 0x80;" (assignment_expression "local_48 = uVar9 | 0x80" (identifier "local_48") (= "=") (binary_expression "uVar9 | 0x80" (identifier "uVar9") (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "iVar10 = FUN_0003c9d0();" (assignment_expression "iVar10 = FUN_0003c9d0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;" (if "if") (parenthesized_expression "((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0))" (( "(") (binary_expression "(iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar10 = FUN_0003c9d0(), iVar10 != 0)" (( "(") (comma_expression "iVar10 = FUN_0003c9d0(), iVar10 != 0" (assignment_expression "iVar10 = FUN_0003c9d0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(iVar16 + 0x20)" (* "*") (cast_expression "(int **)(iVar16 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (0 < *piVar15) {\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" (if "if") (parenthesized_expression "(0 < *piVar15)" (( "(") (binary_expression "0 < *piVar15" (number_literal "0") (< "<") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (compound_statement "{\n          iVar10 = 0;\n          do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);\n        }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          } while (iVar10 < *piVar15);" (do "do") (compound_statement "{\n            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }\n            iVar10 = iVar10 + 1;\n          }" ({ "{") (while_statement "while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" (while "while") (parenthesized_expression "((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4)" (( "(") (binary_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + iVar10 * 0x44 + 0x2d)" (( "(") (binary_expression "(int)piVar15 + iVar10 * 0x44 + 0x2d" (binary_expression "(int)piVar15 + iVar10 * 0x44" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (binary_expression "iVar10 * 0x44" (identifier "iVar10") (* "*") (number_literal "0x44"))) (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar11 = FUN_0003cad0();\n              if (iVar11 != 0) goto LAB_000548b8;\n              piVar15 = *(int **)(iVar16 + 0x20);\n              iVar10 = iVar10 + 1;\n              if (*piVar15 <= iVar10) goto LAB_00054818;\n            }" ({ "{") (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" (identifier "iVar11") (= "=") (call_expression "FUN_0003cad0()" (identifier "FUN_0003cad0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) goto LAB_000548b8;" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "piVar15 = *(int **)(iVar16 + 0x20);" (assignment_expression "piVar15 = *(int **)(iVar16 + 0x20)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(iVar16 + 0x20)" (* "*") (cast_expression "(int **)(iVar16 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*piVar15 <= iVar10) goto LAB_00054818;" (if "if") (parenthesized_expression "(*piVar15 <= iVar10)" (( "(") (binary_expression "*piVar15 <= iVar10" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (<= "<=") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_00054818;" (goto "goto") (statement_identifier "LAB_00054818") (; ";"))) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 < *piVar15)" (( "(") (binary_expression "iVar10 < *piVar15" (identifier "iVar10") (< "<") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00054818:\n        local_48 = local_48 | 0x4001;" (statement_identifier "LAB_00054818") (: ":") (expression_statement "local_48 = local_48 | 0x4001;" (assignment_expression "local_48 = local_48 | 0x4001" (identifier "local_48") (= "=") (binary_expression "local_48 | 0x4001" (identifier "local_48") (| "|") (number_literal "0x4001"))) (; ";"))) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(byte *)(iVar16 + 6) & 1) != 0) {\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" (if "if") (parenthesized_expression "((*(byte *)(iVar16 + 6) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar16 + 6) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar16 + 6) & 1)" (( "(") (binary_expression "*(byte *)(iVar16 + 6) & 1" (pointer_expression "*(byte *)(iVar16 + 6)" (* "*") (cast_expression "(byte *)(iVar16 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 6)" (( "(") (binary_expression "iVar16 + 6" (identifier "iVar16") (+ "+") (number_literal "6")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = piVar15[7];\n          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);\n          *(undefined4 *)(iVar10 + 0x30) = 0;\n        }" ({ "{") (expression_statement "iVar10 = piVar15[7];" (assignment_expression "iVar10 = piVar15[7]" (identifier "iVar10") (= "=") (subscript_expression "piVar15[7]" (identifier "piVar15") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "*(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30)" (pointer_expression "*(undefined4 *)(iVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x30)" (( "(") (binary_expression "iVar16 + 0x30" (identifier "iVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" (if "if") (parenthesized_expression "((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0'))" (( "(") (binary_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            ) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)\n            )" (( "(") (binary_expression "((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" (parenthesized_expression "((int)(uint)(iVar20 != 0) <= local_7c)" (( "(") (binary_expression "(int)(uint)(iVar20 != 0) <= local_7c" (cast_expression "(int)(uint)(iVar20 != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(iVar20 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (identifier "local_7c")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)" (( "(") (comma_expression "iVar10 = FUN_00053c40("ORDER"), iVar10 != 0" (assignment_expression "iVar10 = FUN_00053c40("ORDER")" (identifier "iVar10") (= "=") (call_expression "FUN_00053c40("ORDER")" (identifier "FUN_00053c40") (argument_list "("ORDER")" (( "(") (string_literal ""ORDER"" (" """) (string_content "ORDER") (" """)) () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" (* "*") (cast_expression "(char *)(iVar14 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x4d)" (( "(") (binary_expression "iVar14 + 0x4d" (identifier "iVar14") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "local_48 = local_48 & 0xffffbfff;" (assignment_expression "local_48 = local_48 & 0xffffbfff" (identifier "local_48") (= "=") (binary_expression "local_48 & 0xffffbfff" (identifier "local_48") (& "&") (number_literal "0xffffbfff"))) (; ";")) (if_statement "if (piVar21 != (int *)0x0) {\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar10 = FUN_00053c40("GROUP");\n          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;\n          piVar15 = piVar21 + 1;\n          if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }\n        }" ({ "{") (expression_statement "iVar10 = FUN_00053c40("GROUP");" (assignment_expression "iVar10 = FUN_00053c40("GROUP")" (identifier "iVar10") (= "=") (call_expression "FUN_00053c40("GROUP")" (identifier "FUN_00053c40") (argument_list "("GROUP")" (( "(") (string_literal ""GROUP"" (" """) (string_content "GROUP") (" """)) () ")")))) (; ";")) (if_statement "if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" (if "if") (parenthesized_expression "((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" (( "(") (binary_expression "(iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" (* "*") (cast_expression "(char *)(iVar14 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x4d)" (( "(") (binary_expression "iVar14 + 0x4d" (identifier "iVar14") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" (identifier "piVar15") (= "=") (binary_expression "piVar21 + 1" (identifier "piVar21") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0 < *piVar21) {\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" (if "if") (parenthesized_expression "(0 < *piVar21)" (( "(") (binary_expression "0 < *piVar21" (number_literal "0") (< "<") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) () ")")) (compound_statement "{\n            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }\n            iVar10 = 0;\n            while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }\n          }" ({ "{") (if_statement "if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" (if "if") (parenthesized_expression "((*(byte *)(piVar21[1] + 4) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(piVar21[1] + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar21[1] + 4) & 0x10)" (( "(") (binary_expression "*(byte *)(piVar21[1] + 4) & 0x10" (pointer_expression "*(byte *)(piVar21[1] + 4)" (* "*") (cast_expression "(byte *)(piVar21[1] + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar21[1] + 4)" (( "(") (binary_expression "piVar21[1] + 4" (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";\n              goto LAB_00054968;\n            }" ({ "{") (labeled_statement "LAB_000549de:\n              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" (statement_identifier "LAB_000549de") (: ":") (expression_statement "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";" (assignment_expression "pcVar13 = "aggregate functions are not allowed in the GROUP BY clause"" (identifier "pcVar13") (= "=") (string_literal ""aggregate functions are not allowed in the GROUP BY clause"" (" """) (string_content "aggregate functions are not allowed in the GROUP BY clause") (" """))) (; ";"))) (goto_statement "goto LAB_00054968;" (goto "goto") (statement_identifier "LAB_00054968") (; ";")) (} "}"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              iVar10 = iVar10 + 1;\n              piVar15 = piVar15 + 4;\n              if (iVar10 == *piVar21) break;\n              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;\n            }" ({ "{") (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 4" (identifier "piVar15") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (iVar10 == *piVar21) break;" (if "if") (parenthesized_expression "(iVar10 == *piVar21)" (( "(") (binary_expression "iVar10 == *piVar21" (identifier "iVar10") (== "==") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;" (if "if") (parenthesized_expression "((*(byte *)(*piVar15 + 4) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(*piVar15 + 4) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*piVar15 + 4) & 0x10)" (( "(") (binary_expression "*(byte *)(*piVar15 + 4) & 0x10" (pointer_expression "*(byte *)(*piVar15 + 4)" (* "*") (cast_expression "(byte *)(*piVar15 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar15 + 4)" (( "(") (binary_expression "*piVar15 + 4" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000549de;" (goto "goto") (statement_identifier "LAB_000549de") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (1 < *(byte *)(param_1 + 0x33)) {\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" (if "if") (parenthesized_expression "(1 < *(byte *)(param_1 + 0x33))" (( "(") (binary_expression "1 < *(byte *)(param_1 + 0x33)" (number_literal "1") (< "<") (pointer_expression "*(byte *)(param_1 + 0x33)" (* "*") (cast_expression "(byte *)(param_1 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")"))))) () ")")) (compound_statement "{\n          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }\n        }" ({ "{") (for_statement "for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" (for "for") (( "(") (assignment_expression "iVar10 = *(int *)(iVar16 + 0x48)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar16 + 0x48)" (* "*") (cast_expression "(int *)(iVar16 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x48)" (( "(") (binary_expression "iVar16 + 0x48" (identifier "iVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar10 = *(int *)(iVar10 + 0x24)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar10 + 0x24)" (* "*") (cast_expression "(int *)(iVar10 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x24)" (( "(") (binary_expression "iVar10 + 0x24" (identifier "iVar10") (+ "+") (number_literal "0x24")) () ")"))))) () ")") (compound_statement "{\n            iVar11 = FUN_0003cad0();\n            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;\n          }" ({ "{") (expression_statement "iVar11 = FUN_0003cad0();" (assignment_expression "iVar11 = FUN_0003cad0()" (identifier "iVar11") (= "=") (call_expression "FUN_0003cad0()" (identifier "FUN_0003cad0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;" (if "if") (parenthesized_expression "((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0))" (( "(") (binary_expression "(iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)" (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar11 = FUN_0003cad0(), iVar11 != 0)" (( "(") (comma_expression "iVar11 = FUN_0003cad0(), iVar11 != 0" (assignment_expression "iVar11 = FUN_0003cad0()" (identifier "iVar11") (= "=") (call_expression "FUN_0003cad0()" (identifier "FUN_0003cad0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (} "}"))) (} "}"))) (expression_statement "iVar10 = *(int *)(iVar16 + 0x38);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x38)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar16 + 0x38)" (* "*") (cast_expression "(int *)(iVar16 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x38)" (( "(") (binary_expression "iVar16 + 0x38" (identifier "iVar16") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" (if "if") (parenthesized_expression "((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)))" (( "(") (binary_expression "(iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))" (( "(") (binary_expression "**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c)" (pointer_expression "**(int **)(iVar16 + 0x1c)" (* "*") (pointer_expression "*(int **)(iVar16 + 0x1c)" (* "*") (cast_expression "(int **)(iVar16 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + 0x1c)" (( "(") (binary_expression "iVar16 + 0x1c" (identifier "iVar16") (+ "+") (number_literal "0x1c")) () ")"))))) (!= "!=") (pointer_expression "**(int **)(iVar10 + 0x1c)" (* "*") (pointer_expression "*(int **)(iVar10 + 0x1c)" (* "*") (cast_expression "(int **)(iVar10 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 0x1c)" (( "(") (binary_expression "iVar10 + 0x1c" (identifier "iVar10") (+ "+") (number_literal "0x1c")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n          if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }\n          goto LAB_00054968;\n        }" ({ "{") (if_statement "if ((*(byte *)(iVar10 + 5) & 2) == 0) {\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }\n          else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar10 + 5) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar10 + 5) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar10 + 5) & 2)" (( "(") (binary_expression "*(byte *)(iVar10 + 5) & 2" (pointer_expression "*(byte *)(iVar10 + 5)" (* "*") (cast_expression "(byte *)(iVar10 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 5)" (( "(") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";\n          }" ({ "{") (expression_statement "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns";" (assignment_expression "pcVar13 = \n            "SELECTs to the left and right of %s do not have the same number of result columns"" (identifier "pcVar13") (= "=") (string_literal ""SELECTs to the left and right of %s do not have the same number of result columns"" (" """) (string_content "SELECTs to the left and right of %s do not have the same number of result columns") (" """))) (; ";")) (} "}")) (else_clause "else {\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" (else "else") (compound_statement "{\n            pcVar13 = "all VALUES must have the same number of terms";\n          }" ({ "{") (expression_statement "pcVar13 = "all VALUES must have the same number of terms";" (assignment_expression "pcVar13 = "all VALUES must have the same number of terms"" (identifier "pcVar13") (= "=") (string_literal ""all VALUES must have the same number of terms"" (" """) (string_content "all VALUES must have the same number of terms") (" """))) (; ";")) (} "}")))) (goto_statement "goto LAB_00054968;" (goto "goto") (statement_identifier "LAB_00054968") (; ";")) (} "}"))) (expression_statement "iVar16 = *(int *)(iVar16 + 0x34);" (assignment_expression "iVar16 = *(int *)(iVar16 + 0x34)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar16 + 0x34)" (* "*") (cast_expression "(int *)(iVar16 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x34)" (( "(") (binary_expression "iVar16 + 0x34" (identifier "iVar16") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" (identifier "local_7c") (= "=") (binary_expression "local_7c + 1" (identifier "local_7c") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar16 == 0) goto LAB_00054a40;" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00054a40;" (goto "goto") (statement_identifier "LAB_00054a40") (; ";"))) (expression_statement "uVar9 = *(uint *)(iVar16 + 4);" (assignment_expression "uVar9 = *(uint *)(iVar16 + 4)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(iVar16 + 4)" (* "*") (cast_expression "(uint *)(iVar16 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 4)" (( "(") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0002a7d0();" (call_expression "FUN_0002a7d0()" (identifier "FUN_0002a7d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;" (if "if") (parenthesized_expression "((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0'))" (( "(") (binary_expression "(param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')" (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar14 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar14 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar14 + 0x4d)" (* "*") (cast_expression "(char *)(iVar14 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x4d)" (( "(") (binary_expression "iVar14 + 0x4d" (identifier "iVar14") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (} "}"))) (goto_statement "goto LAB_000548e8;" (goto "goto") (statement_identifier "LAB_000548e8") (; ";")) (labeled_statement "LAB_00054a40:\n  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" (statement_identifier "LAB_00054a40") (: ":") (if_statement "if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" (if "if") (parenthesized_expression "((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0))" (( "(") (binary_expression "(iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)" (( "(") (comma_expression "piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0" (assignment_expression "piVar21 = *(int **)(param_2 + 0x30)" (identifier "piVar21") (= "=") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (, ",") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    iVar14 = *piVar21;\n    iVar17 = *param_1;\n    if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }\nLAB_00054968:\n    FUN_0003c160(param_1,pcVar13);\nLAB_000548b8:\n    uVar12 = 2;\n    goto LAB_000548ed;\n  }" ({ "{") (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" (identifier "iVar14") (= "=") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) (; ";")) (expression_statement "iVar17 = *param_1;" (assignment_expression "iVar17 = *param_1" (identifier "iVar17") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (*(int *)(iVar17 + 0x70) < iVar14) {\n      pcVar13 = "too many terms in ORDER BY clause";\n    }\n    else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar17 + 0x70) < iVar14)" (( "(") (binary_expression "*(int *)(iVar17 + 0x70) < iVar14" (pointer_expression "*(int *)(iVar17 + 0x70)" (* "*") (cast_expression "(int *)(iVar17 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x70)" (( "(") (binary_expression "iVar17 + 0x70" (identifier "iVar17") (+ "+") (number_literal "0x70")) () ")")))) (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n      pcVar13 = "too many terms in ORDER BY clause";\n    }" ({ "{") (expression_statement "pcVar13 = "too many terms in ORDER BY clause";" (assignment_expression "pcVar13 = "too many terms in ORDER BY clause"" (identifier "pcVar13") (= "=") (string_literal ""too many terms in ORDER BY clause"" (" """) (string_content "too many terms in ORDER BY clause") (" """))) (; ";")) (} "}")) (else_clause "else {\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" (else "else") (compound_statement "{\n      iVar20 = 0;\n      if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }\n      *(undefined4 *)(param_2 + 0x38) = 0;\n      iVar20 = *(int *)(param_2 + 0x34);\n      if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }\n      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }\n      if (iVar14 < 1) goto LAB_000548e8;\n      iVar17 = 0;\n      bVar2 = *(byte *)((int)piVar21 + 0xd);\n      while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }\n      pcVar13 = "%r ORDER BY term does not match any column in the result set";\n    }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar14) {\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" (if "if") (parenthesized_expression "(0 < iVar14)" (( "(") (binary_expression "0 < iVar14" (number_literal "0") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n        do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);\n      }" ({ "{") (do_statement "do {\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        } while (iVar14 != iVar16);" (do "do") (compound_statement "{\n          iVar16 = iVar20 + 1;\n          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);\n          *pbVar1 = *pbVar1 & 0xfb;\n          iVar20 = iVar16;\n        }" ({ "{") (expression_statement "iVar16 = iVar20 + 1;" (assignment_expression "iVar16 = iVar20 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);" (assignment_expression "pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" (identifier "pbVar1") (= "=") (cast_expression "(byte *)((int)piVar21 + iVar20 * 0x10 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 + iVar20 * 0x10 + 0xd)" (( "(") (binary_expression "(int)piVar21 + iVar20 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar20 * 0x10" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (+ "+") (binary_expression "iVar20 * 0x10" (identifier "iVar20") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "0xd")) () ")")))) (; ";")) (expression_statement "*pbVar1 = *pbVar1 & 0xfb;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfb" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (= "=") (binary_expression "*pbVar1 & 0xfb" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (& "&") (number_literal "0xfb"))) (; ";")) (expression_statement "iVar20 = iVar16;" (assignment_expression "iVar20 = iVar16" (identifier "iVar20") (= "=") (identifier "iVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != iVar16)" (( "(") (binary_expression "iVar14 != iVar16" (identifier "iVar14") (!= "!=") (identifier "iVar16")) () ")")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar20 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar20 = *(int *)(param_2 + 0x34)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x34) == 0) {\n        local_a0 = param_2;\n      }\n      else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x34) == 0" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_a0 = param_2;\n      }" ({ "{") (expression_statement "local_a0 = param_2;" (assignment_expression "local_a0 = param_2" (identifier "local_a0") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" (else "else") (compound_statement "{\n        do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);\n      }" ({ "{") (do_statement "do {\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        } while (*(int *)(local_a0 + 0x34) != 0);" (do "do") (compound_statement "{\n          local_a0 = iVar20;\n          *(int *)(local_a0 + 0x38) = param_2;\n          iVar20 = *(int *)(local_a0 + 0x34);\n          param_2 = local_a0;\n        }" ({ "{") (expression_statement "local_a0 = iVar20;" (assignment_expression "local_a0 = iVar20" (identifier "local_a0") (= "=") (identifier "iVar20")) (; ";")) (expression_statement "*(int *)(local_a0 + 0x38) = param_2;" (assignment_expression "*(int *)(local_a0 + 0x38) = param_2" (pointer_expression "*(int *)(local_a0 + 0x38)" (* "*") (cast_expression "(int *)(local_a0 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a0 + 0x38)" (( "(") (binary_expression "local_a0 + 0x38" (identifier "local_a0") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar20 = *(int *)(local_a0 + 0x34);" (assignment_expression "iVar20 = *(int *)(local_a0 + 0x34)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(local_a0 + 0x34)" (* "*") (cast_expression "(int *)(local_a0 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a0 + 0x34)" (( "(") (binary_expression "local_a0 + 0x34" (identifier "local_a0") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "param_2 = local_a0;" (assignment_expression "param_2 = local_a0" (identifier "param_2") (= "=") (identifier "local_a0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(local_a0 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(local_a0 + 0x34) != 0" (pointer_expression "*(int *)(local_a0 + 0x34)" (* "*") (cast_expression "(int *)(local_a0 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a0 + 0x34)" (( "(") (binary_expression "local_a0 + 0x34" (identifier "local_a0") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (while_statement "while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" (while "while") (parenthesized_expression "(puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14)" (( "(") (comma_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14" (assignment_expression "puVar5 = *(undefined4 **)(local_a0 + 0x1c)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined4 **)(local_a0 + 0x1c)" (* "*") (cast_expression "(undefined4 **)(local_a0 + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_a0 + 0x1c)" (( "(") (binary_expression "local_a0 + 0x1c" (identifier "local_a0") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (binary_expression "0 < iVar14" (number_literal "0") (< "<") (identifier "iVar14"))) () ")")) (compound_statement "{\n        bVar8 = false;\n        iVar20 = 0;\n        piVar15 = piVar21 + 1;\n        do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);\n        local_a0 = *(int *)(local_a0 + 0x38);\n        if ((local_a0 == 0) || (!bVar8)) break;\n      }" ({ "{") (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar15 = piVar21 + 1;" (assignment_expression "piVar15 = piVar21 + 1" (identifier "piVar15") (= "=") (binary_expression "piVar21 + 1" (identifier "piVar21") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        } while (iVar20 < iVar14);" (do "do") (compound_statement "{\n          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }\n          iVar20 = iVar20 + 1;\n          piVar15 = piVar15 + 4;\n        }" ({ "{") (if_statement "if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" (if "if") (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 4) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar15 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 4)" (( "(") (binary_expression "*(byte *)((int)piVar15 + 9) & 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" (* "*") (cast_expression "(byte *)((int)piVar15 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 9)" (( "(") (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }\nLAB_00054b33:\n            iVar14 = FUN_00029640();\n            if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }\n            if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }\n            if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }\n          }" ({ "{") (for_statement "for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;\n                pcVar13 = *(char **)(pcVar13 + 0xc)) {\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" (for "for") (( "(") (assignment_expression "pcVar13 = (char *)*piVar15" (identifier "pcVar13") (= "=") (cast_expression "(char *)*piVar15" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (; ";") (binary_expression "pcVar13 != (char *)0x0" (identifier "pcVar13") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "pcVar13 = *(char **)(pcVar13 + 0xc)" (identifier "pcVar13") (= "=") (pointer_expression "*(char **)(pcVar13 + 0xc)" (* "*") (cast_expression "(char **)(pcVar13 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar13 + 0xc)" (( "(") (binary_expression "pcVar13 + 0xc" (identifier "pcVar13") (+ "+") (number_literal "0xc")) () ")"))))) () ")") (compound_statement "{\n              while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }\n            }" ({ "{") (while_statement "while( true ) {\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;\n                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;\n                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);\n                if (pcVar13 == (char *)0x0) goto LAB_00054b33;\n              }" ({ "{") (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;" (if "if") (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x41000) == 0)" (( "(") (binary_expression "(*(uint *)(pcVar13 + 4) & 0x41000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x41000)" (( "(") (binary_expression "*(uint *)(pcVar13 + 4) & 0x41000" (pointer_expression "*(uint *)(pcVar13 + 4)" (* "*") (cast_expression "(uint *)(pcVar13 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar13 + 4)" (( "(") (binary_expression "pcVar13 + 4" (identifier "pcVar13") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x41000")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00054b33;" (goto "goto") (statement_identifier "LAB_00054b33") (; ";"))) (if_statement "if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;" (if "if") (parenthesized_expression "((*(uint *)(pcVar13 + 4) & 0x40000) == 0)" (( "(") (binary_expression "(*(uint *)(pcVar13 + 4) & 0x40000) == 0" (parenthesized_expression "(*(uint *)(pcVar13 + 4) & 0x40000)" (( "(") (binary_expression "*(uint *)(pcVar13 + 4) & 0x40000" (pointer_expression "*(uint *)(pcVar13 + 4)" (* "*") (cast_expression "(uint *)(pcVar13 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar13 + 4)" (( "(") (binary_expression "pcVar13 + 4" (identifier "pcVar13") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x40000")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);" (assignment_expression "pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4)" (identifier "pcVar13") (= "=") (pointer_expression "*(char **)(*(int *)(pcVar13 + 0x14) + 4)" (* "*") (cast_expression "(char **)(*(int *)(pcVar13 + 0x14) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar13 + 0x14) + 4)" (( "(") (binary_expression "*(int *)(pcVar13 + 0x14) + 4" (pointer_expression "*(int *)(pcVar13 + 0x14)" (* "*") (cast_expression "(int *)(pcVar13 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar13 + 0x14)" (( "(") (binary_expression "pcVar13 + 0x14" (identifier "pcVar13") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (pcVar13 == (char *)0x0) goto LAB_00054b33;" (if "if") (parenthesized_expression "(pcVar13 == (char *)0x0)" (( "(") (binary_expression "pcVar13 == (char *)0x0" (identifier "pcVar13") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00054b33;" (goto "goto") (statement_identifier "LAB_00054b33") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00054b33:\n            iVar14 = FUN_00029640();" (statement_identifier "LAB_00054b33") (: ":") (expression_statement "iVar14 = FUN_00029640();" (assignment_expression "iVar14 = FUN_00029640()" (identifier "iVar14") (= "=") (call_expression "FUN_00029640()" (identifier "FUN_00029640") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar14 != 0) {\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);\n              goto LAB_000548b8;\n            }" ({ "{") (expression_statement "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5);" (call_expression "FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" (identifier "FUN_0003c160") (argument_list "(param_1,"%r %s BY term out of range - should be between 1 and %d",\n                           iVar20 + 1,"ORDER",*puVar5)" (( "(") (identifier "param_1") (, ",") (string_literal ""%r %s BY term out of range - should be between 1 and %d"" (" """) (string_content "%r %s BY term out of range - should be between 1 and %d") (" """)) (, ",") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) (, ",") (string_literal ""ORDER"" (" """) (string_content "ORDER") (" """)) (, ",") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) () ")"))) (; ";")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";")) (} "}"))) (if_statement "if (*pcVar13 == ';') {\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }\n            else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" (if "if") (parenthesized_expression "(*pcVar13 == ';')" (( "(") (binary_expression "*pcVar13 == ';'" (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) (== "==") (char_literal "';'" (' "'") (character ";") (' "'"))) () ")")) (compound_statement "{\n              local_64 = FUN_000291e0();\n              if (local_64 == 0) goto LAB_00054c09;\n            }" ({ "{") (expression_statement "local_64 = FUN_000291e0();" (assignment_expression "local_64 = FUN_000291e0()" (identifier "local_64") (= "=") (call_expression "FUN_000291e0()" (identifier "FUN_000291e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_64 == 0) goto LAB_00054c09;" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00054c09;" (goto "goto") (statement_identifier "LAB_00054c09") (; ";"))) (} "}")) (else_clause "else {\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" (else "else") (compound_statement "{\n              local_64 = 0;\nLAB_00054c09:\n              local_8c = pcVar13;\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }\n              if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }\n              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }\n            }" ({ "{") (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00054c09:\n              local_8c = pcVar13;" (statement_identifier "LAB_00054c09") (: ":") (expression_statement "local_8c = pcVar13;" (assignment_expression "local_8c = pcVar13" (identifier "local_8c") (= "=") (identifier "pcVar13")) (; ";"))) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_8c = (char *)FUN_00052c60(0);\n              }" (if "if") (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" (* "*") (cast_expression "(byte *)(param_1 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                local_8c = (char *)FUN_00052c60(0);\n              }" ({ "{") (expression_statement "local_8c = (char *)FUN_00052c60(0);" (assignment_expression "local_8c = (char *)FUN_00052c60(0)" (identifier "local_8c") (= "=") (cast_expression "(char *)FUN_00052c60(0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00052c60(0)" (identifier "FUN_00052c60") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar17 + 0x4d) == '\0') {\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" (if "if") (parenthesized_expression "(*(char *)(iVar17 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar17 + 0x4d)" (* "*") (cast_expression "(char *)(iVar17 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x4d)" (( "(") (binary_expression "iVar17 + 0x4d" (identifier "iVar17") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                pcVar7 = *(code **)(local_a0 + 0x1c);\n                local_34 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                local_24 = 0;\n                local_3c = *(code **)(local_a0 + 0x20);\n                iVar14 = *param_1;\n                local_28 = 0x81;\n                uVar3 = *(undefined1 *)(iVar14 + 0x51);\n                if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }\n                local_40 = param_1;\n                local_38 = pcVar7;\n                iVar16 = FUN_0003c9d0();\n                *(undefined1 *)(iVar14 + 0x51) = uVar3;\n                iVar14 = 0;\n                local_64 = iVar14;\n                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }\n              }" ({ "{") (expression_statement "pcVar7 = *(code **)(local_a0 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(local_a0 + 0x1c)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(local_a0 + 0x1c)" (* "*") (cast_expression "(code **)(local_a0 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_a0 + 0x1c)" (( "(") (binary_expression "local_a0 + 0x1c" (identifier "local_a0") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = *(code **)(local_a0 + 0x20);" (assignment_expression "local_3c = *(code **)(local_a0 + 0x20)" (identifier "local_3c") (= "=") (pointer_expression "*(code **)(local_a0 + 0x20)" (* "*") (cast_expression "(code **)(local_a0 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_a0 + 0x20)" (( "(") (binary_expression "local_a0 + 0x20" (identifier "local_a0") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_28 = 0x81;" (assignment_expression "local_28 = 0x81" (identifier "local_28") (= "=") (number_literal "0x81")) (; ";")) (expression_statement "uVar3 = *(undefined1 *)(iVar14 + 0x51);" (assignment_expression "uVar3 = *(undefined1 *)(iVar14 + 0x51)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" (* "*") (cast_expression "(undefined1 *)(iVar14 + 0x51)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x51)" (( "(") (binary_expression "iVar14 + 0x51" (identifier "iVar14") (+ "+") (number_literal "0x51")) () ")"))))) (; ";")) (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" (if "if") (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" (* "*") (cast_expression "(byte *)(param_1 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                  *(undefined1 *)(iVar14 + 0x51) = 1;\n                }" ({ "{") (expression_statement "*(undefined1 *)(iVar14 + 0x51) = 1;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = 1" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" (* "*") (cast_expression "(undefined1 *)(iVar14 + 0x51)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x51)" (( "(") (binary_expression "iVar14 + 0x51" (identifier "iVar14") (+ "+") (number_literal "0x51")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "local_40 = param_1;" (assignment_expression "local_40 = param_1" (identifier "local_40") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_38 = pcVar7;" (assignment_expression "local_38 = pcVar7" (identifier "local_38") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "iVar16 = FUN_0003c9d0();" (assignment_expression "iVar16 = FUN_0003c9d0()" (identifier "iVar16") (= "=") (call_expression "FUN_0003c9d0()" (identifier "FUN_0003c9d0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(iVar14 + 0x51) = uVar3;" (assignment_expression "*(undefined1 *)(iVar14 + 0x51) = uVar3" (pointer_expression "*(undefined1 *)(iVar14 + 0x51)" (* "*") (cast_expression "(undefined1 *)(iVar14 + 0x51)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x51)" (( "(") (binary_expression "iVar14 + 0x51" (identifier "iVar14") (+ "+") (number_literal "0x51")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" (identifier "local_64") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" (if "if") (parenthesized_expression "((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7))" (( "(") (binary_expression "(iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)" (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_90 = 0, 0 < *(int *)pcVar7)" (( "(") (comma_expression "local_90 = 0, 0 < *(int *)pcVar7" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (, ",") (binary_expression "0 < *(int *)pcVar7" (number_literal "0") (< "<") (pointer_expression "*(int *)pcVar7" (* "*") (cast_expression "(int *)pcVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar7"))))) () ")"))) () ")")) (compound_statement "{\n                  do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);\n                }" ({ "{") (do_statement "do {\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  } while (local_90 < *(int *)pcVar7);" (do "do") (compound_statement "{\n                    iVar16 = FUN_0004e140(0xffffffff);\n                    local_90 = local_90 + 1;\n                    local_64 = local_90;\n                    if (iVar16 < 2) break;\n                    local_64 = iVar14;\n                  }" ({ "{") (expression_statement "iVar16 = FUN_0004e140(0xffffffff);" (assignment_expression "iVar16 = FUN_0004e140(0xffffffff)" (identifier "iVar16") (= "=") (call_expression "FUN_0004e140(0xffffffff)" (identifier "FUN_0004e140") (argument_list "(0xffffffff)" (( "(") (number_literal "0xffffffff") () ")")))) (; ";")) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" (identifier "local_90") (= "=") (binary_expression "local_90 + 1" (identifier "local_90") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_90;" (assignment_expression "local_64 = local_90" (identifier "local_64") (= "=") (identifier "local_90")) (; ";")) (if_statement "if (iVar16 < 2) break;" (if "if") (parenthesized_expression "(iVar16 < 2)" (( "(") (binary_expression "iVar16 < 2" (identifier "iVar16") (< "<") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_64 = iVar14;" (assignment_expression "local_64 = iVar14" (identifier "local_64") (= "=") (identifier "iVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_90 < *(int *)pcVar7)" (( "(") (binary_expression "local_90 < *(int *)pcVar7" (identifier "local_90") (< "<") (pointer_expression "*(int *)pcVar7" (* "*") (cast_expression "(int *)pcVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar7")))) () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {\n                FUN_000432e0();\n              }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0))" (( "(") (binary_expression "(*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)" (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" (* "*") (cast_expression "(byte *)(param_1 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(local_8c != (char *)0x0)" (( "(") (binary_expression "local_8c != (char *)0x0" (identifier "local_8c") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n                FUN_000432e0();\n              }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_64 < 1) {\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }\n            else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" (if "if") (parenthesized_expression "(local_64 < 1)" (( "(") (binary_expression "local_64 < 1" (identifier "local_64") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              bVar8 = true;\n              iVar14 = *piVar21;\n            }" ({ "{") (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" (identifier "bVar8") (= "=") (true "true")) (; ";")) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" (identifier "iVar14") (= "=") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) (; ";")) (} "}")) (else_clause "else {\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" (else "else") (compound_statement "{\n              if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }\n              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;\n              iVar14 = *piVar21;\n            }" ({ "{") (if_statement "if (*(byte *)(param_1 + 0x33) < 2) {\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" (if "if") (parenthesized_expression "(*(byte *)(param_1 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x33) < 2" (pointer_expression "*(byte *)(param_1 + 0x33)" (* "*") (cast_expression "(byte *)(param_1 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x33)" (( "(") (binary_expression "param_1 + 0x33" (identifier "param_1") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                local_40 = (int *)0x0;\n                local_3c = (code *)0x0;\n                iVar14 = FUN_0002ef20(0);\n                if (iVar14 == 0) goto LAB_000548b8;\n                pcVar6 = (char *)*piVar15;\n                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;\n                *(int *)(iVar14 + 8) = local_64;\n                if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }\n                if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }\n                *(short *)(piVar15 + 3) = (short)local_64;\n              }" ({ "{") (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" (identifier "local_40") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_3c = (code *)0x0;" (assignment_expression "local_3c = (code *)0x0" (identifier "local_3c") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar14 = FUN_0002ef20(0);" (assignment_expression "iVar14 = FUN_0002ef20(0)" (identifier "iVar14") (= "=") (call_expression "FUN_0002ef20(0)" (identifier "FUN_0002ef20") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_000548b8;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000548b8;" (goto "goto") (statement_identifier "LAB_000548b8") (; ";"))) (expression_statement "pcVar6 = (char *)*piVar15;" (assignment_expression "pcVar6 = (char *)*piVar15" (identifier "pcVar6") (= "=") (cast_expression "(char *)*piVar15" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (; ";")) (expression_statement "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" (* "*") (cast_expression "(uint *)(iVar14 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 4)" (( "(") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar14 + 4) | 0x400" (pointer_expression "*(uint *)(iVar14 + 4)" (* "*") (cast_expression "(uint *)(iVar14 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 4)" (( "(") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")")))) (| "|") (number_literal "0x400"))) (; ";")) (expression_statement "*(int *)(iVar14 + 8) = local_64;" (assignment_expression "*(int *)(iVar14 + 8) = local_64" (pointer_expression "*(int *)(iVar14 + 8)" (* "*") (cast_expression "(int *)(iVar14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (if_statement "if (pcVar13 == pcVar6) {\n                  *piVar15 = iVar14;\n                }\n                else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" (if "if") (parenthesized_expression "(pcVar13 == pcVar6)" (( "(") (binary_expression "pcVar13 == pcVar6" (identifier "pcVar13") (== "==") (identifier "pcVar6")) () ")")) (compound_statement "{\n                  *piVar15 = iVar14;\n                }" ({ "{") (expression_statement "*piVar15 = iVar14;" (assignment_expression "*piVar15 = iVar14" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (= "=") (identifier "iVar14")) (; ";")) (} "}")) (else_clause "else {\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" (else "else") (compound_statement "{\n                  do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');\n                  *(int *)(pcVar18 + 0xc) = iVar14;\n                }" ({ "{") (do_statement "do {\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  } while (*pcVar6 == 'o');" (do "do") (compound_statement "{\n                    pcVar18 = pcVar6;\n                    pcVar6 = *(char **)(pcVar18 + 0xc);\n                  }" ({ "{") (expression_statement "pcVar18 = pcVar6;" (assignment_expression "pcVar18 = pcVar6" (identifier "pcVar18") (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "pcVar6 = *(char **)(pcVar18 + 0xc);" (assignment_expression "pcVar6 = *(char **)(pcVar18 + 0xc)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(pcVar18 + 0xc)" (* "*") (cast_expression "(char **)(pcVar18 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0xc)" (( "(") (binary_expression "pcVar18 + 0xc" (identifier "pcVar18") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar6 == 'o')" (( "(") (binary_expression "*pcVar6 == 'o'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (; ";")) (expression_statement "*(int *)(pcVar18 + 0xc) = iVar14;" (assignment_expression "*(int *)(pcVar18 + 0xc) = iVar14" (pointer_expression "*(int *)(pcVar18 + 0xc)" (* "*") (cast_expression "(int *)(pcVar18 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0xc)" (( "(") (binary_expression "pcVar18 + 0xc" (identifier "pcVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (} "}")))) (if_statement "if (pcVar13 != (char *)0x0) {\n                  FUN_000432e0();\n                }" (if "if") (parenthesized_expression "(pcVar13 != (char *)0x0)" (( "(") (binary_expression "pcVar13 != (char *)0x0" (identifier "pcVar13") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  FUN_000432e0();\n                }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(short *)(piVar15 + 3) = (short)local_64;" (assignment_expression "*(short *)(piVar15 + 3) = (short)local_64" (pointer_expression "*(short *)(piVar15 + 3)" (* "*") (cast_expression "(short *)(piVar15 + 3)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar15 + 3)" (( "(") (binary_expression "piVar15 + 3" (identifier "piVar15") (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(short)local_64" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_64"))) (; ";")) (} "}"))) (expression_statement "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;" (assignment_expression "*(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" (* "*") (cast_expression "(byte *)((int)piVar15 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 9)" (( "(") (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(byte *)((int)piVar15 + 9) | 4" (pointer_expression "*(byte *)((int)piVar15 + 9)" (* "*") (cast_expression "(byte *)((int)piVar15 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 9)" (( "(") (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "9")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "iVar14 = *piVar21;" (assignment_expression "iVar14 = *piVar21" (identifier "iVar14") (= "=") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15 = piVar15 + 4;" (assignment_expression "piVar15 = piVar15 + 4" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 4" (identifier "piVar15") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 < iVar14)" (( "(") (binary_expression "iVar20 < iVar14" (identifier "iVar20") (< "<") (identifier "iVar14")) () ")")) (; ";")) (expression_statement "local_a0 = *(int *)(local_a0 + 0x38);" (assignment_expression "local_a0 = *(int *)(local_a0 + 0x38)" (identifier "local_a0") (= "=") (pointer_expression "*(int *)(local_a0 + 0x38)" (* "*") (cast_expression "(int *)(local_a0 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a0 + 0x38)" (( "(") (binary_expression "local_a0 + 0x38" (identifier "local_a0") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if ((local_a0 == 0) || (!bVar8)) break;" (if "if") (parenthesized_expression "((local_a0 == 0) || (!bVar8))" (( "(") (binary_expression "(local_a0 == 0) || (!bVar8)" (parenthesized_expression "(local_a0 == 0)" (( "(") (binary_expression "local_a0 == 0" (identifier "local_a0") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(!bVar8)" (( "(") (unary_expression "!bVar8" (! "!") (identifier "bVar8")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (if_statement "if (iVar14 < 1) goto LAB_000548e8;" (if "if") (parenthesized_expression "(iVar14 < 1)" (( "(") (binary_expression "iVar14 < 1" (identifier "iVar14") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_000548e8;" (goto "goto") (statement_identifier "LAB_000548e8") (; ";"))) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = *(byte *)((int)piVar21 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + 0xd)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)piVar21 + 0xd)" (* "*") (cast_expression "(byte *)((int)piVar21 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 + 0xd)" (( "(") (binary_expression "(int)piVar21 + 0xd" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (while_statement "while ((bVar2 & 4) != 0) {\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" (while "while") (parenthesized_expression "((bVar2 & 4) != 0)" (( "(") (binary_expression "(bVar2 & 4) != 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar17 = iVar17 + 1;\n        if (iVar14 == iVar17) goto LAB_000548e8;\n        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);\n      }" ({ "{") (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar14 == iVar17) goto LAB_000548e8;" (if "if") (parenthesized_expression "(iVar14 == iVar17)" (( "(") (binary_expression "iVar14 == iVar17" (identifier "iVar14") (== "==") (identifier "iVar17")) () ")")) (goto_statement "goto LAB_000548e8;" (goto "goto") (statement_identifier "LAB_000548e8") (; ";"))) (expression_statement "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);" (assignment_expression "bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" (* "*") (cast_expression "(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 + iVar17 * 0x10 + 0xd)" (( "(") (binary_expression "(int)piVar21 + iVar17 * 0x10 + 0xd" (binary_expression "(int)piVar21 + iVar17 * 0x10" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (+ "+") (binary_expression "iVar17 * 0x10" (identifier "iVar17") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar13 = "%r ORDER BY term does not match any column in the result set";" (assignment_expression "pcVar13 = "%r ORDER BY term does not match any column in the result set"" (identifier "pcVar13") (= "=") (string_literal ""%r ORDER BY term does not match any column in the result set"" (" """) (string_content "%r ORDER BY term does not match any column in the result set") (" """))) (; ";")) (} "}")))) (labeled_statement "LAB_00054968:\n    FUN_0003c160(param_1,pcVar13);" (statement_identifier "LAB_00054968") (: ":") (expression_statement "FUN_0003c160(param_1,pcVar13);" (call_expression "FUN_0003c160(param_1,pcVar13)" (identifier "FUN_0003c160") (argument_list "(param_1,pcVar13)" (( "(") (identifier "param_1") (, ",") (identifier "pcVar13") () ")"))) (; ";"))) (labeled_statement "LAB_000548b8:\n    uVar12 = 2;" (statement_identifier "LAB_000548b8") (: ":") (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" (identifier "uVar12") (= "=") (number_literal "2")) (; ";"))) (goto_statement "goto LAB_000548ed;" (goto "goto") (statement_identifier "LAB_000548ed") (; ";")) (} "}")))) (labeled_statement "LAB_000548e8:\n  uVar12 = 1;" (statement_identifier "LAB_000548e8") (: ":") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";"))) (labeled_statement "LAB_000548ed:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" (statement_identifier "LAB_000548ed") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar12;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar12;\n  }" ({ "{") (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" (identifier "FUN_000a9ea0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int function_1(type_1 *pWalker,type_2 *p)

{
  type_3 *puVar1;
  type_4 var_34;
  type_5 uVar3;
  int var_35;
  type_6 pOuterNC;
  type_7 *pParse;
  type_8 *psVar5;
  type_2 *var_12;
  type_2 *var_5;
  type_6 aVar8;
  char *var_7;
  type_9 *var_11;
  type_10 *var_16;
  type_7 *pParse_00;
  type_8 *psVar12;
  type_11 *var_32;
  type_9 *pEVar14;
  bool bVar15;
  type_12 var_2;
  int var_4;
  char *pcVar18;
  type_11 *var_31;
  int var_24;
  type_11 *pE;
  type_13 *pSVar21;
  type_14 *var_15;
  type_11 *pEVar23;
  int var_6;
  type_11 *var_19;
  type_2 *var_17;
  int var_9;
  int var_1;
  type_11 *in_stack_ffffff48;
  int in_stack_ffffff4c;
  type_5 **pzBuffer;
  type_11 *in_stack_ffffff54;
  type_2 *var_33;
  int var_26;
  type_11 *var_27;
  int var_13;
  int var_22;
  type_15 sNC;
  type_1 w;
  type_16 x;
  
  var_35 = *(int *)(var_1 + 0x14);
  var_2 = p->selFlags;
  if ((var_2 & 4) == 0) {
    pOuterNC = (type_6)(pWalker->u).pNC;
    pParse = pWalker->pParse;
    psVar5 = pParse->db;
    if ((var_2 & 0x40) != 0) {
      var_13 = 0;
      var_12 = p->pPrior;
      var_17 = p;
      do {
        var_17->selFlags = var_2 | 4;
        var_2 = 0;
        do {
          *(type_17 *)((int)&sNC.pSrcList + var_2) = 0;
          var_2 = var_2 + 4;
        } while (var_2 < 0x18);
        sNC.pParse = pParse;
        sNC.pWinSelect = var_17;
        var_4 = var_3(&sNC,var_17->pLimit);
        if (var_4 != 0) goto LAB_000548b8;
        pSVar21 = var_17->pSrc;
        if ((var_17->selFlags & 0x10000) != 0) {
          (pSVar21->a[0].var_17)->pOrderBy = var_17->pOrderBy;
          var_17->pOrderBy = (type_9 *)0x0;
        }
        if (0 < pSVar21->nSrc) {
          var_4 = 0;
          do {
            while ((var_5 = pSVar21->a[var_4].var_17, var_5 == (type_2 *)0x0 ||
                   ((var_5->selFlags & 4) != 0))) {
              var_4 = var_4 + 1;
              if (pSVar21->nSrc <= var_4) goto LAB_00054743;
            }
            var_6 = 0;
            pcVar18 = pParse->zAuthContext;
            for (aVar8 = pOuterNC; aVar8.pNC != (type_15 *)0x0;
                aVar8 = (type_6)(aVar8.pNC)->pNext) {
              var_6 = var_6 + (int)((type_18 *)(aVar8.pSrcList)->a)[2].
                                     pEList;
            }
            var_7 = pSVar21->a[var_4].zName;
            if (var_7 != (char *)0x0) {
              pParse->zAuthContext = var_7;
            }
            w.xSelectCallback2 = (type_19 *)0x0;
            w.pParse = pParse;
            w.xExprCallback = resolveExprStep;
            w.xSelectCallback = function_1;
            w.u = pOuterNC;
            var_8(&w,var_5);
            pParse->zAuthContext = pcVar18;
            if ((pParse->nErr != 0) || (aVar8 = pOuterNC, psVar5->mallocFailed != '\0'))
            goto LAB_000548b8;
            for (; aVar8.pNC != (type_15 *)0x0; aVar8.pNC = (aVar8.pNC)->pNext) {
              var_6 = var_6 - (aVar8.pNC)->nRef;
            }
            var_9 = var_4 + 1;
            pSVar21->a[var_4].fg.field_0x1 =
                 pSVar21->a[var_4].fg.field_0x1 & 0xf7 | (var_6 != 0) << 3;
            pSVar21 = var_17->pSrc;
            var_4 = var_9;
          } while (var_9 < pSVar21->nSrc);
        }
LAB_00054743:
        sNC.ncFlags = 0x4001;
        sNC.pSrcList = pSVar21;
        sNC.pNext = (type_15 *)pOuterNC;
        var_4 = var_10(&sNC,var_17->pEList);
        if (var_4 != 0) goto LAB_000548b8;
        var_11 = var_17->pGroupBy;
        var_2 = sNC.ncFlags & 0xffffbfff;
        if (var_11 == (type_9 *)0x0) {
          if ((sNC.ncFlags & 0x10U) == 0) {
            var_2 = sNC.ncFlags & 0xffffbffe;
          }
          else {
            var_17->selFlags = var_17->selFlags | sNC.ncFlags & 0x1000U | 8;
          }
          if (var_17->pHaving != (type_11 *)0x0) {
            pcVar18 = "a GROUP BY clause is required before HAVING";
            sNC.ncFlags = var_2;
            goto LAB_00054968;
          }
        }
        else {
          var_17->selFlags = var_17->selFlags | sNC.ncFlags & 0x1000U | 8;
        }
        sNC.uNC = (type_18)var_17->pEList;
        sNC.ncFlags = var_2 | 0x80;
        var_4 = var_3(&sNC,var_17->pHaving);
        if ((var_4 != 0) || (var_4 = var_3(&sNC,var_17->pWhere), var_4 != 0))
        goto LAB_000548b8;
        pSVar21 = var_17->pSrc;
        if (0 < pSVar21->nSrc) {
          var_4 = 0;
          do {
            while ((pSVar21->a[var_4].fg.field_0x1 & 4) == 0) {
              var_4 = var_4 + 1;
              if (pSVar21->nSrc <= var_4) goto LAB_00054818;
            }
            var_6 = var_10(&sNC,pSVar21->a[var_4].u1.pFuncArg);
            if (var_6 != 0) goto LAB_000548b8;
            pSVar21 = var_17->pSrc;
            var_4 = var_4 + 1;
          } while (var_4 < pSVar21->nSrc);
        }
LAB_00054818:
        sNC.ncFlags = sNC.ncFlags | 0x4001;
        sNC.pNext = (type_15 *)0x0;
        if ((var_17->selFlags & 0x10000) != 0) {
          var_5 = pSVar21->a[0].var_17;
          var_17->pOrderBy = var_5->pOrderBy;
          var_5->pOrderBy = (type_9 *)0x0;
        }
        if ((((int)(type_12)(var_12 != (type_2 *)0x0) <= var_13) &&
            (var_4 = var_14(&sNC,var_17,var_17->pOrderBy,"ORDER"), var_4 != 0)) ||
           (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
        sNC.ncFlags = sNC.ncFlags & 0xffffbfff;
        if (var_11 != (type_9 *)0x0) {
          var_4 = var_14(&sNC,var_17,var_11,"GROUP");
          if ((var_4 != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
          var_15 = var_11->a;
          if (0 < var_11->nExpr) {
            if (((var_11->a[0].pExpr)->flags & 0x10) != 0) {
LAB_000549de:
              pcVar18 = "aggregate functions are not allowed in the GROUP BY clause";
              goto LAB_00054968;
            }
            var_4 = 0;
            while( true ) {
              var_4 = var_4 + 1;
              var_15 = var_15 + 1;
              if (var_4 == var_11->nExpr) break;
              if ((var_15->pExpr->flags & 0x10) != 0) goto LAB_000549de;
            }
          }
        }
        if (1 < pParse->eParseMode) {
          for (var_16 = var_17->pWinDefn; var_16 != (type_10 *)0x0; var_16 = var_16->pNextWin) {
            var_4 = var_10(&sNC,var_16->pOrderBy);
            if ((var_4 != 0) ||
               (var_4 = var_10(&sNC,var_16->pPartition), var_4 != 0))
            goto LAB_000548b8;
          }
        }
        var_5 = var_17->pNext;
        if ((var_5 != (type_2 *)0x0) && (var_17->pEList->nExpr != var_5->pEList->nExpr)) {
          if ((var_5->selFlags & 0x200) == 0) {
            pcVar18 = 
            "SELECTs to the left and right of %s do not have the same number of result columns";
          }
          else {
            pcVar18 = "all VALUES must have the same number of terms";
          }
          goto LAB_00054968;
        }
        var_17 = var_17->pPrior;
        var_13 = var_13 + 1;
        if (var_17 == (type_2 *)0x0) goto LAB_00054a40;
        var_2 = var_17->selFlags;
      } while( true );
    }
    var_18(pParse,p,pOuterNC.pNC);
    if ((pParse->nErr != 0) || (psVar5->mallocFailed != '\0')) goto LAB_000548b8;
  }
  goto LAB_000548e8;
LAB_00054a40:
  if ((var_12 != (type_2 *)0x0) && (var_11 = p->pOrderBy, var_11 != (type_9 *)0x0)) {
    var_4 = var_11->nExpr;
    psVar5 = pParse->db;
    if (psVar5->aLimit[2] < var_4) {
      pcVar18 = "too many terms in ORDER BY clause";
    }
    else {
      var_6 = 0;
      if (0 < var_4) {
        do {
          var_9 = var_6 + 1;
          puVar1 = &var_11->a[var_6].field_0x9;
          *puVar1 = *puVar1 & 0xfb;
          var_6 = var_9;
        } while (var_4 != var_9);
      }
      p->pNext = (type_2 *)0x0;
      var_12 = p->pPrior;
      if (p->pPrior == (type_2 *)0x0) {
        var_33 = p;
      }
      else {
        do {
          var_33 = var_12;
          var_33->pNext = p;
          var_12 = var_33->pPrior;
          p = var_33;
        } while (var_33->pPrior != (type_2 *)0x0);
      }
      while (pParse_00 = (type_7 *)var_33->pEList, 0 < var_4) {
        bVar15 = false;
        var_6 = 0;
        var_15 = var_11->a;
        do {
          var_22 = -1;
          if ((var_15->field_0x9 & 4) == 0) {
            for (var_19 = var_15->pExpr; var_19 != (type_11 *)0x0; var_19 = var_19->pLeft) {
              while( true ) {
                if ((var_19->flags & 0x41000) == 0) goto LAB_00054b33;
                if ((var_19->flags & 0x40000) == 0) break;
                var_19 = ((var_19->x).pList)->a[0].pExpr;
                if (var_19 == (type_11 *)0x0) goto LAB_00054b33;
              }
            }
LAB_00054b33:
            pzBuffer = (type_5 **)0x54b3e;
            var_4 = var_20(var_19,&var_22);
            if (var_4 == 0) {
              if (var_19->op == ';') {
                pzBuffer = (type_5 **)0x54ce4;
                var_22 = var_21(pParse_00,(type_9 *)&var_19->u,pE,in_stack_ffffff54);
                if (var_22 == 0) goto LAB_00054c09;
              }
              else {
                var_22 = 0;
LAB_00054c09:
                var_27 = var_19;
                if (pParse->eParseMode < 2) {
                  var_27 = var_23((type_8 *)0x0,in_stack_ffffff48,in_stack_ffffff4c,pzBuffer);
                }
                var_4 = var_22;
                if (psVar5->mallocFailed == '\0') {
                  pEVar14 = var_33->pEList;
                  w.xSelectCallback2 = (type_19 *)0x0;
                  w.walkerDepth = 0;
                  w.eCode = 0;
                  w._22_2_ = 0;
                  w.xExprCallback = (type_20 *)var_33->pSrc;
                  psVar12 = pParse->db;
                  w.u.n = 0x81;
                  uVar3 = psVar12->suppressErr;
                  if (pParse->eParseMode < 2) {
                    psVar12->suppressErr = '\x01';
                  }
                  w.pParse = pParse;
                  w.xSelectCallback = (type_21 *)pEVar14;
                  var_24 = var_3((type_15 *)&w,var_27);
                  psVar12->suppressErr = uVar3;
                  var_9 = 0;
                  var_4 = var_9;
                  if ((var_24 == 0) && (var_26 = 0, 0 < pEVar14->nExpr)) {
                    do {
                      var_24 = var_25((type_7 *)0x0,pEVar14->a[var_26].pExpr,var_27,
                                                  -1);
                      var_26 = var_26 + 1;
                      var_4 = var_26;
                      if (var_24 < 2) break;
                      var_4 = var_9;
                    } while (var_26 < pEVar14->nExpr);
                  }
                }
                var_22 = var_4;
                if ((pParse->eParseMode < 2) && (var_27 != (type_11 *)0x0)) {
                  var_28(psVar5,var_27);
                }
              }
              if (var_22 < 1) {
                bVar15 = true;
                var_4 = var_11->nExpr;
                goto LAB_00054b7d;
              }
            }
            else {
              psVar12 = pParse_00->db;
              if ((var_22 < 1) || ((int)psVar12 < var_22)) {
                var_29(pParse,"%r %s BY term out of range - should be between 1 and %d",
                                var_6 + 1,"ORDER",psVar12);
                goto LAB_000548b8;
              }
            }
            if (pParse->eParseMode < 2) {
              w.pParse = (type_7 *)0x0;
              w.xExprCallback = (type_20 *)0x0;
              var_31 = var_30(psVar5,0x98,(type_16 *)&w,0);
              if (var_31 == (type_11 *)0x0) goto LAB_000548b8;
              var_32 = var_15->pExpr;
              var_31->flags = var_31->flags | 0x400;
              (var_31->u).iValue = var_22;
              if (var_19 == var_32) {
                var_15->pExpr = var_31;
              }
              else {
                do {
                  pEVar23 = var_32;
                  var_32 = pEVar23->pLeft;
                } while (var_32->op == 'o');
                pEVar23->pLeft = var_31;
              }
              if (var_19 != (type_11 *)0x0) {
                var_28(psVar5,var_19);
              }
              (var_15->u).x.iOrderByCol = (type_22)var_22;
            }
            var_15->field_0x9 = var_15->field_0x9 | 4;
            var_4 = var_11->nExpr;
          }
LAB_00054b7d:
          var_6 = var_6 + 1;
          var_15 = var_15 + 1;
        } while (var_6 < var_4);
        var_33 = var_33->pNext;
        if ((var_33 == (type_2 *)0x0) || (!bVar15)) break;
      }
      if (var_4 < 1) goto LAB_000548e8;
      var_34 = var_11->a[0].field_0x9;
      var_6 = 0;
      while ((var_34 & 4) != 0) {
        if (var_4 == var_6 + 1) goto LAB_000548e8;
        var_34 = *(type_4 *)((int)&var_11[1].a[var_6].zEName + 1);
        var_6 = var_6 + 1;
      }
      pcVar18 = "%r ORDER BY term does not match any column in the result set";
    }
LAB_00054968:
    var_29(pParse,pcVar18);
LAB_000548b8:
    var_4 = 2;
    goto LAB_000548ed;
  }
LAB_000548e8:
  var_4 = 1;
LAB_000548ed:
  if (var_35 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_36();
  }
  return var_4;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x00054b5a) */

undefined4 MASKED(int *param_1,int param_2)

{
  byte *pbVar1;
  byte bVar2;
  undefined1 uVar3;
  int iVar4;
  undefined4 *puVar5;
  char *pcVar6;
  code *pcVar7;
  bool bVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  char *pcVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  int iVar17;
  char *pcVar18;
  int iVar19;
  int iVar20;
  int *piVar21;
  int in_GS_OFFSET;
  int local_a0;
  int local_90;
  char *local_8c;
  int local_7c;
  int local_64;
  int *local_5c [2];
  int local_54;
  uint local_48;
  int local_44;
  int *local_40;
  code *local_3c;
  code *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  int local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x54549;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar9 = *(uint *)(param_2 + 4);
  if ((uVar9 & 4) == 0) {
    iVar17 = param_1[6];
    param_1 = (int *)*param_1;
    iVar14 = *param_1;
    if ((uVar9 & 0x40) != 0) {
      local_7c = 0;
      iVar20 = *(int *)(param_2 + 0x34);
      iVar16 = param_2;
      do {
        *(uint *)(iVar16 + 4) = uVar9 | 4;
        uVar9 = 0;
        do {
          *(undefined4 *)((int)local_5c + uVar9) = 0;
          uVar9 = uVar9 + 4;
        } while (uVar9 < 0x18);
        local_44 = iVar16;
        iVar10 = FUN_0003c9d0();
        if (iVar10 != 0) goto LAB_000548b8;
        piVar21 = *(int **)(iVar16 + 0x20);
        if ((*(byte *)(iVar16 + 6) & 1) != 0) {
          *(undefined4 *)(piVar21[7] + 0x30) = *(undefined4 *)(iVar16 + 0x30);
          *(undefined4 *)(iVar16 + 0x30) = 0;
        }
        if (0 < *piVar21) {
          iVar10 = 0;
          do {
            while ((piVar21[iVar10 * 0x11 + 7] != 0 &&
                   ((*(byte *)(piVar21[iVar10 * 0x11 + 7] + 4) & 4) == 0))) {
              iVar19 = 0;
              iVar11 = param_1[0x3d];
              for (iVar4 = iVar17; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {
                iVar19 = iVar19 + *(int *)(iVar4 + 0x10);
              }
              if (piVar21[iVar10 * 0x11 + 4] != 0) {
                param_1[0x3d] = piVar21[iVar10 * 0x11 + 4];
              }
              local_34 = 0;
              local_40 = param_1;
              local_3c = FUN_00059220;
              local_38 = MASKED;
              local_28 = iVar17;
              FUN_00028900();
              param_1[0x3d] = iVar11;
              if ((param_1[9] != 0) || (iVar11 = iVar17, *(char *)(iVar14 + 0x4d) != '\0'))
              goto LAB_000548b8;
              for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 0xc)) {
                iVar19 = iVar19 - *(int *)(iVar11 + 0x10);
              }
              iVar11 = iVar10 * 0x44;
              iVar10 = iVar10 + 1;
              *(byte *)((int)piVar21 + iVar11 + 0x2d) =
                   *(byte *)((int)piVar21 + iVar11 + 0x2d) & 0xf7 | (iVar19 != 0) << 3;
              piVar21 = *(int **)(iVar16 + 0x20);
              if (*piVar21 <= iVar10) goto LAB_00054743;
            }
            iVar10 = iVar10 + 1;
          } while (iVar10 < *piVar21);
        }
LAB_00054743:
        local_48 = 0x4001;
        local_5c[0] = piVar21;
        local_54 = iVar17;
        iVar10 = FUN_0003cad0();
        if (iVar10 != 0) goto LAB_000548b8;
        piVar21 = *(int **)(iVar16 + 0x28);
        uVar9 = local_48 & 0xffffbfff;
        if (piVar21 == (int *)0x0) {
          if ((local_48 & 0x10) == 0) {
            uVar9 = local_48 & 0xffffbffe;
          }
          else {
            *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;
          }
          if (*(int *)(iVar16 + 0x2c) != 0) {
            pcVar13 = "a GROUP BY clause is required before HAVING";
            local_48 = uVar9;
            goto LAB_00054968;
          }
        }
        else {
          *(uint *)(iVar16 + 4) = *(uint *)(iVar16 + 4) | local_48 & 0x1000 | 8;
        }
        local_5c[1] = *(int **)(iVar16 + 0x1c);
        local_48 = uVar9 | 0x80;
        iVar10 = FUN_0003c9d0();
        if ((iVar10 != 0) || (iVar10 = FUN_0003c9d0(), iVar10 != 0)) goto LAB_000548b8;
        piVar15 = *(int **)(iVar16 + 0x20);
        if (0 < *piVar15) {
          iVar10 = 0;
          do {
            while ((*(byte *)((int)piVar15 + iVar10 * 0x44 + 0x2d) & 4) != 0) {
              iVar11 = FUN_0003cad0();
              if (iVar11 != 0) goto LAB_000548b8;
              piVar15 = *(int **)(iVar16 + 0x20);
              iVar10 = iVar10 + 1;
              if (*piVar15 <= iVar10) goto LAB_00054818;
            }
            iVar10 = iVar10 + 1;
          } while (iVar10 < *piVar15);
        }
LAB_00054818:
        local_48 = local_48 | 0x4001;
        local_54 = 0;
        if ((*(byte *)(iVar16 + 6) & 1) != 0) {
          iVar10 = piVar15[7];
          *(undefined4 *)(iVar16 + 0x30) = *(undefined4 *)(iVar10 + 0x30);
          *(undefined4 *)(iVar10 + 0x30) = 0;
        }
        if ((((int)(uint)(iVar20 != 0) <= local_7c) && (iVar10 = FUN_00053c40("ORDER"), iVar10 != 0)
            ) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
        local_48 = local_48 & 0xffffbfff;
        if (piVar21 != (int *)0x0) {
          iVar10 = FUN_00053c40("GROUP");
          if ((iVar10 != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
          piVar15 = piVar21 + 1;
          if (0 < *piVar21) {
            if ((*(byte *)(piVar21[1] + 4) & 0x10) != 0) {
LAB_000549de:
              pcVar13 = "aggregate functions are not allowed in the GROUP BY clause";
              goto LAB_00054968;
            }
            iVar10 = 0;
            while( true ) {
              iVar10 = iVar10 + 1;
              piVar15 = piVar15 + 4;
              if (iVar10 == *piVar21) break;
              if ((*(byte *)(*piVar15 + 4) & 0x10) != 0) goto LAB_000549de;
            }
          }
        }
        if (1 < *(byte *)(param_1 + 0x33)) {
          for (iVar10 = *(int *)(iVar16 + 0x48); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0x24)) {
            iVar11 = FUN_0003cad0();
            if ((iVar11 != 0) || (iVar11 = FUN_0003cad0(), iVar11 != 0)) goto LAB_000548b8;
          }
        }
        iVar10 = *(int *)(iVar16 + 0x38);
        if ((iVar10 != 0) && (**(int **)(iVar16 + 0x1c) != **(int **)(iVar10 + 0x1c))) {
          if ((*(byte *)(iVar10 + 5) & 2) == 0) {
            pcVar13 = 
            "SELECTs to the left and right of %s do not have the same number of result columns";
          }
          else {
            pcVar13 = "all VALUES must have the same number of terms";
          }
          goto LAB_00054968;
        }
        iVar16 = *(int *)(iVar16 + 0x34);
        local_7c = local_7c + 1;
        if (iVar16 == 0) goto LAB_00054a40;
        uVar9 = *(uint *)(iVar16 + 4);
      } while( true );
    }
    FUN_0002a7d0();
    if ((param_1[9] != 0) || (*(char *)(iVar14 + 0x4d) != '\0')) goto LAB_000548b8;
  }
  goto LAB_000548e8;
LAB_00054a40:
  if ((iVar20 != 0) && (piVar21 = *(int **)(param_2 + 0x30), piVar21 != (int *)0x0)) {
    iVar14 = *piVar21;
    iVar17 = *param_1;
    if (*(int *)(iVar17 + 0x70) < iVar14) {
      pcVar13 = "too many terms in ORDER BY clause";
    }
    else {
      iVar20 = 0;
      if (0 < iVar14) {
        do {
          iVar16 = iVar20 + 1;
          pbVar1 = (byte *)((int)piVar21 + iVar20 * 0x10 + 0xd);
          *pbVar1 = *pbVar1 & 0xfb;
          iVar20 = iVar16;
        } while (iVar14 != iVar16);
      }
      *(undefined4 *)(param_2 + 0x38) = 0;
      iVar20 = *(int *)(param_2 + 0x34);
      if (*(int *)(param_2 + 0x34) == 0) {
        local_a0 = param_2;
      }
      else {
        do {
          local_a0 = iVar20;
          *(int *)(local_a0 + 0x38) = param_2;
          iVar20 = *(int *)(local_a0 + 0x34);
          param_2 = local_a0;
        } while (*(int *)(local_a0 + 0x34) != 0);
      }
      while (puVar5 = *(undefined4 **)(local_a0 + 0x1c), 0 < iVar14) {
        bVar8 = false;
        iVar20 = 0;
        piVar15 = piVar21 + 1;
        do {
          if ((*(byte *)((int)piVar15 + 9) & 4) == 0) {
            for (pcVar13 = (char *)*piVar15; pcVar13 != (char *)0x0;
                pcVar13 = *(char **)(pcVar13 + 0xc)) {
              while( true ) {
                if ((*(uint *)(pcVar13 + 4) & 0x41000) == 0) goto LAB_00054b33;
                if ((*(uint *)(pcVar13 + 4) & 0x40000) == 0) break;
                pcVar13 = *(char **)(*(int *)(pcVar13 + 0x14) + 4);
                if (pcVar13 == (char *)0x0) goto LAB_00054b33;
              }
            }
LAB_00054b33:
            iVar14 = FUN_00029640();
            if (iVar14 != 0) {
              FUN_0003c160(param_1,"%r %s BY term out of range - should be between 1 and %d",
                           iVar20 + 1,"ORDER",*puVar5);
              goto LAB_000548b8;
            }
            if (*pcVar13 == ';') {
              local_64 = FUN_000291e0();
              if (local_64 == 0) goto LAB_00054c09;
            }
            else {
              local_64 = 0;
LAB_00054c09:
              local_8c = pcVar13;
              if (*(byte *)(param_1 + 0x33) < 2) {
                local_8c = (char *)FUN_00052c60(0);
              }
              if (*(char *)(iVar17 + 0x4d) == '\0') {
                pcVar7 = *(code **)(local_a0 + 0x1c);
                local_34 = 0;
                local_30 = 0;
                local_2c = 0;
                local_24 = 0;
                local_3c = *(code **)(local_a0 + 0x20);
                iVar14 = *param_1;
                local_28 = 0x81;
                uVar3 = *(undefined1 *)(iVar14 + 0x51);
                if (*(byte *)(param_1 + 0x33) < 2) {
                  *(undefined1 *)(iVar14 + 0x51) = 1;
                }
                local_40 = param_1;
                local_38 = pcVar7;
                iVar16 = FUN_0003c9d0();
                *(undefined1 *)(iVar14 + 0x51) = uVar3;
                iVar14 = 0;
                local_64 = iVar14;
                if ((iVar16 == 0) && (local_90 = 0, 0 < *(int *)pcVar7)) {
                  do {
                    iVar16 = FUN_0004e140(0xffffffff);
                    local_90 = local_90 + 1;
                    local_64 = local_90;
                    if (iVar16 < 2) break;
                    local_64 = iVar14;
                  } while (local_90 < *(int *)pcVar7);
                }
              }
              if ((*(byte *)(param_1 + 0x33) < 2) && (local_8c != (char *)0x0)) {
                FUN_000432e0();
              }
            }
            if (local_64 < 1) {
              bVar8 = true;
              iVar14 = *piVar21;
            }
            else {
              if (*(byte *)(param_1 + 0x33) < 2) {
                local_40 = (int *)0x0;
                local_3c = (code *)0x0;
                iVar14 = FUN_0002ef20(0);
                if (iVar14 == 0) goto LAB_000548b8;
                pcVar6 = (char *)*piVar15;
                *(uint *)(iVar14 + 4) = *(uint *)(iVar14 + 4) | 0x400;
                *(int *)(iVar14 + 8) = local_64;
                if (pcVar13 == pcVar6) {
                  *piVar15 = iVar14;
                }
                else {
                  do {
                    pcVar18 = pcVar6;
                    pcVar6 = *(char **)(pcVar18 + 0xc);
                  } while (*pcVar6 == 'o');
                  *(int *)(pcVar18 + 0xc) = iVar14;
                }
                if (pcVar13 != (char *)0x0) {
                  FUN_000432e0();
                }
                *(short *)(piVar15 + 3) = (short)local_64;
              }
              *(byte *)((int)piVar15 + 9) = *(byte *)((int)piVar15 + 9) | 4;
              iVar14 = *piVar21;
            }
          }
          iVar20 = iVar20 + 1;
          piVar15 = piVar15 + 4;
        } while (iVar20 < iVar14);
        local_a0 = *(int *)(local_a0 + 0x38);
        if ((local_a0 == 0) || (!bVar8)) break;
      }
      if (iVar14 < 1) goto LAB_000548e8;
      iVar17 = 0;
      bVar2 = *(byte *)((int)piVar21 + 0xd);
      while ((bVar2 & 4) != 0) {
        iVar17 = iVar17 + 1;
        if (iVar14 == iVar17) goto LAB_000548e8;
        bVar2 = *(byte *)((int)piVar21 + iVar17 * 0x10 + 0xd);
      }
      pcVar13 = "%r ORDER BY term does not match any column in the result set";
    }
LAB_00054968:
    FUN_0003c160(param_1,pcVar13);
LAB_000548b8:
    uVar12 = 2;
    goto LAB_000548ed;
  }
LAB_000548e8:
  uVar12 = 1;
LAB_000548ed:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar12;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
}

