; LLVM IR from ibr-ds/STANlite :: Enclave/sqlite (select)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.DistinctCtx = type { i8, i8, i32, i32 }
%struct.SortCtx = type { ptr, i32, i32, i32, i32, i32, i32, i8, i8 }
%struct.AggInfo = type { i8, i8, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, ptr, i32 }
%struct.SelectDest = type { i8, ptr, i32, i32, i32, ptr }
%struct.NameContext = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i16 }
%struct.Parse = type { ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, %struct.Token, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i8, i8, i8, [10 x %struct.yColCache], [8 x i32], %struct.Token, %struct.Token, i16, i8, i8, i8, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.Token, ptr, ptr, ptr, ptr, ptr }
%struct.yColCache = type { i32, i16, i8, i32, i32, i32 }
%struct.Token = type { ptr, i32 }
%struct.sqlite3 = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i64, i32, i32, i32, i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, [12 x i32], i32, %struct.sqlite3InitInfo, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %union.anon, %struct.Lookaside, ptr, ptr, ptr, ptr, i32, i32, %struct.Hash, ptr, ptr, ptr, %struct.Hash, %struct.Hash, %struct.BusyHandler, [2 x %struct.Db], ptr, i32, i32, i32, i64, i64, ptr }
%struct.sqlite3InitInfo = type { i32, i8, i8, i8, i8 }
%union.anon = type { double }
%struct.Lookaside = type { i32, i16, i8, i32, i32, [3 x i32], ptr, ptr, ptr }
%struct.Hash = type { i32, i32, ptr, ptr }
%struct.BusyHandler = type { ptr, ptr, i32 }
%struct.Db = type { ptr, ptr, i8, i8, ptr }
%struct.Select = type { ptr, i8, i16, i32, i32, i32, [2 x i32], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.SrcList = type { i32, i32, [1 x %struct.SrcList_item] }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon.4, i8, i32, ptr, ptr, i64, %union.anon.5, ptr }
%struct.anon.4 = type { i8, i8, [2 x i8] }
%union.anon.5 = type { ptr }
%struct.Table = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i16, i16, i16, i8, i32, i32, ptr, ptr, ptr, ptr, ptr }
%struct.ExprList = type { i32, ptr }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.0 }
%union.anon.0 = type { i32 }
%struct.anon.1 = type { i16, i16 }
%struct.AggInfo_func = type { ptr, ptr, i32, i32 }
%struct.Expr = type { i8, i8, i32, %union.anon.2, ptr, ptr, %union.anon.3, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon.2 = type { ptr }
%union.anon.3 = type { ptr }
%struct.AggInfo_col = type { ptr, i32, i32, i32, i32, ptr }
%struct.Index = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i16, i16, i16, i8, i8 }

@.str.9 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3SelectDestInit(ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare void @sqlite3ErrorMsg(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

declare void @sqlite3DbFree(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3KeyInfoRef(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3SelectPrep(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3GetVdbe(ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3Select(ptr noundef %0, ptr noundef %1, ptr noundef %2) #0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %struct.DistinctCtx, align 4
  %20 = alloca %struct.SortCtx, align 8
  %21 = alloca %struct.AggInfo, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %struct.SelectDest, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca i16, align 2
  %39 = alloca %struct.NameContext, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca ptr, align 8
  %75 = alloca i8, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  store ptr null, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  store i32 1, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.Parse, ptr %76, i32 0, i32 56
  %78 = load i32, ptr %77, align 8, !tbaa !11
  store i32 %78, ptr %24, align 4, !tbaa !9
  %79 = load ptr, ptr %5, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.Parse, ptr %79, i32 0, i32 57
  %81 = load i32, ptr %80, align 4, !tbaa !15
  %82 = add nsw i32 %81, 1
  store i32 %82, ptr %80, align 4, !tbaa !15
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.Parse, ptr %83, i32 0, i32 56
  store i32 %81, ptr %84, align 8, !tbaa !11
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.Parse, ptr %85, i32 0, i32 0
  %87 = load ptr, ptr %86, align 8, !tbaa !16
  store ptr %87, ptr %23, align 8, !tbaa !5
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = icmp eq ptr %88, null
  br i1 %89, label %101, label %90

90:                                               ; preds = %3
  %91 = load ptr, ptr %23, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.sqlite3, ptr %91, i32 0, i32 17
  %93 = load i8, ptr %92, align 1, !tbaa !17
  %94 = zext i8 %93 to i32
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %101, label %96

96:                                               ; preds = %90
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.Parse, ptr %97, i32 0, i32 16
  %99 = load i32, ptr %98, align 8, !tbaa !24
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %96, %90, %3
  store i32 1, ptr %4, align 4
  store i32 1, ptr %25, align 4
  br label %1603

102:                                              ; preds = %96
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = call i32 @sqlite3AuthCheck(ptr noundef %103, i32 noundef 21, ptr noundef null, ptr noundef null, ptr noundef null)
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %107

106:                                              ; preds = %102
  store i32 1, ptr %4, align 4
  store i32 1, ptr %25, align 4
  br label %1603

107:                                              ; preds = %102
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 64, i1 false)
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.SelectDest, ptr %108, i32 0, i32 0
  %110 = load i8, ptr %109, align 8, !tbaa !25
  %111 = zext i8 %110 to i32
  %112 = icmp sle i32 %111, 8
  br i1 %112, label %113, label %124

113:                                              ; preds = %107
  %114 = load ptr, ptr %23, align 8, !tbaa !5
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.Select, ptr %115, i32 0, i32 11
  %117 = load ptr, ptr %116, align 8, !tbaa !27
  call void @sqlite3ExprListDelete(ptr noundef %114, ptr noundef %117)
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.Select, ptr %118, i32 0, i32 11
  store ptr null, ptr %119, align 8, !tbaa !27
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.Select, ptr %120, i32 0, i32 3
  %122 = load i32, ptr %121, align 4, !tbaa !29
  %123 = and i32 %122, -2
  store i32 %123, ptr %121, align 4, !tbaa !29
  br label %124

124:                                              ; preds = %113, %107
  %125 = load ptr, ptr %5, align 8, !tbaa !5
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  call void @sqlite3SelectPrep(ptr noundef %125, ptr noundef %126, ptr noundef null)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 40, i1 false)
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.Select, ptr %127, i32 0, i32 11
  %129 = load ptr, ptr %128, align 8, !tbaa !27
  %130 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  store ptr %129, ptr %130, align 8, !tbaa !30
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.Select, ptr %131, i32 0, i32 7
  %133 = load ptr, ptr %132, align 8, !tbaa !32
  store ptr %133, ptr %14, align 8, !tbaa !5
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.Parse, ptr %134, i32 0, i32 16
  %136 = load i32, ptr %135, align 8, !tbaa !24
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %144, label %138

138:                                              ; preds = %124
  %139 = load ptr, ptr %23, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.sqlite3, ptr %139, i32 0, i32 17
  %141 = load i8, ptr %140, align 1, !tbaa !17
  %142 = zext i8 %141 to i32
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %145

144:                                              ; preds = %138, %124
  br label %1579

145:                                              ; preds = %138
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.Select, ptr %146, i32 0, i32 3
  %148 = load i32, ptr %147, align 4, !tbaa !29
  %149 = and i32 %148, 8
  %150 = icmp ne i32 %149, 0
  %151 = zext i1 %150 to i32
  store i32 %151, ptr %12, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %252, %145
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.Select, ptr %153, i32 0, i32 12
  %155 = load ptr, ptr %154, align 8, !tbaa !33
  %156 = icmp ne ptr %155, null
  br i1 %156, label %163, label %157

157:                                              ; preds = %152
  %158 = load i32, ptr %8, align 4, !tbaa !9
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.SrcList, ptr %159, i32 0, i32 0
  %161 = load i32, ptr %160, align 8, !tbaa !34
  %162 = icmp slt i32 %158, %161
  br label %163

163:                                              ; preds = %157, %152
  %164 = phi i1 [ false, %152 ], [ %162, %157 ]
  br i1 %164, label %165, label %255

165:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  %166 = load ptr, ptr %14, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.SrcList, ptr %166, i32 0, i32 2
  %168 = load i32, ptr %8, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %167, i64 0, i64 %169
  store ptr %170, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  %171 = load ptr, ptr %26, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.SrcList_item, ptr %171, i32 0, i32 5
  %173 = load ptr, ptr %172, align 8, !tbaa !36
  store ptr %173, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.SrcList_item, ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !39
  store ptr %176, ptr %29, align 8, !tbaa !5
  %177 = load ptr, ptr %27, align 8, !tbaa !5
  %178 = icmp eq ptr %177, null
  br i1 %178, label %179, label %180

179:                                              ; preds = %165
  store i32 5, ptr %25, align 4
  br label %249

180:                                              ; preds = %165
  %181 = load ptr, ptr %29, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.Table, ptr %181, i32 0, i32 11
  %183 = load i16, ptr %182, align 2, !tbaa !40
  %184 = sext i16 %183 to i32
  %185 = load ptr, ptr %27, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.Select, ptr %185, i32 0, i32 0
  %187 = load ptr, ptr %186, align 8, !tbaa !42
  %188 = getelementptr inbounds %struct.ExprList, ptr %187, i32 0, i32 0
  %189 = load i32, ptr %188, align 8, !tbaa !43
  %190 = icmp ne i32 %184, %189
  br i1 %190, label %191, label %205

191:                                              ; preds = %180
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = load ptr, ptr %29, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.Table, ptr %193, i32 0, i32 11
  %195 = load i16, ptr %194, align 2, !tbaa !40
  %196 = sext i16 %195 to i32
  %197 = load ptr, ptr %29, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.Table, ptr %197, i32 0, i32 0
  %199 = load ptr, ptr %198, align 8, !tbaa !45
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.Select, ptr %200, i32 0, i32 0
  %202 = load ptr, ptr %201, align 8, !tbaa !42
  %203 = getelementptr inbounds %struct.ExprList, ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 8, !tbaa !43
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %192, ptr noundef @.str.9, i32 noundef %196, ptr noundef %199, i32 noundef %204)
  store i32 2, ptr %25, align 4
  br label %249

205:                                              ; preds = %180
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.Select, ptr %206, i32 0, i32 3
  %208 = load i32, ptr %207, align 4, !tbaa !29
  %209 = and i32 %208, 8
  %210 = icmp ne i32 %209, 0
  %211 = zext i1 %210 to i32
  store i32 %211, ptr %28, align 4, !tbaa !9
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = load i32, ptr %8, align 4, !tbaa !9
  %215 = load i32, ptr %12, align 4, !tbaa !9
  %216 = load i32, ptr %28, align 4, !tbaa !9
  %217 = call i32 @flattenSubquery(ptr noundef %212, ptr noundef %213, i32 noundef %214, i32 noundef %215, i32 noundef %216)
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %228

219:                                              ; preds = %205
  %220 = load i32, ptr %28, align 4, !tbaa !9
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %227

222:                                              ; preds = %219
  store i32 1, ptr %12, align 4, !tbaa !9
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.Select, ptr %223, i32 0, i32 3
  %225 = load i32, ptr %224, align 4, !tbaa !29
  %226 = or i32 %225, 8
  store i32 %226, ptr %224, align 4, !tbaa !29
  br label %227

227:                                              ; preds = %222, %219
  store i32 -1, ptr %8, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %227, %205
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.Select, ptr %229, i32 0, i32 7
  %231 = load ptr, ptr %230, align 8, !tbaa !32
  store ptr %231, ptr %14, align 8, !tbaa !5
  %232 = load ptr, ptr %23, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.sqlite3, ptr %232, i32 0, i32 17
  %234 = load i8, ptr %233, align 1, !tbaa !17
  %235 = icmp ne i8 %234, 0
  br i1 %235, label %236, label %237

236:                                              ; preds = %228
  store i32 2, ptr %25, align 4
  br label %249

237:                                              ; preds = %228
  %238 = load ptr, ptr %7, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.SelectDest, ptr %238, i32 0, i32 0
  %240 = load i8, ptr %239, align 8, !tbaa !25
  %241 = zext i8 %240 to i32
  %242 = icmp sle i32 %241, 8
  br i1 %242, label %248, label %243

243:                                              ; preds = %237
  %244 = load ptr, ptr %6, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.Select, ptr %244, i32 0, i32 11
  %246 = load ptr, ptr %245, align 8, !tbaa !27
  %247 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  store ptr %246, ptr %247, align 8, !tbaa !30
  br label %248

248:                                              ; preds = %243, %237
  store i32 0, ptr %25, align 4
  br label %249

249:                                              ; preds = %248, %236, %191, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  %250 = load i32, ptr %25, align 4
  switch i32 %250, label %1603 [
    i32 0, label %251
    i32 5, label %252
    i32 2, label %1579
  ]

251:                                              ; preds = %249
  br label %252

252:                                              ; preds = %251, %249
  %253 = load i32, ptr %8, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  store i32 %254, ptr %8, align 4, !tbaa !9
  br label %152, !llvm.loop !46

255:                                              ; preds = %163
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = call ptr @sqlite3GetVdbe(ptr noundef %256)
  store ptr %257, ptr %11, align 8, !tbaa !5
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = icmp eq ptr %258, null
  br i1 %259, label %260, label %261

260:                                              ; preds = %255
  br label %1579

261:                                              ; preds = %255
  %262 = load ptr, ptr %6, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.Select, ptr %262, i32 0, i32 12
  %264 = load ptr, ptr %263, align 8, !tbaa !33
  %265 = icmp ne ptr %264, null
  br i1 %265, label %266, label %275

266:                                              ; preds = %261
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  %270 = call i32 @multiSelect(ptr noundef %267, ptr noundef %268, ptr noundef %269)
  store i32 %270, ptr %18, align 4, !tbaa !9
  %271 = load i32, ptr %24, align 4, !tbaa !9
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.Parse, ptr %272, i32 0, i32 56
  store i32 %271, ptr %273, align 8, !tbaa !11
  %274 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %274, ptr %4, align 4
  store i32 1, ptr %25, align 4
  br label %1603

275:                                              ; preds = %261
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %510, %275
  %277 = load i32, ptr %8, align 4, !tbaa !9
  %278 = load ptr, ptr %14, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.SrcList, ptr %278, i32 0, i32 0
  %280 = load i32, ptr %279, align 8, !tbaa !34
  %281 = icmp slt i32 %277, %280
  br i1 %281, label %282, label %513

282:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  %283 = load ptr, ptr %14, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.SrcList, ptr %283, i32 0, i32 2
  %285 = load i32, ptr %8, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %284, i64 0, i64 %286
  store ptr %287, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.SrcList_item, ptr %288, i32 0, i32 5
  %290 = load ptr, ptr %289, align 8, !tbaa !36
  store ptr %290, ptr %32, align 8, !tbaa !5
  %291 = load ptr, ptr %32, align 8, !tbaa !5
  %292 = icmp eq ptr %291, null
  br i1 %292, label %293, label %294

293:                                              ; preds = %282
  store i32 8, ptr %25, align 4
  br label %507

294:                                              ; preds = %282
  %295 = load ptr, ptr %30, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.SrcList_item, ptr %295, i32 0, i32 6
  %297 = load i32, ptr %296, align 8, !tbaa !48
  %298 = icmp ne i32 %297, 0
  br i1 %298, label %299, label %318

299:                                              ; preds = %294
  %300 = load ptr, ptr %30, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.SrcList_item, ptr %300, i32 0, i32 9
  %302 = getelementptr inbounds %struct.anon.4, ptr %301, i32 0, i32 1
  %303 = load i8, ptr %302, align 1
  %304 = lshr i8 %303, 4
  %305 = and i8 %304, 1
  %306 = zext i8 %305 to i32
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %308, label %317

308:                                              ; preds = %299
  %309 = load ptr, ptr %11, align 8, !tbaa !5
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.SrcList_item, ptr %310, i32 0, i32 7
  %312 = load i32, ptr %311, align 4, !tbaa !49
  %313 = load ptr, ptr %30, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.SrcList_item, ptr %313, i32 0, i32 6
  %315 = load i32, ptr %314, align 8, !tbaa !48
  %316 = call i32 @sqlite3VdbeAddOp2(ptr noundef %309, i32 noundef 14, i32 noundef %312, i32 noundef %315)
  br label %317

317:                                              ; preds = %308, %299
  store i32 8, ptr %25, align 4
  br label %507

318:                                              ; preds = %294
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = call i32 @sqlite3SelectExprHeight(ptr noundef %319)
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.Parse, ptr %321, i32 0, i32 55
  %323 = load i32, ptr %322, align 4, !tbaa !50
  %324 = add nsw i32 %323, %320
  store i32 %324, ptr %322, align 4, !tbaa !50
  %325 = load ptr, ptr %30, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.SrcList_item, ptr %325, i32 0, i32 9
  %327 = getelementptr inbounds %struct.anon.4, ptr %326, i32 0, i32 0
  %328 = load i8, ptr %327, align 4, !tbaa !51
  %329 = zext i8 %328 to i32
  %330 = and i32 %329, 32
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %332, label %344

332:                                              ; preds = %318
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = load ptr, ptr %32, align 8, !tbaa !5
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.Select, ptr %335, i32 0, i32 8
  %337 = load ptr, ptr %336, align 8, !tbaa !52
  %338 = load ptr, ptr %30, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.SrcList_item, ptr %338, i32 0, i32 11
  %340 = load i32, ptr %339, align 4, !tbaa !53
  %341 = call i32 @pushDownWhereTerms(ptr noundef %333, ptr noundef %334, ptr noundef %337, i32 noundef %340)
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %344

343:                                              ; preds = %332
  br label %344

344:                                              ; preds = %343, %332, %318
  %345 = load i32, ptr %8, align 4, !tbaa !9
  %346 = icmp eq i32 %345, 0
  br i1 %346, label %347, label %431

347:                                              ; preds = %344
  %348 = load ptr, ptr %14, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.SrcList, ptr %348, i32 0, i32 0
  %350 = load i32, ptr %349, align 8, !tbaa !34
  %351 = icmp eq i32 %350, 1
  br i1 %351, label %362, label %352

352:                                              ; preds = %347
  %353 = load ptr, ptr %14, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.SrcList, ptr %353, i32 0, i32 2
  %355 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %354, i64 0, i64 1
  %356 = getelementptr inbounds %struct.SrcList_item, ptr %355, i32 0, i32 9
  %357 = getelementptr inbounds %struct.anon.4, ptr %356, i32 0, i32 0
  %358 = load i8, ptr %357, align 4, !tbaa !51
  %359 = zext i8 %358 to i32
  %360 = and i32 %359, 10
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %431

362:                                              ; preds = %352, %347
  %363 = load ptr, ptr %6, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.Select, ptr %363, i32 0, i32 3
  %365 = load i32, ptr %364, align 4, !tbaa !29
  %366 = and i32 %365, 2
  %367 = icmp eq i32 %366, 0
  br i1 %367, label %368, label %431

368:                                              ; preds = %362
  %369 = load ptr, ptr %23, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.sqlite3, ptr %369, i32 0, i32 13
  %371 = load i16, ptr %370, align 8, !tbaa !54
  %372 = zext i16 %371 to i32
  %373 = and i32 %372, 256
  %374 = icmp eq i32 %373, 0
  br i1 %374, label %375, label %431

375:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %376 = load ptr, ptr %11, align 8, !tbaa !5
  %377 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %376)
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %33, align 4, !tbaa !9
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.Parse, ptr %379, i32 0, i32 18
  %381 = load i32, ptr %380, align 8, !tbaa !55
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %380, align 8, !tbaa !55
  %383 = load ptr, ptr %30, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.SrcList_item, ptr %383, i32 0, i32 7
  store i32 %382, ptr %384, align 4, !tbaa !49
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  %386 = load ptr, ptr %30, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.SrcList_item, ptr %386, i32 0, i32 7
  %388 = load i32, ptr %387, align 4, !tbaa !49
  %389 = load i32, ptr %33, align 4, !tbaa !9
  %390 = call i32 @sqlite3VdbeAddOp3(ptr noundef %385, i32 noundef 15, i32 noundef %388, i32 noundef 0, i32 noundef %389)
  %391 = load i32, ptr %33, align 4, !tbaa !9
  %392 = load ptr, ptr %30, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.SrcList_item, ptr %392, i32 0, i32 6
  store i32 %391, ptr %393, align 8, !tbaa !48
  %394 = load ptr, ptr %30, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.SrcList_item, ptr %394, i32 0, i32 7
  %396 = load i32, ptr %395, align 4, !tbaa !49
  call void @sqlite3SelectDestInit(ptr noundef %31, i32 noundef 13, i32 noundef %396)
  %397 = load ptr, ptr %5, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.Parse, ptr %397, i32 0, i32 57
  %399 = load i32, ptr %398, align 4, !tbaa !15
  %400 = trunc i32 %399 to i8
  %401 = load ptr, ptr %30, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.SrcList_item, ptr %401, i32 0, i32 10
  store i8 %400, ptr %402, align 8, !tbaa !56
  %403 = load ptr, ptr %5, align 8, !tbaa !5
  %404 = load ptr, ptr %32, align 8, !tbaa !5
  %405 = call i32 @sqlite3Select(ptr noundef %403, ptr noundef %404, ptr noundef %31)
  %406 = load ptr, ptr %32, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.Select, ptr %406, i32 0, i32 2
  %408 = load i16, ptr %407, align 2, !tbaa !57
  %409 = load ptr, ptr %30, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.SrcList_item, ptr %409, i32 0, i32 4
  %411 = load ptr, ptr %410, align 8, !tbaa !39
  %412 = getelementptr inbounds %struct.Table, ptr %411, i32 0, i32 12
  store i16 %408, ptr %412, align 8, !tbaa !58
  %413 = load ptr, ptr %30, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.SrcList_item, ptr %413, i32 0, i32 9
  %415 = getelementptr inbounds %struct.anon.4, ptr %414, i32 0, i32 1
  %416 = load i8, ptr %415, align 1
  %417 = and i8 %416, -17
  %418 = or i8 %417, 16
  store i8 %418, ptr %415, align 1
  %419 = getelementptr inbounds %struct.SelectDest, ptr %31, i32 0, i32 3
  %420 = load i32, ptr %419, align 4, !tbaa !59
  %421 = load ptr, ptr %30, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.SrcList_item, ptr %421, i32 0, i32 8
  store i32 %420, ptr %422, align 8, !tbaa !60
  %423 = load ptr, ptr %11, align 8, !tbaa !5
  %424 = load ptr, ptr %30, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.SrcList_item, ptr %424, i32 0, i32 7
  %426 = load i32, ptr %425, align 4, !tbaa !49
  call void @sqlite3VdbeEndCoroutine(ptr noundef %423, i32 noundef %426)
  %427 = load ptr, ptr %11, align 8, !tbaa !5
  %428 = load i32, ptr %33, align 4, !tbaa !9
  %429 = sub nsw i32 %428, 1
  call void @sqlite3VdbeJumpHere(ptr noundef %427, i32 noundef %429)
  %430 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ClearTempRegCache(ptr noundef %430)
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %494

431:                                              ; preds = %368, %362, %352, %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.Parse, ptr %432, i32 0, i32 18
  %434 = load i32, ptr %433, align 8, !tbaa !55
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %433, align 8, !tbaa !55
  %436 = load ptr, ptr %30, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.SrcList_item, ptr %436, i32 0, i32 7
  store i32 %435, ptr %437, align 4, !tbaa !49
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = load ptr, ptr %30, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.SrcList_item, ptr %439, i32 0, i32 7
  %441 = load i32, ptr %440, align 4, !tbaa !49
  %442 = call i32 @sqlite3VdbeAddOp2(ptr noundef %438, i32 noundef 77, i32 noundef 0, i32 noundef %441)
  store i32 %442, ptr %34, align 4, !tbaa !9
  %443 = load i32, ptr %34, align 4, !tbaa !9
  %444 = add nsw i32 %443, 1
  %445 = load ptr, ptr %30, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.SrcList_item, ptr %445, i32 0, i32 6
  store i32 %444, ptr %446, align 8, !tbaa !48
  %447 = load ptr, ptr %30, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.SrcList_item, ptr %447, i32 0, i32 9
  %449 = getelementptr inbounds %struct.anon.4, ptr %448, i32 0, i32 1
  %450 = load i8, ptr %449, align 1
  %451 = lshr i8 %450, 3
  %452 = and i8 %451, 1
  %453 = zext i8 %452 to i32
  %454 = icmp eq i32 %453, 0
  br i1 %454, label %455, label %458

455:                                              ; preds = %431
  %456 = load ptr, ptr %11, align 8, !tbaa !5
  %457 = call i32 @sqlite3VdbeAddOp0(ptr noundef %456, i32 noundef 20)
  store i32 %457, ptr %35, align 4, !tbaa !9
  br label %459

458:                                              ; preds = %431
  br label %459

459:                                              ; preds = %458, %455
  %460 = load ptr, ptr %30, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.SrcList_item, ptr %460, i32 0, i32 11
  %462 = load i32, ptr %461, align 4, !tbaa !53
  call void @sqlite3SelectDestInit(ptr noundef %31, i32 noundef 12, i32 noundef %462)
  %463 = load ptr, ptr %5, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.Parse, ptr %463, i32 0, i32 57
  %465 = load i32, ptr %464, align 4, !tbaa !15
  %466 = trunc i32 %465 to i8
  %467 = load ptr, ptr %30, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.SrcList_item, ptr %467, i32 0, i32 10
  store i8 %466, ptr %468, align 8, !tbaa !56
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = load ptr, ptr %32, align 8, !tbaa !5
  %471 = call i32 @sqlite3Select(ptr noundef %469, ptr noundef %470, ptr noundef %31)
  %472 = load ptr, ptr %32, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.Select, ptr %472, i32 0, i32 2
  %474 = load i16, ptr %473, align 2, !tbaa !57
  %475 = load ptr, ptr %30, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.SrcList_item, ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %476, align 8, !tbaa !39
  %478 = getelementptr inbounds %struct.Table, ptr %477, i32 0, i32 12
  store i16 %474, ptr %478, align 8, !tbaa !58
  %479 = load i32, ptr %35, align 4, !tbaa !9
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %481, label %484

481:                                              ; preds = %459
  %482 = load ptr, ptr %11, align 8, !tbaa !5
  %483 = load i32, ptr %35, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %482, i32 noundef %483)
  br label %484

484:                                              ; preds = %481, %459
  %485 = load ptr, ptr %11, align 8, !tbaa !5
  %486 = load ptr, ptr %30, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.SrcList_item, ptr %486, i32 0, i32 7
  %488 = load i32, ptr %487, align 4, !tbaa !49
  %489 = call i32 @sqlite3VdbeAddOp1(ptr noundef %485, i32 noundef 73, i32 noundef %488)
  store i32 %489, ptr %36, align 4, !tbaa !9
  %490 = load ptr, ptr %11, align 8, !tbaa !5
  %491 = load i32, ptr %34, align 4, !tbaa !9
  %492 = load i32, ptr %36, align 4, !tbaa !9
  call void @sqlite3VdbeChangeP1(ptr noundef %490, i32 noundef %491, i32 noundef %492)
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ClearTempRegCache(ptr noundef %493)
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  br label %494

494:                                              ; preds = %484, %375
  %495 = load ptr, ptr %23, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.sqlite3, ptr %495, i32 0, i32 17
  %497 = load i8, ptr %496, align 1, !tbaa !17
  %498 = icmp ne i8 %497, 0
  br i1 %498, label %499, label %500

499:                                              ; preds = %494
  store i32 2, ptr %25, align 4
  br label %507

500:                                              ; preds = %494
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = call i32 @sqlite3SelectExprHeight(ptr noundef %501)
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.Parse, ptr %503, i32 0, i32 55
  %505 = load i32, ptr %504, align 4, !tbaa !50
  %506 = sub nsw i32 %505, %502
  store i32 %506, ptr %504, align 4, !tbaa !50
  store i32 0, ptr %25, align 4
  br label %507

507:                                              ; preds = %500, %499, %317, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %508 = load i32, ptr %25, align 4
  switch i32 %508, label %1603 [
    i32 0, label %509
    i32 8, label %510
    i32 2, label %1579
  ]

509:                                              ; preds = %507
  br label %510

510:                                              ; preds = %509, %507
  %511 = load i32, ptr %8, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %8, align 4, !tbaa !9
  br label %276, !llvm.loop !61

513:                                              ; preds = %276
  %514 = load ptr, ptr %6, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.Select, ptr %514, i32 0, i32 0
  %516 = load ptr, ptr %515, align 8, !tbaa !42
  store ptr %516, ptr %13, align 8, !tbaa !5
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.Select, ptr %517, i32 0, i32 8
  %519 = load ptr, ptr %518, align 8, !tbaa !52
  store ptr %519, ptr %15, align 8, !tbaa !5
  %520 = load ptr, ptr %6, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.Select, ptr %520, i32 0, i32 9
  %522 = load ptr, ptr %521, align 8, !tbaa !62
  store ptr %522, ptr %16, align 8, !tbaa !5
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.Select, ptr %523, i32 0, i32 10
  %525 = load ptr, ptr %524, align 8, !tbaa !63
  store ptr %525, ptr %17, align 8, !tbaa !5
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.Select, ptr %526, i32 0, i32 3
  %528 = load i32, ptr %527, align 4, !tbaa !29
  %529 = and i32 %528, 1
  %530 = icmp ne i32 %529, 0
  %531 = zext i1 %530 to i32
  %532 = trunc i32 %531 to i8
  %533 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 0
  store i8 %532, ptr %533, align 4, !tbaa !64
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.Select, ptr %534, i32 0, i32 3
  %536 = load i32, ptr %535, align 4, !tbaa !29
  %537 = and i32 %536, 9
  %538 = icmp eq i32 %537, 1
  br i1 %538, label %539, label %555

539:                                              ; preds = %513
  %540 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %541 = load ptr, ptr %540, align 8, !tbaa !30
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = call i32 @sqlite3ExprListCompare(ptr noundef %541, ptr noundef %542, i32 noundef -1)
  %544 = icmp eq i32 %543, 0
  br i1 %544, label %545, label %555

545:                                              ; preds = %539
  %546 = load ptr, ptr %6, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.Select, ptr %546, i32 0, i32 3
  %548 = load i32, ptr %547, align 4, !tbaa !29
  %549 = and i32 %548, -2
  store i32 %549, ptr %547, align 4, !tbaa !29
  %550 = load ptr, ptr %23, align 8, !tbaa !5
  %551 = load ptr, ptr %13, align 8, !tbaa !5
  %552 = call ptr @sqlite3ExprListDup(ptr noundef %550, ptr noundef %551, i32 noundef 0)
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.Select, ptr %553, i32 0, i32 9
  store ptr %552, ptr %554, align 8, !tbaa !62
  store ptr %552, ptr %16, align 8, !tbaa !5
  br label %555

555:                                              ; preds = %545, %539, %513
  %556 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %557 = load ptr, ptr %556, align 8, !tbaa !30
  %558 = icmp ne ptr %557, null
  br i1 %558, label %559, label %587

559:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %560 = load ptr, ptr %5, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %562 = load ptr, ptr %561, align 8, !tbaa !30
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ExprList, ptr %563, i32 0, i32 0
  %565 = load i32, ptr %564, align 8, !tbaa !43
  %566 = call ptr @keyInfoFromExprList(ptr noundef %560, ptr noundef %562, i32 noundef 0, i32 noundef %565)
  store ptr %566, ptr %37, align 8, !tbaa !5
  %567 = load ptr, ptr %5, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.Parse, ptr %567, i32 0, i32 17
  %569 = load i32, ptr %568, align 4, !tbaa !66
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %568, align 4, !tbaa !66
  %571 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 2
  store i32 %569, ptr %571, align 4, !tbaa !67
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 2
  %574 = load i32, ptr %573, align 4, !tbaa !67
  %575 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !30
  %577 = getelementptr inbounds %struct.ExprList, ptr %576, i32 0, i32 0
  %578 = load i32, ptr %577, align 8, !tbaa !43
  %579 = add nsw i32 %578, 1
  %580 = load ptr, ptr %13, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.ExprList, ptr %580, i32 0, i32 0
  %582 = load i32, ptr %581, align 8, !tbaa !43
  %583 = add nsw i32 %579, %582
  %584 = load ptr, ptr %37, align 8, !tbaa !5
  %585 = call i32 @sqlite3VdbeAddOp4(ptr noundef %572, i32 noundef 108, i32 noundef %574, i32 noundef %583, i32 noundef 0, ptr noundef %584, i32 noundef -5)
  %586 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  store i32 %585, ptr %586, align 8, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  br label %589

587:                                              ; preds = %555
  %588 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  store i32 -1, ptr %588, align 8, !tbaa !68
  br label %589

589:                                              ; preds = %587, %559
  %590 = load ptr, ptr %7, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.SelectDest, ptr %590, i32 0, i32 0
  %592 = load i8, ptr %591, align 8, !tbaa !25
  %593 = zext i8 %592 to i32
  %594 = icmp eq i32 %593, 12
  br i1 %594, label %595, label %604

595:                                              ; preds = %589
  %596 = load ptr, ptr %11, align 8, !tbaa !5
  %597 = load ptr, ptr %7, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.SelectDest, ptr %597, i32 0, i32 2
  %599 = load i32, ptr %598, align 8, !tbaa !69
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ExprList, ptr %600, i32 0, i32 0
  %602 = load i32, ptr %601, align 8, !tbaa !43
  %603 = call i32 @sqlite3VdbeAddOp2(ptr noundef %596, i32 noundef 108, i32 noundef %599, i32 noundef %602)
  br label %604

604:                                              ; preds = %595, %589
  %605 = load ptr, ptr %11, align 8, !tbaa !5
  %606 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %605)
  store i32 %606, ptr %22, align 4, !tbaa !9
  %607 = load ptr, ptr %6, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.Select, ptr %607, i32 0, i32 3
  %609 = load i32, ptr %608, align 4, !tbaa !29
  %610 = and i32 %609, 16384
  %611 = icmp eq i32 %610, 0
  br i1 %611, label %612, label %615

612:                                              ; preds = %604
  %613 = load ptr, ptr %6, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.Select, ptr %613, i32 0, i32 2
  store i16 320, ptr %614, align 2, !tbaa !57
  br label %615

615:                                              ; preds = %612, %604
  %616 = load ptr, ptr %5, align 8, !tbaa !5
  %617 = load ptr, ptr %6, align 8, !tbaa !5
  %618 = load i32, ptr %22, align 4, !tbaa !9
  call void @computeLimitRegisters(ptr noundef %616, ptr noundef %617, i32 noundef %618)
  %619 = load ptr, ptr %6, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.Select, ptr %619, i32 0, i32 4
  %621 = load i32, ptr %620, align 8, !tbaa !70
  %622 = icmp eq i32 %621, 0
  br i1 %622, label %623, label %636

623:                                              ; preds = %615
  %624 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  %625 = load i32, ptr %624, align 8, !tbaa !68
  %626 = icmp sge i32 %625, 0
  br i1 %626, label %627, label %636

627:                                              ; preds = %623
  %628 = load ptr, ptr %11, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  %630 = load i32, ptr %629, align 8, !tbaa !68
  call void @sqlite3VdbeChangeOpcode(ptr noundef %628, i32 noundef %630, i8 noundef zeroext 109)
  %631 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 7
  %632 = load i8, ptr %631, align 8, !tbaa !71
  %633 = zext i8 %632 to i32
  %634 = or i32 %633, 1
  %635 = trunc i32 %634 to i8
  store i8 %635, ptr %631, align 8, !tbaa !71
  br label %636

636:                                              ; preds = %627, %623, %615
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.Select, ptr %637, i32 0, i32 3
  %639 = load i32, ptr %638, align 4, !tbaa !29
  %640 = and i32 %639, 1
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %642, label %660

642:                                              ; preds = %636
  %643 = load ptr, ptr %5, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.Parse, ptr %643, i32 0, i32 17
  %645 = load i32, ptr %644, align 4, !tbaa !66
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %644, align 4, !tbaa !66
  %647 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 2
  store i32 %645, ptr %647, align 4, !tbaa !72
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 2
  %650 = load i32, ptr %649, align 4, !tbaa !72
  %651 = load ptr, ptr %5, align 8, !tbaa !5
  %652 = load ptr, ptr %6, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.Select, ptr %652, i32 0, i32 0
  %654 = load ptr, ptr %653, align 8, !tbaa !42
  %655 = call ptr @keyInfoFromExprList(ptr noundef %651, ptr noundef %654, i32 noundef 0, i32 noundef 0)
  %656 = call i32 @sqlite3VdbeAddOp4(ptr noundef %648, i32 noundef 108, i32 noundef %650, i32 noundef 0, i32 noundef 0, ptr noundef %655, i32 noundef -5)
  %657 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 3
  store i32 %656, ptr %657, align 4, !tbaa !73
  %658 = load ptr, ptr %11, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %658, i16 noundef zeroext 8)
  %659 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 1
  store i8 3, ptr %659, align 1, !tbaa !74
  br label %662

660:                                              ; preds = %636
  %661 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 1
  store i8 0, ptr %661, align 1, !tbaa !74
  br label %662

662:                                              ; preds = %660, %642
  %663 = load i32, ptr %12, align 4, !tbaa !9
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %777, label %665

665:                                              ; preds = %662
  %666 = load ptr, ptr %16, align 8, !tbaa !5
  %667 = icmp eq ptr %666, null
  br i1 %667, label %668, label %777

668:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 2, ptr %38) #4
  %669 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 0
  %670 = load i8, ptr %669, align 4, !tbaa !64
  %671 = zext i8 %670 to i32
  %672 = icmp ne i32 %671, 0
  %673 = zext i1 %672 to i64
  %674 = select i1 %672, i32 256, i32 0
  %675 = trunc i32 %674 to i16
  store i16 %675, ptr %38, align 2, !tbaa !75
  %676 = load ptr, ptr %6, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.Select, ptr %676, i32 0, i32 3
  %678 = load i32, ptr %677, align 4, !tbaa !29
  %679 = and i32 %678, 16384
  %680 = load i16, ptr %38, align 2, !tbaa !75
  %681 = zext i16 %680 to i32
  %682 = or i32 %681, %679
  %683 = trunc i32 %682 to i16
  store i16 %683, ptr %38, align 2, !tbaa !75
  %684 = load ptr, ptr %5, align 8, !tbaa !5
  %685 = load ptr, ptr %14, align 8, !tbaa !5
  %686 = load ptr, ptr %15, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %688 = load ptr, ptr %687, align 8, !tbaa !30
  %689 = load ptr, ptr %6, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.Select, ptr %689, i32 0, i32 0
  %691 = load ptr, ptr %690, align 8, !tbaa !42
  %692 = load i16, ptr %38, align 2, !tbaa !75
  %693 = load ptr, ptr %6, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.Select, ptr %693, i32 0, i32 2
  %695 = load i16, ptr %694, align 2, !tbaa !57
  %696 = sext i16 %695 to i32
  %697 = call ptr @sqlite3WhereBegin(ptr noundef %684, ptr noundef %685, ptr noundef %686, ptr noundef %688, ptr noundef %691, i16 noundef zeroext %692, i32 noundef %696)
  store ptr %697, ptr %10, align 8, !tbaa !5
  %698 = load ptr, ptr %10, align 8, !tbaa !5
  %699 = icmp eq ptr %698, null
  br i1 %699, label %700, label %701

700:                                              ; preds = %668
  store i32 2, ptr %25, align 4
  br label %774

701:                                              ; preds = %668
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  %703 = call signext i16 @sqlite3WhereOutputRowCount(ptr noundef %702)
  %704 = sext i16 %703 to i32
  %705 = load ptr, ptr %6, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.Select, ptr %705, i32 0, i32 2
  %707 = load i16, ptr %706, align 2, !tbaa !57
  %708 = sext i16 %707 to i32
  %709 = icmp slt i32 %704, %708
  br i1 %709, label %710, label %715

710:                                              ; preds = %701
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  %712 = call signext i16 @sqlite3WhereOutputRowCount(ptr noundef %711)
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.Select, ptr %713, i32 0, i32 2
  store i16 %712, ptr %714, align 2, !tbaa !57
  br label %715

715:                                              ; preds = %710, %701
  %716 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 0
  %717 = load i8, ptr %716, align 4, !tbaa !64
  %718 = zext i8 %717 to i32
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %729

720:                                              ; preds = %715
  %721 = load ptr, ptr %10, align 8, !tbaa !5
  %722 = call i32 @sqlite3WhereIsDistinct(ptr noundef %721)
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %729

724:                                              ; preds = %720
  %725 = load ptr, ptr %10, align 8, !tbaa !5
  %726 = call i32 @sqlite3WhereIsDistinct(ptr noundef %725)
  %727 = trunc i32 %726 to i8
  %728 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 1
  store i8 %727, ptr %728, align 1, !tbaa !74
  br label %729

729:                                              ; preds = %724, %720, %715
  %730 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %731 = load ptr, ptr %730, align 8, !tbaa !30
  %732 = icmp ne ptr %731, null
  br i1 %732, label %733, label %751

733:                                              ; preds = %729
  %734 = load ptr, ptr %10, align 8, !tbaa !5
  %735 = call i32 @sqlite3WhereIsOrdered(ptr noundef %734)
  %736 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 1
  store i32 %735, ptr %736, align 8, !tbaa !76
  %737 = load ptr, ptr %10, align 8, !tbaa !5
  %738 = call i32 @sqlite3WhereOrderedInnerLoop(ptr noundef %737)
  %739 = trunc i32 %738 to i8
  %740 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 8
  store i8 %739, ptr %740, align 1, !tbaa !77
  %741 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 1
  %742 = load i32, ptr %741, align 8, !tbaa !76
  %743 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %744 = load ptr, ptr %743, align 8, !tbaa !30
  %745 = getelementptr inbounds %struct.ExprList, ptr %744, i32 0, i32 0
  %746 = load i32, ptr %745, align 8, !tbaa !43
  %747 = icmp eq i32 %742, %746
  br i1 %747, label %748, label %750

748:                                              ; preds = %733
  %749 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  store ptr null, ptr %749, align 8, !tbaa !30
  br label %750

750:                                              ; preds = %748, %733
  br label %751

751:                                              ; preds = %750, %729
  %752 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  %753 = load i32, ptr %752, align 8, !tbaa !68
  %754 = icmp sge i32 %753, 0
  br i1 %754, label %755, label %764

755:                                              ; preds = %751
  %756 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %757 = load ptr, ptr %756, align 8, !tbaa !30
  %758 = icmp eq ptr %757, null
  br i1 %758, label %759, label %764

759:                                              ; preds = %755
  %760 = load ptr, ptr %11, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  %762 = load i32, ptr %761, align 8, !tbaa !68
  %763 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %760, i32 noundef %762)
  br label %764

764:                                              ; preds = %759, %755, %751
  %765 = load ptr, ptr %5, align 8, !tbaa !5
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = load ptr, ptr %13, align 8, !tbaa !5
  %768 = load ptr, ptr %7, align 8, !tbaa !5
  %769 = load ptr, ptr %10, align 8, !tbaa !5
  %770 = call i32 @sqlite3WhereContinueLabel(ptr noundef %769)
  %771 = load ptr, ptr %10, align 8, !tbaa !5
  %772 = call i32 @sqlite3WhereBreakLabel(ptr noundef %771)
  call void @selectInnerLoop(ptr noundef %765, ptr noundef %766, ptr noundef %767, i32 noundef -1, ptr noundef %20, ptr noundef %19, ptr noundef %768, i32 noundef %770, i32 noundef %772)
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  call void @sqlite3WhereEnd(ptr noundef %773)
  store i32 0, ptr %25, align 4
  br label %774

774:                                              ; preds = %764, %700
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #4
  %775 = load i32, ptr %25, align 4
  switch i32 %775, label %1603 [
    i32 0, label %776
    i32 2, label %1579
  ]

776:                                              ; preds = %774
  br label %1547

777:                                              ; preds = %665, %662
  call void @llvm.lifetime.start.p0(i64 56, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 0, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  store i32 0, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  store i32 0, ptr %48, align 4, !tbaa !9
  %778 = load ptr, ptr %16, align 8, !tbaa !5
  %779 = icmp ne ptr %778, null
  br i1 %779, label %780, label %832

780:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  %781 = load ptr, ptr %6, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.Select, ptr %781, i32 0, i32 0
  %783 = load ptr, ptr %782, align 8, !tbaa !42
  %784 = getelementptr inbounds %struct.ExprList, ptr %783, i32 0, i32 0
  %785 = load i32, ptr %784, align 8, !tbaa !43
  store i32 %785, ptr %49, align 4, !tbaa !9
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.Select, ptr %786, i32 0, i32 0
  %788 = load ptr, ptr %787, align 8, !tbaa !42
  %789 = getelementptr inbounds %struct.ExprList, ptr %788, i32 0, i32 1
  %790 = load ptr, ptr %789, align 8, !tbaa !78
  store ptr %790, ptr %50, align 8, !tbaa !5
  br label %791

791:                                              ; preds = %798, %780
  %792 = load i32, ptr %49, align 4, !tbaa !9
  %793 = icmp sgt i32 %792, 0
  br i1 %793, label %794, label %803

794:                                              ; preds = %791
  %795 = load ptr, ptr %50, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ExprList_item, ptr %795, i32 0, i32 5
  %797 = getelementptr inbounds %struct.anon.1, ptr %796, i32 0, i32 1
  store i16 0, ptr %797, align 2, !tbaa !79
  br label %798

798:                                              ; preds = %794
  %799 = load i32, ptr %49, align 4, !tbaa !9
  %800 = add nsw i32 %799, -1
  store i32 %800, ptr %49, align 4, !tbaa !9
  %801 = load ptr, ptr %50, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.ExprList_item, ptr %801, i32 1
  store ptr %802, ptr %50, align 8, !tbaa !5
  br label %791, !llvm.loop !80

803:                                              ; preds = %791
  %804 = load ptr, ptr %16, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.ExprList, ptr %804, i32 0, i32 0
  %806 = load i32, ptr %805, align 8, !tbaa !43
  store i32 %806, ptr %49, align 4, !tbaa !9
  %807 = load ptr, ptr %16, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ExprList, ptr %807, i32 0, i32 1
  %809 = load ptr, ptr %808, align 8, !tbaa !78
  store ptr %809, ptr %50, align 8, !tbaa !5
  br label %810

810:                                              ; preds = %817, %803
  %811 = load i32, ptr %49, align 4, !tbaa !9
  %812 = icmp sgt i32 %811, 0
  br i1 %812, label %813, label %822

813:                                              ; preds = %810
  %814 = load ptr, ptr %50, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ExprList_item, ptr %814, i32 0, i32 5
  %816 = getelementptr inbounds %struct.anon.1, ptr %815, i32 0, i32 1
  store i16 0, ptr %816, align 2, !tbaa !79
  br label %817

817:                                              ; preds = %813
  %818 = load i32, ptr %49, align 4, !tbaa !9
  %819 = add nsw i32 %818, -1
  store i32 %819, ptr %49, align 4, !tbaa !9
  %820 = load ptr, ptr %50, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ExprList_item, ptr %820, i32 1
  store ptr %821, ptr %50, align 8, !tbaa !5
  br label %810, !llvm.loop !81

822:                                              ; preds = %810
  %823 = load ptr, ptr %6, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.Select, ptr %823, i32 0, i32 2
  %825 = load i16, ptr %824, align 2, !tbaa !57
  %826 = sext i16 %825 to i32
  %827 = icmp sgt i32 %826, 66
  br i1 %827, label %828, label %831

828:                                              ; preds = %822
  %829 = load ptr, ptr %6, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.Select, ptr %829, i32 0, i32 2
  store i16 66, ptr %830, align 2, !tbaa !57
  br label %831

831:                                              ; preds = %828, %822
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  br label %835

832:                                              ; preds = %777
  %833 = load ptr, ptr %6, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.Select, ptr %833, i32 0, i32 2
  store i16 0, ptr %834, align 2, !tbaa !57
  br label %835

835:                                              ; preds = %832, %831
  %836 = load ptr, ptr %16, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %838 = load ptr, ptr %837, align 8, !tbaa !30
  %839 = call i32 @sqlite3ExprListCompare(ptr noundef %836, ptr noundef %838, i32 noundef -1)
  %840 = icmp eq i32 %839, 0
  br i1 %840, label %841, label %842

841:                                              ; preds = %835
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %842

842:                                              ; preds = %841, %835
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %843)
  store i32 %844, ptr %45, align 4, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 56, i1 false)
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.NameContext, ptr %39, i32 0, i32 0
  store ptr %845, ptr %846, align 8, !tbaa !82
  %847 = load ptr, ptr %14, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.NameContext, ptr %39, i32 0, i32 1
  store ptr %847, ptr %848, align 8, !tbaa !84
  %849 = getelementptr inbounds %struct.NameContext, ptr %39, i32 0, i32 3
  store ptr %21, ptr %849, align 8, !tbaa !85
  %850 = load ptr, ptr %5, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.Parse, ptr %850, i32 0, i32 18
  %852 = load i32, ptr %851, align 8, !tbaa !55
  %853 = add nsw i32 %852, 1
  %854 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 5
  store i32 %853, ptr %854, align 8, !tbaa !86
  %855 = load ptr, ptr %16, align 8, !tbaa !5
  %856 = icmp ne ptr %855, null
  br i1 %856, label %857, label %861

857:                                              ; preds = %842
  %858 = load ptr, ptr %16, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.ExprList, ptr %858, i32 0, i32 0
  %860 = load i32, ptr %859, align 8, !tbaa !43
  br label %862

861:                                              ; preds = %842
  br label %862

862:                                              ; preds = %861, %857
  %863 = phi i32 [ %860, %857 ], [ 0, %861 ]
  %864 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 4
  store i32 %863, ptr %864, align 4, !tbaa !88
  %865 = load ptr, ptr %16, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 7
  store ptr %865, ptr %866, align 8, !tbaa !89
  %867 = load ptr, ptr %13, align 8, !tbaa !5
  call void @sqlite3ExprAnalyzeAggList(ptr noundef %39, ptr noundef %867)
  %868 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %869 = load ptr, ptr %868, align 8, !tbaa !30
  call void @sqlite3ExprAnalyzeAggList(ptr noundef %39, ptr noundef %869)
  %870 = load ptr, ptr %17, align 8, !tbaa !5
  %871 = icmp ne ptr %870, null
  br i1 %871, label %872, label %874

872:                                              ; preds = %862
  %873 = load ptr, ptr %17, align 8, !tbaa !5
  call void @sqlite3ExprAnalyzeAggregates(ptr noundef %39, ptr noundef %873)
  br label %874

874:                                              ; preds = %872, %862
  %875 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 9
  %876 = load i32, ptr %875, align 8, !tbaa !90
  %877 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 10
  store i32 %876, ptr %877, align 4, !tbaa !91
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %903, %874
  %879 = load i32, ptr %8, align 4, !tbaa !9
  %880 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 12
  %881 = load i32, ptr %880, align 8, !tbaa !92
  %882 = icmp slt i32 %879, %881
  br i1 %882, label %883, label %906

883:                                              ; preds = %878
  %884 = getelementptr inbounds %struct.NameContext, ptr %39, i32 0, i32 7
  %885 = load i16, ptr %884, align 8, !tbaa !93
  %886 = zext i16 %885 to i32
  %887 = or i32 %886, 8
  %888 = trunc i32 %887 to i16
  store i16 %888, ptr %884, align 8, !tbaa !93
  %889 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 11
  %890 = load ptr, ptr %889, align 8, !tbaa !94
  %891 = load i32, ptr %8, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds %struct.AggInfo_func, ptr %890, i64 %892
  %894 = getelementptr inbounds %struct.AggInfo_func, ptr %893, i32 0, i32 0
  %895 = load ptr, ptr %894, align 8, !tbaa !95
  %896 = getelementptr inbounds %struct.Expr, ptr %895, i32 0, i32 6
  %897 = load ptr, ptr %896, align 8, !tbaa !79
  call void @sqlite3ExprAnalyzeAggList(ptr noundef %39, ptr noundef %897)
  %898 = getelementptr inbounds %struct.NameContext, ptr %39, i32 0, i32 7
  %899 = load i16, ptr %898, align 8, !tbaa !93
  %900 = zext i16 %899 to i32
  %901 = and i32 %900, -9
  %902 = trunc i32 %901 to i16
  store i16 %902, ptr %898, align 8, !tbaa !93
  br label %903

903:                                              ; preds = %883
  %904 = load i32, ptr %8, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %8, align 4, !tbaa !9
  br label %878, !llvm.loop !97

906:                                              ; preds = %878
  %907 = load ptr, ptr %5, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.Parse, ptr %907, i32 0, i32 18
  %909 = load i32, ptr %908, align 8, !tbaa !55
  %910 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 6
  store i32 %909, ptr %910, align 4, !tbaa !98
  %911 = load ptr, ptr %23, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.sqlite3, ptr %911, i32 0, i32 17
  %913 = load i8, ptr %912, align 1, !tbaa !17
  %914 = icmp ne i8 %913, 0
  br i1 %914, label %915, label %916

915:                                              ; preds = %906
  store i32 2, ptr %25, align 4
  br label %1544

916:                                              ; preds = %906
  %917 = load ptr, ptr %16, align 8, !tbaa !5
  %918 = icmp ne ptr %917, null
  br i1 %918, label %919, label %1331

919:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  %920 = load ptr, ptr %5, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.Parse, ptr %920, i32 0, i32 17
  %922 = load i32, ptr %921, align 4, !tbaa !66
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr %921, align 4, !tbaa !66
  %924 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  store i32 %922, ptr %924, align 4, !tbaa !99
  %925 = load ptr, ptr %5, align 8, !tbaa !5
  %926 = load ptr, ptr %16, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 9
  %928 = load i32, ptr %927, align 8, !tbaa !90
  %929 = call ptr @keyInfoFromExprList(ptr noundef %925, ptr noundef %926, i32 noundef 0, i32 noundef %928)
  store ptr %929, ptr %51, align 8, !tbaa !5
  %930 = load ptr, ptr %11, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  %932 = load i32, ptr %931, align 4, !tbaa !99
  %933 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 4
  %934 = load i32, ptr %933, align 4, !tbaa !88
  %935 = load ptr, ptr %51, align 8, !tbaa !5
  %936 = call i32 @sqlite3VdbeAddOp4(ptr noundef %930, i32 noundef 109, i32 noundef %932, i32 noundef %934, i32 noundef 0, ptr noundef %935, i32 noundef -5)
  store i32 %936, ptr %57, align 4, !tbaa !9
  %937 = load ptr, ptr %5, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.Parse, ptr %937, i32 0, i32 18
  %939 = load i32, ptr %938, align 8, !tbaa !55
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr %938, align 8, !tbaa !55
  store i32 %940, ptr %42, align 4, !tbaa !9
  %941 = load ptr, ptr %5, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.Parse, ptr %941, i32 0, i32 18
  %943 = load i32, ptr %942, align 8, !tbaa !55
  %944 = add nsw i32 %943, 1
  store i32 %944, ptr %942, align 8, !tbaa !55
  store i32 %944, ptr %43, align 4, !tbaa !9
  %945 = load ptr, ptr %5, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.Parse, ptr %945, i32 0, i32 18
  %947 = load i32, ptr %946, align 8, !tbaa !55
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr %946, align 8, !tbaa !55
  store i32 %948, ptr %54, align 4, !tbaa !9
  %949 = load ptr, ptr %11, align 8, !tbaa !5
  %950 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %949)
  store i32 %950, ptr %53, align 4, !tbaa !9
  %951 = load ptr, ptr %5, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.Parse, ptr %951, i32 0, i32 18
  %953 = load i32, ptr %952, align 8, !tbaa !55
  %954 = add nsw i32 %953, 1
  store i32 %954, ptr %952, align 8, !tbaa !55
  store i32 %954, ptr %59, align 4, !tbaa !9
  %955 = load ptr, ptr %11, align 8, !tbaa !5
  %956 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %955)
  store i32 %956, ptr %58, align 4, !tbaa !9
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.Parse, ptr %957, i32 0, i32 18
  %959 = load i32, ptr %958, align 8, !tbaa !55
  %960 = add nsw i32 %959, 1
  store i32 %960, ptr %40, align 4, !tbaa !9
  %961 = load ptr, ptr %16, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ExprList, ptr %961, i32 0, i32 0
  %963 = load i32, ptr %962, align 8, !tbaa !43
  %964 = load ptr, ptr %5, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.Parse, ptr %964, i32 0, i32 18
  %966 = load i32, ptr %965, align 8, !tbaa !55
  %967 = add nsw i32 %966, %963
  store i32 %967, ptr %965, align 8, !tbaa !55
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.Parse, ptr %968, i32 0, i32 18
  %970 = load i32, ptr %969, align 8, !tbaa !55
  %971 = add nsw i32 %970, 1
  store i32 %971, ptr %41, align 4, !tbaa !9
  %972 = load ptr, ptr %16, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.ExprList, ptr %972, i32 0, i32 0
  %974 = load i32, ptr %973, align 8, !tbaa !43
  %975 = load ptr, ptr %5, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.Parse, ptr %975, i32 0, i32 18
  %977 = load i32, ptr %976, align 8, !tbaa !55
  %978 = add nsw i32 %977, %974
  store i32 %978, ptr %976, align 8, !tbaa !55
  %979 = load ptr, ptr %11, align 8, !tbaa !5
  %980 = load i32, ptr %43, align 4, !tbaa !9
  %981 = call i32 @sqlite3VdbeAddOp2(ptr noundef %979, i32 noundef 77, i32 noundef 0, i32 noundef %980)
  %982 = load ptr, ptr %11, align 8, !tbaa !5
  %983 = load i32, ptr %42, align 4, !tbaa !9
  %984 = call i32 @sqlite3VdbeAddOp2(ptr noundef %982, i32 noundef 77, i32 noundef 0, i32 noundef %983)
  %985 = load ptr, ptr %11, align 8, !tbaa !5
  %986 = load i32, ptr %40, align 4, !tbaa !9
  %987 = load i32, ptr %40, align 4, !tbaa !9
  %988 = load ptr, ptr %16, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.ExprList, ptr %988, i32 0, i32 0
  %990 = load i32, ptr %989, align 8, !tbaa !43
  %991 = add nsw i32 %987, %990
  %992 = sub nsw i32 %991, 1
  %993 = call i32 @sqlite3VdbeAddOp3(ptr noundef %985, i32 noundef 80, i32 noundef 0, i32 noundef %986, i32 noundef %992)
  %994 = load ptr, ptr %11, align 8, !tbaa !5
  %995 = load i32, ptr %59, align 4, !tbaa !9
  %996 = load i32, ptr %58, align 4, !tbaa !9
  %997 = call i32 @sqlite3VdbeAddOp2(ptr noundef %994, i32 noundef 14, i32 noundef %995, i32 noundef %996)
  %998 = load ptr, ptr %5, align 8, !tbaa !5
  %999 = load ptr, ptr %14, align 8, !tbaa !5
  %1000 = load ptr, ptr %15, align 8, !tbaa !5
  %1001 = load ptr, ptr %16, align 8, !tbaa !5
  %1002 = load i32, ptr %48, align 4, !tbaa !9
  %1003 = icmp ne i32 %1002, 0
  %1004 = zext i1 %1003 to i64
  %1005 = select i1 %1003, i32 512, i32 0
  %1006 = or i32 64, %1005
  %1007 = trunc i32 %1006 to i16
  %1008 = call ptr @sqlite3WhereBegin(ptr noundef %998, ptr noundef %999, ptr noundef %1000, ptr noundef %1001, ptr noundef null, i16 noundef zeroext %1007, i32 noundef 0)
  store ptr %1008, ptr %10, align 8, !tbaa !5
  %1009 = load ptr, ptr %10, align 8, !tbaa !5
  %1010 = icmp eq ptr %1009, null
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %919
  store i32 2, ptr %25, align 4
  br label %1328

1012:                                             ; preds = %919
  %1013 = load ptr, ptr %10, align 8, !tbaa !5
  %1014 = call i32 @sqlite3WhereIsOrdered(ptr noundef %1013)
  %1015 = load ptr, ptr %16, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ExprList, ptr %1015, i32 0, i32 0
  %1017 = load i32, ptr %1016, align 8, !tbaa !43
  %1018 = icmp eq i32 %1014, %1017
  br i1 %1018, label %1019, label %1020

1019:                                             ; preds = %1012
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %1150

1020:                                             ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  %1021 = load ptr, ptr %5, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 0
  %1023 = load i8, ptr %1022, align 4, !tbaa !64
  %1024 = zext i8 %1023 to i32
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1032

1026:                                             ; preds = %1020
  %1027 = load ptr, ptr %6, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.Select, ptr %1027, i32 0, i32 3
  %1029 = load i32, ptr %1028, align 4, !tbaa !29
  %1030 = and i32 %1029, 1
  %1031 = icmp eq i32 %1030, 0
  br label %1032

1032:                                             ; preds = %1026, %1020
  %1033 = phi i1 [ false, %1020 ], [ %1031, %1026 ]
  %1034 = zext i1 %1033 to i64
  %1035 = select i1 %1033, ptr @.str.10, ptr @.str.11
  call void @explainTempTable(ptr noundef %1021, ptr noundef %1035)
  store i32 1, ptr %44, align 4, !tbaa !9
  %1036 = load ptr, ptr %16, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ExprList, ptr %1036, i32 0, i32 0
  %1038 = load i32, ptr %1037, align 8, !tbaa !43
  store i32 %1038, ptr %63, align 4, !tbaa !9
  %1039 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1039, ptr %62, align 4, !tbaa !9
  %1040 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1040, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1062, %1032
  %1042 = load i32, ptr %8, align 4, !tbaa !9
  %1043 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 9
  %1044 = load i32, ptr %1043, align 8, !tbaa !90
  %1045 = icmp slt i32 %1042, %1044
  br i1 %1045, label %1046, label %1065

1046:                                             ; preds = %1041
  %1047 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 8
  %1048 = load ptr, ptr %1047, align 8, !tbaa !100
  %1049 = load i32, ptr %8, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.AggInfo_col, ptr %1048, i64 %1050
  %1052 = getelementptr inbounds %struct.AggInfo_col, ptr %1051, i32 0, i32 3
  %1053 = load i32, ptr %1052, align 8, !tbaa !101
  %1054 = load i32, ptr %9, align 4, !tbaa !9
  %1055 = icmp sge i32 %1053, %1054
  br i1 %1055, label %1056, label %1061

1056:                                             ; preds = %1046
  %1057 = load i32, ptr %62, align 4, !tbaa !9
  %1058 = add nsw i32 %1057, 1
  store i32 %1058, ptr %62, align 4, !tbaa !9
  %1059 = load i32, ptr %9, align 4, !tbaa !9
  %1060 = add nsw i32 %1059, 1
  store i32 %1060, ptr %9, align 4, !tbaa !9
  br label %1061

1061:                                             ; preds = %1056, %1046
  br label %1062

1062:                                             ; preds = %1061
  %1063 = load i32, ptr %8, align 4, !tbaa !9
  %1064 = add nsw i32 %1063, 1
  store i32 %1064, ptr %8, align 4, !tbaa !9
  br label %1041, !llvm.loop !103

1065:                                             ; preds = %1041
  %1066 = load ptr, ptr %5, align 8, !tbaa !5
  %1067 = load i32, ptr %62, align 4, !tbaa !9
  %1068 = call i32 @sqlite3GetTempRange(ptr noundef %1066, i32 noundef %1067)
  store i32 %1068, ptr %60, align 4, !tbaa !9
  %1069 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCacheClear(ptr noundef %1069)
  %1070 = load ptr, ptr %5, align 8, !tbaa !5
  %1071 = load ptr, ptr %16, align 8, !tbaa !5
  %1072 = load i32, ptr %60, align 4, !tbaa !9
  %1073 = call i32 @sqlite3ExprCodeExprList(ptr noundef %1070, ptr noundef %1071, i32 noundef %1072, i32 noundef 0, i8 noundef zeroext 0)
  %1074 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1074, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %1075

1075:                                             ; preds = %1109, %1065
  %1076 = load i32, ptr %8, align 4, !tbaa !9
  %1077 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 9
  %1078 = load i32, ptr %1077, align 8, !tbaa !90
  %1079 = icmp slt i32 %1076, %1078
  br i1 %1079, label %1080, label %1112

1080:                                             ; preds = %1075
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  %1081 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 8
  %1082 = load ptr, ptr %1081, align 8, !tbaa !100
  %1083 = load i32, ptr %8, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds %struct.AggInfo_col, ptr %1082, i64 %1084
  store ptr %1085, ptr %64, align 8, !tbaa !5
  %1086 = load ptr, ptr %64, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.AggInfo_col, ptr %1086, i32 0, i32 3
  %1088 = load i32, ptr %1087, align 8, !tbaa !101
  %1089 = load i32, ptr %9, align 4, !tbaa !9
  %1090 = icmp sge i32 %1088, %1089
  br i1 %1090, label %1091, label %1108

1091:                                             ; preds = %1080
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #4
  %1092 = load i32, ptr %9, align 4, !tbaa !9
  %1093 = load i32, ptr %60, align 4, !tbaa !9
  %1094 = add nsw i32 %1092, %1093
  store i32 %1094, ptr %65, align 4, !tbaa !9
  %1095 = load ptr, ptr %5, align 8, !tbaa !5
  %1096 = load ptr, ptr %64, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.AggInfo_col, ptr %1096, i32 0, i32 0
  %1098 = load ptr, ptr %1097, align 8, !tbaa !104
  %1099 = load ptr, ptr %64, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.AggInfo_col, ptr %1099, i32 0, i32 2
  %1101 = load i32, ptr %1100, align 4, !tbaa !105
  %1102 = load ptr, ptr %64, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.AggInfo_col, ptr %1102, i32 0, i32 1
  %1104 = load i32, ptr %1103, align 8, !tbaa !106
  %1105 = load i32, ptr %65, align 4, !tbaa !9
  call void @sqlite3ExprCodeGetColumnToReg(ptr noundef %1095, ptr noundef %1098, i32 noundef %1101, i32 noundef %1104, i32 noundef %1105)
  %1106 = load i32, ptr %9, align 4, !tbaa !9
  %1107 = add nsw i32 %1106, 1
  store i32 %1107, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  br label %1108

1108:                                             ; preds = %1091, %1080
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  br label %1109

1109:                                             ; preds = %1108
  %1110 = load i32, ptr %8, align 4, !tbaa !9
  %1111 = add nsw i32 %1110, 1
  store i32 %1111, ptr %8, align 4, !tbaa !9
  br label %1075, !llvm.loop !107

1112:                                             ; preds = %1075
  %1113 = load ptr, ptr %5, align 8, !tbaa !5
  %1114 = call i32 @sqlite3GetTempReg(ptr noundef %1113)
  store i32 %1114, ptr %61, align 4, !tbaa !9
  %1115 = load ptr, ptr %11, align 8, !tbaa !5
  %1116 = load i32, ptr %60, align 4, !tbaa !9
  %1117 = load i32, ptr %62, align 4, !tbaa !9
  %1118 = load i32, ptr %61, align 4, !tbaa !9
  %1119 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1115, i32 noundef 100, i32 noundef %1116, i32 noundef %1117, i32 noundef %1118)
  %1120 = load ptr, ptr %11, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  %1122 = load i32, ptr %1121, align 4, !tbaa !99
  %1123 = load i32, ptr %61, align 4, !tbaa !9
  %1124 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1120, i32 noundef 125, i32 noundef %1122, i32 noundef %1123)
  %1125 = load ptr, ptr %5, align 8, !tbaa !5
  %1126 = load i32, ptr %61, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %1125, i32 noundef %1126)
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = load i32, ptr %60, align 4, !tbaa !9
  %1129 = load i32, ptr %62, align 4, !tbaa !9
  call void @sqlite3ReleaseTempRange(ptr noundef %1127, i32 noundef %1128, i32 noundef %1129)
  %1130 = load ptr, ptr %10, align 8, !tbaa !5
  call void @sqlite3WhereEnd(ptr noundef %1130)
  %1131 = load ptr, ptr %5, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.Parse, ptr %1131, i32 0, i32 17
  %1133 = load i32, ptr %1132, align 4, !tbaa !66
  %1134 = add nsw i32 %1133, 1
  store i32 %1134, ptr %1132, align 4, !tbaa !66
  store i32 %1133, ptr %46, align 4, !tbaa !9
  %1135 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 3
  store i32 %1133, ptr %1135, align 8, !tbaa !108
  %1136 = load ptr, ptr %5, align 8, !tbaa !5
  %1137 = call i32 @sqlite3GetTempReg(ptr noundef %1136)
  store i32 %1137, ptr %47, align 4, !tbaa !9
  %1138 = load ptr, ptr %11, align 8, !tbaa !5
  %1139 = load i32, ptr %46, align 4, !tbaa !9
  %1140 = load i32, ptr %47, align 4, !tbaa !9
  %1141 = load i32, ptr %62, align 4, !tbaa !9
  %1142 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1138, i32 noundef 111, i32 noundef %1139, i32 noundef %1140, i32 noundef %1141)
  %1143 = load ptr, ptr %11, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  %1145 = load i32, ptr %1144, align 4, !tbaa !99
  %1146 = load i32, ptr %45, align 4, !tbaa !9
  %1147 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1143, i32 noundef 56, i32 noundef %1145, i32 noundef %1146)
  %1148 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 1
  store i8 1, ptr %1148, align 1, !tbaa !109
  %1149 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCacheClear(ptr noundef %1149)
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  br label %1150

1150:                                             ; preds = %1112, %1019
  %1151 = load i32, ptr %48, align 4, !tbaa !9
  %1152 = icmp ne i32 %1151, 0
  br i1 %1152, label %1153, label %1173

1153:                                             ; preds = %1150
  %1154 = load ptr, ptr %23, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.sqlite3, ptr %1154, i32 0, i32 13
  %1156 = load i16, ptr %1155, align 8, !tbaa !54
  %1157 = zext i16 %1156 to i32
  %1158 = and i32 %1157, 4
  %1159 = icmp eq i32 %1158, 0
  br i1 %1159, label %1160, label %1173

1160:                                             ; preds = %1153
  %1161 = load i32, ptr %44, align 4, !tbaa !9
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1167, label %1163

1163:                                             ; preds = %1160
  %1164 = load ptr, ptr %10, align 8, !tbaa !5
  %1165 = call i32 @sqlite3WhereIsSorted(ptr noundef %1164)
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1167, label %1173

1167:                                             ; preds = %1163, %1160
  %1168 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  store ptr null, ptr %1168, align 8, !tbaa !30
  %1169 = load ptr, ptr %11, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 5
  %1171 = load i32, ptr %1170, align 8, !tbaa !68
  %1172 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %1169, i32 noundef %1171)
  br label %1173

1173:                                             ; preds = %1167, %1163, %1153, %1150
  %1174 = load ptr, ptr %11, align 8, !tbaa !5
  %1175 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1174)
  store i32 %1175, ptr %56, align 4, !tbaa !9
  %1176 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCacheClear(ptr noundef %1176)
  %1177 = load i32, ptr %44, align 4, !tbaa !9
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1179, label %1186

1179:                                             ; preds = %1173
  %1180 = load ptr, ptr %11, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  %1182 = load i32, ptr %1181, align 4, !tbaa !99
  %1183 = load i32, ptr %47, align 4, !tbaa !9
  %1184 = load i32, ptr %46, align 4, !tbaa !9
  %1185 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1180, i32 noundef 121, i32 noundef %1182, i32 noundef %1183, i32 noundef %1184)
  br label %1186

1186:                                             ; preds = %1179, %1173
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %1187

1187:                                             ; preds = %1219, %1186
  %1188 = load i32, ptr %9, align 4, !tbaa !9
  %1189 = load ptr, ptr %16, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ExprList, ptr %1189, i32 0, i32 0
  %1191 = load i32, ptr %1190, align 8, !tbaa !43
  %1192 = icmp slt i32 %1188, %1191
  br i1 %1192, label %1193, label %1222

1193:                                             ; preds = %1187
  %1194 = load i32, ptr %44, align 4, !tbaa !9
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1204

1196:                                             ; preds = %1193
  %1197 = load ptr, ptr %11, align 8, !tbaa !5
  %1198 = load i32, ptr %46, align 4, !tbaa !9
  %1199 = load i32, ptr %9, align 4, !tbaa !9
  %1200 = load i32, ptr %41, align 4, !tbaa !9
  %1201 = load i32, ptr %9, align 4, !tbaa !9
  %1202 = add nsw i32 %1200, %1201
  %1203 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1197, i32 noundef 98, i32 noundef %1198, i32 noundef %1199, i32 noundef %1202)
  br label %1218

1204:                                             ; preds = %1193
  %1205 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 0
  store i8 1, ptr %1205, align 8, !tbaa !110
  %1206 = load ptr, ptr %5, align 8, !tbaa !5
  %1207 = load ptr, ptr %16, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ExprList, ptr %1207, i32 0, i32 1
  %1209 = load ptr, ptr %1208, align 8, !tbaa !78
  %1210 = load i32, ptr %9, align 4, !tbaa !9
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds %struct.ExprList_item, ptr %1209, i64 %1211
  %1213 = getelementptr inbounds %struct.ExprList_item, ptr %1212, i32 0, i32 0
  %1214 = load ptr, ptr %1213, align 8, !tbaa !111
  %1215 = load i32, ptr %41, align 4, !tbaa !9
  %1216 = load i32, ptr %9, align 4, !tbaa !9
  %1217 = add nsw i32 %1215, %1216
  call void @sqlite3ExprCode(ptr noundef %1206, ptr noundef %1214, i32 noundef %1217)
  br label %1218

1218:                                             ; preds = %1204, %1196
  br label %1219

1219:                                             ; preds = %1218
  %1220 = load i32, ptr %9, align 4, !tbaa !9
  %1221 = add nsw i32 %1220, 1
  store i32 %1221, ptr %9, align 4, !tbaa !9
  br label %1187, !llvm.loop !113

1222:                                             ; preds = %1187
  %1223 = load ptr, ptr %11, align 8, !tbaa !5
  %1224 = load i32, ptr %40, align 4, !tbaa !9
  %1225 = load i32, ptr %41, align 4, !tbaa !9
  %1226 = load ptr, ptr %16, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ExprList, ptr %1226, i32 0, i32 0
  %1228 = load i32, ptr %1227, align 8, !tbaa !43
  %1229 = load ptr, ptr %51, align 8, !tbaa !5
  %1230 = call ptr @sqlite3KeyInfoRef(ptr noundef %1229)
  %1231 = call i32 @sqlite3VdbeAddOp4(ptr noundef %1223, i32 noundef 96, i32 noundef %1224, i32 noundef %1225, i32 noundef %1228, ptr noundef %1230, i32 noundef -5)
  %1232 = load ptr, ptr %11, align 8, !tbaa !5
  %1233 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1232)
  store i32 %1233, ptr %52, align 4, !tbaa !9
  %1234 = load ptr, ptr %11, align 8, !tbaa !5
  %1235 = load i32, ptr %52, align 4, !tbaa !9
  %1236 = add nsw i32 %1235, 1
  %1237 = load i32, ptr %52, align 4, !tbaa !9
  %1238 = add nsw i32 %1237, 1
  %1239 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1234, i32 noundef 18, i32 noundef %1236, i32 noundef 0, i32 noundef %1238)
  %1240 = load ptr, ptr %5, align 8, !tbaa !5
  %1241 = load i32, ptr %41, align 4, !tbaa !9
  %1242 = load i32, ptr %40, align 4, !tbaa !9
  %1243 = load ptr, ptr %16, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ExprList, ptr %1243, i32 0, i32 0
  %1245 = load i32, ptr %1244, align 8, !tbaa !43
  call void @sqlite3ExprCodeMove(ptr noundef %1240, i32 noundef %1241, i32 noundef %1242, i32 noundef %1245)
  %1246 = load ptr, ptr %11, align 8, !tbaa !5
  %1247 = load i32, ptr %54, align 4, !tbaa !9
  %1248 = load i32, ptr %53, align 4, !tbaa !9
  %1249 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1246, i32 noundef 14, i32 noundef %1247, i32 noundef %1248)
  %1250 = load ptr, ptr %11, align 8, !tbaa !5
  %1251 = load i32, ptr %43, align 4, !tbaa !9
  %1252 = load i32, ptr %45, align 4, !tbaa !9
  %1253 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1250, i32 noundef 67, i32 noundef %1251, i32 noundef %1252)
  %1254 = load ptr, ptr %11, align 8, !tbaa !5
  %1255 = load i32, ptr %59, align 4, !tbaa !9
  %1256 = load i32, ptr %58, align 4, !tbaa !9
  %1257 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1254, i32 noundef 14, i32 noundef %1255, i32 noundef %1256)
  %1258 = load ptr, ptr %11, align 8, !tbaa !5
  %1259 = load i32, ptr %52, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %1258, i32 noundef %1259)
  %1260 = load ptr, ptr %5, align 8, !tbaa !5
  call void @updateAccumulator(ptr noundef %1260, ptr noundef %21)
  %1261 = load ptr, ptr %11, align 8, !tbaa !5
  %1262 = load i32, ptr %42, align 4, !tbaa !9
  %1263 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1261, i32 noundef 77, i32 noundef 1, i32 noundef %1262)
  %1264 = load i32, ptr %44, align 4, !tbaa !9
  %1265 = icmp ne i32 %1264, 0
  br i1 %1265, label %1266, label %1272

1266:                                             ; preds = %1222
  %1267 = load ptr, ptr %11, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 2
  %1269 = load i32, ptr %1268, align 4, !tbaa !99
  %1270 = load i32, ptr %56, align 4, !tbaa !9
  %1271 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1267, i32 noundef 3, i32 noundef %1269, i32 noundef %1270)
  br label %1277

1272:                                             ; preds = %1222
  %1273 = load ptr, ptr %10, align 8, !tbaa !5
  call void @sqlite3WhereEnd(ptr noundef %1273)
  %1274 = load ptr, ptr %11, align 8, !tbaa !5
  %1275 = load i32, ptr %57, align 4, !tbaa !9
  %1276 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %1274, i32 noundef %1275)
  br label %1277

1277:                                             ; preds = %1272, %1266
  %1278 = load ptr, ptr %11, align 8, !tbaa !5
  %1279 = load i32, ptr %54, align 4, !tbaa !9
  %1280 = load i32, ptr %53, align 4, !tbaa !9
  %1281 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1278, i32 noundef 14, i32 noundef %1279, i32 noundef %1280)
  %1282 = load ptr, ptr %11, align 8, !tbaa !5
  %1283 = load i32, ptr %45, align 4, !tbaa !9
  %1284 = call i32 @sqlite3VdbeGoto(ptr noundef %1282, i32 noundef %1283)
  %1285 = load ptr, ptr %11, align 8, !tbaa !5
  %1286 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1285)
  store i32 %1286, ptr %55, align 4, !tbaa !9
  %1287 = load ptr, ptr %11, align 8, !tbaa !5
  %1288 = load i32, ptr %43, align 4, !tbaa !9
  %1289 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1287, i32 noundef 77, i32 noundef 1, i32 noundef %1288)
  %1290 = load ptr, ptr %11, align 8, !tbaa !5
  %1291 = load i32, ptr %54, align 4, !tbaa !9
  %1292 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1290, i32 noundef 73, i32 noundef %1291)
  %1293 = load ptr, ptr %11, align 8, !tbaa !5
  %1294 = load i32, ptr %53, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1293, i32 noundef %1294)
  %1295 = load ptr, ptr %11, align 8, !tbaa !5
  %1296 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1295)
  store i32 %1296, ptr %53, align 4, !tbaa !9
  %1297 = load ptr, ptr %11, align 8, !tbaa !5
  %1298 = load i32, ptr %42, align 4, !tbaa !9
  %1299 = load i32, ptr %53, align 4, !tbaa !9
  %1300 = add nsw i32 %1299, 2
  %1301 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1297, i32 noundef 67, i32 noundef %1298, i32 noundef %1300)
  %1302 = load ptr, ptr %11, align 8, !tbaa !5
  %1303 = load i32, ptr %54, align 4, !tbaa !9
  %1304 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1302, i32 noundef 73, i32 noundef %1303)
  %1305 = load ptr, ptr %5, align 8, !tbaa !5
  call void @finalizeAggFunctions(ptr noundef %1305, ptr noundef %21)
  %1306 = load ptr, ptr %5, align 8, !tbaa !5
  %1307 = load ptr, ptr %17, align 8, !tbaa !5
  %1308 = load i32, ptr %53, align 4, !tbaa !9
  %1309 = add nsw i32 %1308, 1
  call void @sqlite3ExprIfFalse(ptr noundef %1306, ptr noundef %1307, i32 noundef %1309, i32 noundef 16)
  %1310 = load ptr, ptr %5, align 8, !tbaa !5
  %1311 = load ptr, ptr %6, align 8, !tbaa !5
  %1312 = load ptr, ptr %6, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.Select, ptr %1312, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8, !tbaa !42
  %1315 = load ptr, ptr %7, align 8, !tbaa !5
  %1316 = load i32, ptr %53, align 4, !tbaa !9
  %1317 = add nsw i32 %1316, 1
  %1318 = load i32, ptr %55, align 4, !tbaa !9
  call void @selectInnerLoop(ptr noundef %1310, ptr noundef %1311, ptr noundef %1314, i32 noundef -1, ptr noundef %20, ptr noundef %19, ptr noundef %1315, i32 noundef %1317, i32 noundef %1318)
  %1319 = load ptr, ptr %11, align 8, !tbaa !5
  %1320 = load i32, ptr %54, align 4, !tbaa !9
  %1321 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1319, i32 noundef 73, i32 noundef %1320)
  %1322 = load ptr, ptr %11, align 8, !tbaa !5
  %1323 = load i32, ptr %58, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1322, i32 noundef %1323)
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  call void @resetAccumulator(ptr noundef %1324, ptr noundef %21)
  %1325 = load ptr, ptr %11, align 8, !tbaa !5
  %1326 = load i32, ptr %59, align 4, !tbaa !9
  %1327 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1325, i32 noundef 73, i32 noundef %1326)
  store i32 0, ptr %25, align 4
  br label %1328

1328:                                             ; preds = %1277, %1011
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  %1329 = load i32, ptr %25, align 4
  switch i32 %1329, label %1544 [
    i32 0, label %1330
  ]

1330:                                             ; preds = %1328
  br label %1541

1331:                                             ; preds = %916
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  store ptr null, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  %1332 = load ptr, ptr %6, align 8, !tbaa !5
  %1333 = call ptr @isSimpleCount(ptr noundef %1332, ptr noundef %21)
  store ptr %1333, ptr %67, align 8, !tbaa !5
  %1334 = icmp ne ptr %1333, null
  br i1 %1334, label %1335, label %1454

1335:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  %1336 = load ptr, ptr %5, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.Parse, ptr %1336, i32 0, i32 0
  %1338 = load ptr, ptr %1337, align 8, !tbaa !16
  %1339 = load ptr, ptr %67, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.Table, ptr %1339, i32 0, i32 20
  %1341 = load ptr, ptr %1340, align 8, !tbaa !114
  %1342 = call i32 @sqlite3SchemaToIndex(ptr noundef %1338, ptr noundef %1341)
  store i32 %1342, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  %1343 = load ptr, ptr %5, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.Parse, ptr %1343, i32 0, i32 17
  %1345 = load i32, ptr %1344, align 4, !tbaa !66
  %1346 = add nsw i32 %1345, 1
  store i32 %1346, ptr %1344, align 4, !tbaa !66
  store i32 %1345, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  store ptr null, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  store ptr null, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  %1347 = load ptr, ptr %67, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.Table, ptr %1347, i32 0, i32 7
  %1349 = load i32, ptr %1348, align 8, !tbaa !115
  store i32 %1349, ptr %73, align 4, !tbaa !9
  %1350 = load ptr, ptr %5, align 8, !tbaa !5
  %1351 = load i32, ptr %68, align 4, !tbaa !9
  call void @sqlite3CodeVerifySchema(ptr noundef %1350, i32 noundef %1351)
  %1352 = load ptr, ptr %5, align 8, !tbaa !5
  %1353 = load i32, ptr %68, align 4, !tbaa !9
  %1354 = load ptr, ptr %67, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.Table, ptr %1354, i32 0, i32 7
  %1356 = load i32, ptr %1355, align 8, !tbaa !115
  %1357 = load ptr, ptr %67, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.Table, ptr %1357, i32 0, i32 0
  %1359 = load ptr, ptr %1358, align 8, !tbaa !45
  call void @sqlite3TableLock(ptr noundef %1352, i32 noundef %1353, i32 noundef %1356, i8 noundef zeroext 0, ptr noundef %1359)
  %1360 = load ptr, ptr %67, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.Table, ptr %1360, i32 0, i32 9
  %1362 = load i32, ptr %1361, align 8, !tbaa !116
  %1363 = and i32 %1362, 32
  %1364 = icmp eq i32 %1363, 0
  br i1 %1364, label %1368, label %1365

1365:                                             ; preds = %1335
  %1366 = load ptr, ptr %67, align 8, !tbaa !5
  %1367 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %1366)
  store ptr %1367, ptr %72, align 8, !tbaa !5
  br label %1368

1368:                                             ; preds = %1365, %1335
  %1369 = load ptr, ptr %67, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.Table, ptr %1369, i32 0, i32 2
  %1371 = load ptr, ptr %1370, align 8, !tbaa !117
  store ptr %1371, ptr %70, align 8, !tbaa !5
  br label %1372

1372:                                             ; preds = %1414, %1368
  %1373 = load ptr, ptr %70, align 8, !tbaa !5
  %1374 = icmp ne ptr %1373, null
  br i1 %1374, label %1375, label %1418

1375:                                             ; preds = %1372
  %1376 = load ptr, ptr %70, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.Index, ptr %1376, i32 0, i32 16
  %1378 = load i8, ptr %1377, align 1
  %1379 = lshr i8 %1378, 2
  %1380 = and i8 %1379, 1
  %1381 = zext i8 %1380 to i32
  %1382 = icmp eq i32 %1381, 0
  br i1 %1382, label %1383, label %1413

1383:                                             ; preds = %1375
  %1384 = load ptr, ptr %70, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.Index, ptr %1384, i32 0, i32 12
  %1386 = load i16, ptr %1385, align 4, !tbaa !118
  %1387 = sext i16 %1386 to i32
  %1388 = load ptr, ptr %67, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.Table, ptr %1388, i32 0, i32 13
  %1390 = load i16, ptr %1389, align 2, !tbaa !120
  %1391 = sext i16 %1390 to i32
  %1392 = icmp slt i32 %1387, %1391
  br i1 %1392, label %1393, label %1413

1393:                                             ; preds = %1383
  %1394 = load ptr, ptr %70, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.Index, ptr %1394, i32 0, i32 9
  %1396 = load ptr, ptr %1395, align 8, !tbaa !121
  %1397 = icmp eq ptr %1396, null
  br i1 %1397, label %1398, label %1413

1398:                                             ; preds = %1393
  %1399 = load ptr, ptr %72, align 8, !tbaa !5
  %1400 = icmp ne ptr %1399, null
  br i1 %1400, label %1401, label %1411

1401:                                             ; preds = %1398
  %1402 = load ptr, ptr %70, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.Index, ptr %1402, i32 0, i32 12
  %1404 = load i16, ptr %1403, align 4, !tbaa !118
  %1405 = sext i16 %1404 to i32
  %1406 = load ptr, ptr %72, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.Index, ptr %1406, i32 0, i32 12
  %1408 = load i16, ptr %1407, align 4, !tbaa !118
  %1409 = sext i16 %1408 to i32
  %1410 = icmp slt i32 %1405, %1409
  br i1 %1410, label %1411, label %1413

1411:                                             ; preds = %1401, %1398
  %1412 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %1412, ptr %72, align 8, !tbaa !5
  br label %1413

1413:                                             ; preds = %1411, %1401, %1393, %1383, %1375
  br label %1414

1414:                                             ; preds = %1413
  %1415 = load ptr, ptr %70, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.Index, ptr %1415, i32 0, i32 5
  %1417 = load ptr, ptr %1416, align 8, !tbaa !122
  store ptr %1417, ptr %70, align 8, !tbaa !5
  br label %1372, !llvm.loop !123

1418:                                             ; preds = %1372
  %1419 = load ptr, ptr %72, align 8, !tbaa !5
  %1420 = icmp ne ptr %1419, null
  br i1 %1420, label %1421, label %1428

1421:                                             ; preds = %1418
  %1422 = load ptr, ptr %72, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.Index, ptr %1422, i32 0, i32 11
  %1424 = load i32, ptr %1423, align 8, !tbaa !124
  store i32 %1424, ptr %73, align 4, !tbaa !9
  %1425 = load ptr, ptr %5, align 8, !tbaa !5
  %1426 = load ptr, ptr %72, align 8, !tbaa !5
  %1427 = call ptr @sqlite3KeyInfoOfIndex(ptr noundef %1425, ptr noundef %1426)
  store ptr %1427, ptr %71, align 8, !tbaa !5
  br label %1428

1428:                                             ; preds = %1421, %1418
  %1429 = load ptr, ptr %11, align 8, !tbaa !5
  %1430 = load i32, ptr %69, align 4, !tbaa !9
  %1431 = load i32, ptr %73, align 4, !tbaa !9
  %1432 = load i32, ptr %68, align 4, !tbaa !9
  %1433 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1429, i32 noundef 105, i32 noundef %1430, i32 noundef %1431, i32 noundef %1432, i32 noundef 1)
  %1434 = load ptr, ptr %71, align 8, !tbaa !5
  %1435 = icmp ne ptr %1434, null
  br i1 %1435, label %1436, label %1439

1436:                                             ; preds = %1428
  %1437 = load ptr, ptr %11, align 8, !tbaa !5
  %1438 = load ptr, ptr %71, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP4(ptr noundef %1437, i32 noundef -1, ptr noundef %1438, i32 noundef -5)
  br label %1439

1439:                                             ; preds = %1436, %1428
  %1440 = load ptr, ptr %11, align 8, !tbaa !5
  %1441 = load i32, ptr %69, align 4, !tbaa !9
  %1442 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 11
  %1443 = load ptr, ptr %1442, align 8, !tbaa !94
  %1444 = getelementptr inbounds %struct.AggInfo_func, ptr %1443, i64 0
  %1445 = getelementptr inbounds %struct.AggInfo_func, ptr %1444, i32 0, i32 2
  %1446 = load i32, ptr %1445, align 8, !tbaa !125
  %1447 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1440, i32 noundef 101, i32 noundef %1441, i32 noundef %1446)
  %1448 = load ptr, ptr %11, align 8, !tbaa !5
  %1449 = load i32, ptr %69, align 4, !tbaa !9
  %1450 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1448, i32 noundef 112, i32 noundef %1449)
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  %1452 = load ptr, ptr %67, align 8, !tbaa !5
  %1453 = load ptr, ptr %72, align 8, !tbaa !5
  call void @explainSimpleCount(ptr noundef %1451, ptr noundef %1452, ptr noundef %1453)
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  br label %1523

1454:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  store ptr null, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #4
  store i8 0, ptr %75, align 1, !tbaa !79
  %1455 = load ptr, ptr %6, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.Select, ptr %1455, i32 0, i32 10
  %1457 = load ptr, ptr %1456, align 8, !tbaa !63
  %1458 = icmp eq ptr %1457, null
  br i1 %1458, label %1459, label %1461

1459:                                             ; preds = %1454
  %1460 = call zeroext i8 @minMaxQuery(ptr noundef %21, ptr noundef %74)
  store i8 %1460, ptr %75, align 1, !tbaa !79
  br label %1461

1461:                                             ; preds = %1459, %1454
  %1462 = load i8, ptr %75, align 1, !tbaa !79
  %1463 = icmp ne i8 %1462, 0
  br i1 %1463, label %1464, label %1493

1464:                                             ; preds = %1461
  %1465 = load ptr, ptr %23, align 8, !tbaa !5
  %1466 = load ptr, ptr %74, align 8, !tbaa !5
  %1467 = call ptr @sqlite3ExprListDup(ptr noundef %1465, ptr noundef %1466, i32 noundef 0)
  store ptr %1467, ptr %74, align 8, !tbaa !5
  %1468 = load ptr, ptr %74, align 8, !tbaa !5
  store ptr %1468, ptr %66, align 8, !tbaa !5
  %1469 = load ptr, ptr %23, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.sqlite3, ptr %1469, i32 0, i32 17
  %1471 = load i8, ptr %1470, align 1, !tbaa !17
  %1472 = icmp ne i8 %1471, 0
  br i1 %1472, label %1492, label %1473

1473:                                             ; preds = %1464
  %1474 = load i8, ptr %75, align 1, !tbaa !79
  %1475 = zext i8 %1474 to i32
  %1476 = icmp ne i32 %1475, 1
  %1477 = zext i1 %1476 to i64
  %1478 = select i1 %1476, i32 1, i32 0
  %1479 = trunc i32 %1478 to i8
  %1480 = load ptr, ptr %74, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.ExprList, ptr %1480, i32 0, i32 1
  %1482 = load ptr, ptr %1481, align 8, !tbaa !78
  %1483 = getelementptr inbounds %struct.ExprList_item, ptr %1482, i64 0
  %1484 = getelementptr inbounds %struct.ExprList_item, ptr %1483, i32 0, i32 3
  store i8 %1479, ptr %1484, align 8, !tbaa !126
  %1485 = load ptr, ptr %74, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ExprList, ptr %1485, i32 0, i32 1
  %1487 = load ptr, ptr %1486, align 8, !tbaa !78
  %1488 = getelementptr inbounds %struct.ExprList_item, ptr %1487, i64 0
  %1489 = getelementptr inbounds %struct.ExprList_item, ptr %1488, i32 0, i32 0
  %1490 = load ptr, ptr %1489, align 8, !tbaa !111
  %1491 = getelementptr inbounds %struct.Expr, ptr %1490, i32 0, i32 0
  store i8 -104, ptr %1491, align 8, !tbaa !127
  br label %1492

1492:                                             ; preds = %1473, %1464
  br label %1493

1493:                                             ; preds = %1492, %1461
  %1494 = load ptr, ptr %5, align 8, !tbaa !5
  call void @resetAccumulator(ptr noundef %1494, ptr noundef %21)
  %1495 = load ptr, ptr %5, align 8, !tbaa !5
  %1496 = load ptr, ptr %14, align 8, !tbaa !5
  %1497 = load ptr, ptr %15, align 8, !tbaa !5
  %1498 = load ptr, ptr %74, align 8, !tbaa !5
  %1499 = load i8, ptr %75, align 1, !tbaa !79
  %1500 = zext i8 %1499 to i16
  %1501 = call ptr @sqlite3WhereBegin(ptr noundef %1495, ptr noundef %1496, ptr noundef %1497, ptr noundef %1498, ptr noundef null, i16 noundef zeroext %1500, i32 noundef 0)
  store ptr %1501, ptr %10, align 8, !tbaa !5
  %1502 = load ptr, ptr %10, align 8, !tbaa !5
  %1503 = icmp eq ptr %1502, null
  br i1 %1503, label %1504, label %1507

1504:                                             ; preds = %1493
  %1505 = load ptr, ptr %23, align 8, !tbaa !5
  %1506 = load ptr, ptr %66, align 8, !tbaa !5
  call void @sqlite3ExprListDelete(ptr noundef %1505, ptr noundef %1506)
  store i32 2, ptr %25, align 4
  br label %1520

1507:                                             ; preds = %1493
  %1508 = load ptr, ptr %5, align 8, !tbaa !5
  call void @updateAccumulator(ptr noundef %1508, ptr noundef %21)
  %1509 = load ptr, ptr %10, align 8, !tbaa !5
  %1510 = call i32 @sqlite3WhereIsOrdered(ptr noundef %1509)
  %1511 = icmp sgt i32 %1510, 0
  br i1 %1511, label %1512, label %1517

1512:                                             ; preds = %1507
  %1513 = load ptr, ptr %11, align 8, !tbaa !5
  %1514 = load ptr, ptr %10, align 8, !tbaa !5
  %1515 = call i32 @sqlite3WhereBreakLabel(ptr noundef %1514)
  %1516 = call i32 @sqlite3VdbeGoto(ptr noundef %1513, i32 noundef %1515)
  br label %1517

1517:                                             ; preds = %1512, %1507
  %1518 = load ptr, ptr %10, align 8, !tbaa !5
  call void @sqlite3WhereEnd(ptr noundef %1518)
  %1519 = load ptr, ptr %5, align 8, !tbaa !5
  call void @finalizeAggFunctions(ptr noundef %1519, ptr noundef %21)
  store i32 0, ptr %25, align 4
  br label %1520

1520:                                             ; preds = %1517, %1504
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  %1521 = load i32, ptr %25, align 4
  switch i32 %1521, label %1538 [
    i32 0, label %1522
  ]

1522:                                             ; preds = %1520
  br label %1523

1523:                                             ; preds = %1522, %1439
  %1524 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  store ptr null, ptr %1524, align 8, !tbaa !30
  %1525 = load ptr, ptr %5, align 8, !tbaa !5
  %1526 = load ptr, ptr %17, align 8, !tbaa !5
  %1527 = load i32, ptr %45, align 4, !tbaa !9
  call void @sqlite3ExprIfFalse(ptr noundef %1525, ptr noundef %1526, i32 noundef %1527, i32 noundef 16)
  %1528 = load ptr, ptr %5, align 8, !tbaa !5
  %1529 = load ptr, ptr %6, align 8, !tbaa !5
  %1530 = load ptr, ptr %6, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.Select, ptr %1530, i32 0, i32 0
  %1532 = load ptr, ptr %1531, align 8, !tbaa !42
  %1533 = load ptr, ptr %7, align 8, !tbaa !5
  %1534 = load i32, ptr %45, align 4, !tbaa !9
  %1535 = load i32, ptr %45, align 4, !tbaa !9
  call void @selectInnerLoop(ptr noundef %1528, ptr noundef %1529, ptr noundef %1532, i32 noundef -1, ptr noundef null, ptr noundef null, ptr noundef %1533, i32 noundef %1534, i32 noundef %1535)
  %1536 = load ptr, ptr %23, align 8, !tbaa !5
  %1537 = load ptr, ptr %66, align 8, !tbaa !5
  call void @sqlite3ExprListDelete(ptr noundef %1536, ptr noundef %1537)
  store i32 0, ptr %25, align 4
  br label %1538

1538:                                             ; preds = %1523, %1520
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  %1539 = load i32, ptr %25, align 4
  switch i32 %1539, label %1544 [
    i32 0, label %1540
  ]

1540:                                             ; preds = %1538
  br label %1541

1541:                                             ; preds = %1540, %1330
  %1542 = load ptr, ptr %11, align 8, !tbaa !5
  %1543 = load i32, ptr %45, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1542, i32 noundef %1543)
  store i32 0, ptr %25, align 4
  br label %1544

1544:                                             ; preds = %1541, %1538, %1328, %915
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #4
  %1545 = load i32, ptr %25, align 4
  switch i32 %1545, label %1603 [
    i32 0, label %1546
    i32 2, label %1579
  ]

1546:                                             ; preds = %1544
  br label %1547

1547:                                             ; preds = %1546, %776
  %1548 = getelementptr inbounds %struct.DistinctCtx, ptr %19, i32 0, i32 1
  %1549 = load i8, ptr %1548, align 1, !tbaa !74
  %1550 = zext i8 %1549 to i32
  %1551 = icmp eq i32 %1550, 3
  br i1 %1551, label %1552, label %1554

1552:                                             ; preds = %1547
  %1553 = load ptr, ptr %5, align 8, !tbaa !5
  call void @explainTempTable(ptr noundef %1553, ptr noundef @.str.10)
  br label %1554

1554:                                             ; preds = %1552, %1547
  %1555 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 0
  %1556 = load ptr, ptr %1555, align 8, !tbaa !30
  %1557 = icmp ne ptr %1556, null
  br i1 %1557, label %1558, label %1571

1558:                                             ; preds = %1554
  %1559 = load ptr, ptr %5, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.SortCtx, ptr %20, i32 0, i32 1
  %1561 = load i32, ptr %1560, align 8, !tbaa !76
  %1562 = icmp sgt i32 %1561, 0
  %1563 = zext i1 %1562 to i64
  %1564 = select i1 %1562, ptr @.str.12, ptr @.str.13
  call void @explainTempTable(ptr noundef %1559, ptr noundef %1564)
  %1565 = load ptr, ptr %5, align 8, !tbaa !5
  %1566 = load ptr, ptr %6, align 8, !tbaa !5
  %1567 = load ptr, ptr %13, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.ExprList, ptr %1567, i32 0, i32 0
  %1569 = load i32, ptr %1568, align 8, !tbaa !43
  %1570 = load ptr, ptr %7, align 8, !tbaa !5
  call void @generateSortTail(ptr noundef %1565, ptr noundef %1566, ptr noundef %20, i32 noundef %1569, ptr noundef %1570)
  br label %1571

1571:                                             ; preds = %1558, %1554
  %1572 = load ptr, ptr %11, align 8, !tbaa !5
  %1573 = load i32, ptr %22, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1572, i32 noundef %1573)
  %1574 = load ptr, ptr %5, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.Parse, ptr %1574, i32 0, i32 16
  %1576 = load i32, ptr %1575, align 8, !tbaa !24
  %1577 = icmp sgt i32 %1576, 0
  %1578 = zext i1 %1577 to i32
  store i32 %1578, ptr %18, align 4, !tbaa !9
  br label %1579

1579:                                             ; preds = %1571, %1544, %774, %507, %260, %249, %144
  %1580 = load i32, ptr %24, align 4, !tbaa !9
  %1581 = load ptr, ptr %5, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.Parse, ptr %1581, i32 0, i32 56
  store i32 %1580, ptr %1582, align 8, !tbaa !11
  %1583 = load i32, ptr %18, align 4, !tbaa !9
  %1584 = icmp eq i32 %1583, 0
  br i1 %1584, label %1585, label %1595

1585:                                             ; preds = %1579
  %1586 = load ptr, ptr %7, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.SelectDest, ptr %1586, i32 0, i32 0
  %1588 = load i8, ptr %1587, align 8, !tbaa !25
  %1589 = zext i8 %1588 to i32
  %1590 = icmp eq i32 %1589, 9
  br i1 %1590, label %1591, label %1595

1591:                                             ; preds = %1585
  %1592 = load ptr, ptr %5, align 8, !tbaa !5
  %1593 = load ptr, ptr %14, align 8, !tbaa !5
  %1594 = load ptr, ptr %13, align 8, !tbaa !5
  call void @generateColumnNames(ptr noundef %1592, ptr noundef %1593, ptr noundef %1594)
  br label %1595

1595:                                             ; preds = %1591, %1585, %1579
  %1596 = load ptr, ptr %23, align 8, !tbaa !5
  %1597 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 8
  %1598 = load ptr, ptr %1597, align 8, !tbaa !100
  call void @sqlite3DbFree(ptr noundef %1596, ptr noundef %1598)
  %1599 = load ptr, ptr %23, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.AggInfo, ptr %21, i32 0, i32 11
  %1601 = load ptr, ptr %1600, align 8, !tbaa !94
  call void @sqlite3DbFree(ptr noundef %1599, ptr noundef %1601)
  %1602 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %1602, ptr %4, align 4
  store i32 1, ptr %25, align 4
  br label %1603

1603:                                             ; preds = %1595, %1544, %774, %507, %266, %249, %106, %101
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  %1604 = load i32, ptr %4, align 4
  ret i32 %1604
}

declare i32 @sqlite3AuthCheck(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @sqlite3ExprListDelete(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @flattenSubquery(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @multiSelect(ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @sqlite3VdbeAddOp2(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare i32 @sqlite3SelectExprHeight(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pushDownWhereTerms(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #0

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) #2

declare i32 @sqlite3VdbeAddOp3(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @sqlite3VdbeEndCoroutine(ptr noundef, i32 noundef) #2

declare void @sqlite3VdbeJumpHere(ptr noundef, i32 noundef) #2

declare void @sqlite3ClearTempRegCache(ptr noundef) #2

declare i32 @sqlite3VdbeAddOp0(ptr noundef, i32 noundef) #2

declare i32 @sqlite3VdbeAddOp1(ptr noundef, i32 noundef, i32 noundef) #2

declare void @sqlite3VdbeChangeP1(ptr noundef, i32 noundef, i32 noundef) #2

declare i32 @sqlite3ExprListCompare(ptr noundef, ptr noundef, i32 noundef) #2

declare ptr @sqlite3ExprListDup(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden ptr @keyInfoFromExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #0

declare i32 @sqlite3VdbeAddOp4(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #2

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @computeLimitRegisters(ptr noundef, ptr noundef, i32 noundef) #0

declare void @sqlite3VdbeChangeOpcode(ptr noundef, i32 noundef, i8 noundef zeroext) #2

declare void @sqlite3VdbeChangeP5(ptr noundef, i16 noundef zeroext) #2

declare ptr @sqlite3WhereBegin(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i16 noundef zeroext, i32 noundef) #2

declare signext i16 @sqlite3WhereOutputRowCount(ptr noundef) #2

declare i32 @sqlite3WhereIsDistinct(ptr noundef) #2

declare i32 @sqlite3WhereIsOrdered(ptr noundef) #2

declare i32 @sqlite3WhereOrderedInnerLoop(ptr noundef) #2

declare i32 @sqlite3VdbeChangeToNoop(ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @selectInnerLoop(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #0

declare i32 @sqlite3WhereContinueLabel(ptr noundef) #2

declare i32 @sqlite3WhereBreakLabel(ptr noundef) #2

declare void @sqlite3WhereEnd(ptr noundef) #2

declare void @sqlite3ExprAnalyzeAggList(ptr noundef, ptr noundef) #2

declare void @sqlite3ExprAnalyzeAggregates(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @explainTempTable(ptr noundef, ptr noundef) #0

declare i32 @sqlite3GetTempRange(ptr noundef, i32 noundef) #2

declare void @sqlite3ExprCacheClear(ptr noundef) #2

declare i32 @sqlite3ExprCodeExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #2

declare void @sqlite3ExprCodeGetColumnToReg(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare i32 @sqlite3GetTempReg(ptr noundef) #2

declare void @sqlite3ReleaseTempReg(ptr noundef, i32 noundef) #2

declare void @sqlite3ReleaseTempRange(ptr noundef, i32 noundef, i32 noundef) #2

declare i32 @sqlite3WhereIsSorted(ptr noundef) #2

declare void @sqlite3ExprCode(ptr noundef, ptr noundef, i32 noundef) #2

declare void @sqlite3ExprCodeMove(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @updateAccumulator(ptr noundef, ptr noundef) #0

declare i32 @sqlite3VdbeGoto(ptr noundef, i32 noundef) #2

declare void @sqlite3VdbeResolveLabel(ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @finalizeAggFunctions(ptr noundef, ptr noundef) #0

declare void @sqlite3ExprIfFalse(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @resetAccumulator(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden ptr @isSimpleCount(ptr noundef, ptr noundef) #0

declare i32 @sqlite3SchemaToIndex(ptr noundef, ptr noundef) #2

declare void @sqlite3CodeVerifySchema(ptr noundef, i32 noundef) #2

declare void @sqlite3TableLock(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, ptr noundef) #2

declare ptr @sqlite3PrimaryKeyIndex(ptr noundef) #2

declare ptr @sqlite3KeyInfoOfIndex(ptr noundef, ptr noundef) #2

declare i32 @sqlite3VdbeAddOp4Int(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @sqlite3VdbeChangeP4(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @explainSimpleCount(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @minMaxQuery(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @generateSortTail(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @generateColumnNames(ptr noundef, ptr noundef, ptr noundef) #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 480}
!12 = !{!"Parse", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 30, !7, i64 31, !7, i64 32, !7, i64 33, !7, i64 34, !7, i64 35, !7, i64 36, !7, i64 37, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !6, i64 88, !6, i64 96, !13, i64 104, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !7, i64 192, !7, i64 193, !7, i64 194, !7, i64 196, !7, i64 396, !13, i64 432, !13, i64 448, !14, i64 464, !7, i64 466, !7, i64 467, !7, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !13, i64 536, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584}
!13 = !{!"Token", !6, i64 0, !10, i64 8}
!14 = !{!"short", !7, i64 0}
!15 = !{!12, !10, i64 484}
!16 = !{!12, !6, i64 0}
!17 = !{!18, !7, i64 85}
!18 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !19, i64 48, !19, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !14, i64 80, !7, i64 82, !7, i64 83, !7, i64 84, !7, i64 85, !7, i64 86, !7, i64 87, !7, i64 88, !7, i64 89, !7, i64 90, !7, i64 91, !7, i64 92, !7, i64 93, !7, i64 94, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !7, i64 112, !10, i64 160, !20, i64 164, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !7, i64 336, !21, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !22, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !22, i64 488, !22, i64 512, !23, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !19, i64 648, !19, i64 656, !6, i64 664}
!19 = !{!"long long", !7, i64 0}
!20 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!21 = !{!"Lookaside", !10, i64 0, !14, i64 4, !7, i64 6, !10, i64 8, !10, i64 12, !7, i64 16, !6, i64 32, !6, i64 40, !6, i64 48}
!22 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!23 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!24 = !{!12, !10, i64 48}
!25 = !{!26, !7, i64 0}
!26 = !{!"SelectDest", !7, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32}
!27 = !{!28, !6, i64 64}
!28 = !{!"Select", !6, i64 0, !7, i64 8, !14, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104}
!29 = !{!28, !10, i64 12}
!30 = !{!31, !6, i64 0}
!31 = !{!"SortCtx", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !7, i64 32, !7, i64 33}
!32 = !{!28, !6, i64 32}
!33 = !{!28, !6, i64 72}
!34 = !{!35, !10, i64 0}
!35 = !{!"SrcList", !10, i64 0, !10, i64 4, !7, i64 8}
!36 = !{!37, !6, i64 40}
!37 = !{!"SrcList_item", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !38, i64 60, !7, i64 64, !10, i64 68, !6, i64 72, !6, i64 80, !19, i64 88, !7, i64 96, !6, i64 104}
!38 = !{!"", !7, i64 0, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1}
!39 = !{!37, !6, i64 32}
!40 = !{!41, !14, i64 70}
!41 = !{!"Table", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !14, i64 68, !14, i64 70, !14, i64 72, !14, i64 74, !7, i64 76, !10, i64 80, !10, i64 84, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!42 = !{!28, !6, i64 0}
!43 = !{!44, !10, i64 0}
!44 = !{!"ExprList", !10, i64 0, !6, i64 8}
!45 = !{!41, !6, i64 0}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!37, !10, i64 48}
!49 = !{!37, !10, i64 52}
!50 = !{!12, !10, i64 476}
!51 = !{!37, !7, i64 60}
!52 = !{!28, !6, i64 40}
!53 = !{!37, !10, i64 68}
!54 = !{!18, !14, i64 80}
!55 = !{!12, !10, i64 56}
!56 = !{!37, !7, i64 64}
!57 = !{!28, !14, i64 10}
!58 = !{!41, !14, i64 72}
!59 = !{!26, !10, i64 20}
!60 = !{!37, !10, i64 56}
!61 = distinct !{!61, !47}
!62 = !{!28, !6, i64 48}
!63 = !{!28, !6, i64 56}
!64 = !{!65, !7, i64 0}
!65 = !{!"DistinctCtx", !7, i64 0, !7, i64 1, !10, i64 4, !10, i64 8}
!66 = !{!12, !10, i64 52}
!67 = !{!31, !10, i64 12}
!68 = !{!31, !10, i64 24}
!69 = !{!26, !10, i64 16}
!70 = !{!28, !10, i64 16}
!71 = !{!31, !7, i64 32}
!72 = !{!65, !10, i64 4}
!73 = !{!65, !10, i64 8}
!74 = !{!65, !7, i64 1}
!75 = !{!14, !14, i64 0}
!76 = !{!31, !10, i64 8}
!77 = !{!31, !7, i64 33}
!78 = !{!44, !6, i64 8}
!79 = !{!7, !7, i64 0}
!80 = distinct !{!80, !47}
!81 = distinct !{!81, !47}
!82 = !{!83, !6, i64 0}
!83 = !{!"NameContext", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !14, i64 48}
!84 = !{!83, !6, i64 8}
!85 = !{!83, !6, i64 24}
!86 = !{!87, !10, i64 16}
!87 = !{!"AggInfo", !7, i64 0, !7, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !6, i64 48, !10, i64 56}
!88 = !{!87, !10, i64 12}
!89 = !{!87, !6, i64 24}
!90 = !{!87, !10, i64 40}
!91 = !{!87, !10, i64 44}
!92 = !{!87, !10, i64 56}
!93 = !{!83, !14, i64 48}
!94 = !{!87, !6, i64 48}
!95 = !{!96, !6, i64 0}
!96 = !{!"AggInfo_func", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20}
!97 = distinct !{!97, !47}
!98 = !{!87, !10, i64 20}
!99 = !{!87, !10, i64 4}
!100 = !{!87, !6, i64 32}
!101 = !{!102, !10, i64 16}
!102 = !{!"AggInfo_col", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24}
!103 = distinct !{!103, !47}
!104 = !{!102, !6, i64 0}
!105 = !{!102, !10, i64 12}
!106 = !{!102, !10, i64 8}
!107 = distinct !{!107, !47}
!108 = !{!87, !10, i64 8}
!109 = !{!87, !7, i64 1}
!110 = !{!87, !7, i64 0}
!111 = !{!112, !6, i64 0}
!112 = !{!"ExprList_item", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !10, i64 25, !10, i64 25, !10, i64 25, !7, i64 28}
!113 = distinct !{!113, !47}
!114 = !{!41, !6, i64 112}
!115 = !{!41, !10, i64 56}
!116 = !{!41, !10, i64 64}
!117 = !{!41, !6, i64 16}
!118 = !{!119, !14, i64 92}
!119 = !{!"Index", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !14, i64 92, !14, i64 94, !14, i64 96, !7, i64 98, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99}
!120 = !{!41, !14, i64 74}
!121 = !{!119, !6, i64 72}
!122 = !{!119, !6, i64 40}
!123 = distinct !{!123, !47}
!124 = !{!119, !10, i64 88}
!125 = !{!96, !10, i64 16}
!126 = !{!112, !7, i64 24}
!127 = !{!128, !7, i64 0}
!128 = !{!"Expr", !7, i64 0, !7, i64 1, !10, i64 4, !7, i64 8, !6, i64 16, !6, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !14, i64 48, !14, i64 50, !14, i64 52, !7, i64 54, !6, i64 56, !6, i64 64}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.DistinctCtx = type { i8, i8, i32, i32 }
%struct.SortCtx = type { ptr, i32, i32, i32, i32, i32, i32, i8, i8 }
%struct.AggInfo = type { i8, i8, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, ptr, i32 }
%struct.SelectDest = type { i8, ptr, i32, i32, i32, ptr }
%struct.NameContext = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i16 }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon.4, i8, i32, ptr, ptr, i64, %union.anon.5, ptr }
%struct.anon.4 = type { i8, i8, [2 x i8] }
%union.anon.5 = type { ptr }
%struct.AggInfo_func = type { ptr, ptr, i32, i32 }
%struct.AggInfo_col = type { ptr, i32, i32, i32, i32, ptr }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.0 }
%union.anon.0 = type { i32 }

@.str.9 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3SelectDestInit(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare void @sqlite3ErrorMsg(ptr noundef, ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

declare void @sqlite3DbFree(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3KeyInfoRef(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3SelectPrep(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3GetVdbe(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3Select(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 {
  %4 = alloca %struct.DistinctCtx, align 4
  %5 = alloca %struct.SortCtx, align 8
  %6 = alloca %struct.AggInfo, align 8
  %7 = alloca %struct.SelectDest, align 8
  %8 = alloca %struct.NameContext, align 8
  %9 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #4
  %10 = getelementptr inbounds i8, ptr %0, i64 480
  %11 = load i32, ptr %10, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %0, i64 484
  %13 = load i32, ptr %12, align 4, !tbaa !13
  %14 = add nsw i32 %13, 1
  store i32 %14, ptr %12, align 4, !tbaa !13
  store i32 %13, ptr %10, align 8, !tbaa !5
  %15 = load ptr, ptr %0, align 8, !tbaa !14
  %16 = icmp eq ptr %1, null
  br i1 %16, label %.loopexit, label %17

17:                                               ; preds = %3
  %18 = getelementptr inbounds i8, ptr %15, i64 85
  %19 = load i8, ptr %18, align 1, !tbaa !15
  %.not = icmp eq i8 %19, 0
  br i1 %.not, label %20, label %.loopexit

20:                                               ; preds = %17
  %21 = getelementptr inbounds i8, ptr %0, i64 48
  %22 = load i32, ptr %21, align 8, !tbaa !22
  %.not575 = icmp eq i32 %22, 0
  br i1 %.not575, label %23, label %.loopexit

23:                                               ; preds = %20
  %24 = tail call i32 @sqlite3AuthCheck(ptr noundef nonnull %0, i32 noundef 21, ptr noundef null, ptr noundef null, ptr noundef null) #4
  %.not576 = icmp eq i32 %24, 0
  br i1 %.not576, label %25, label %.loopexit

25:                                               ; preds = %23
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  %26 = load i8, ptr %2, align 8, !tbaa !23
  %27 = icmp ult i8 %26, 9
  br i1 %27, label %28, label %34

28:                                               ; preds = %25
  %29 = getelementptr inbounds i8, ptr %1, i64 64
  %30 = load ptr, ptr %29, align 8, !tbaa !25
  tail call void @sqlite3ExprListDelete(ptr noundef nonnull %15, ptr noundef %30) #4
  store ptr null, ptr %29, align 8, !tbaa !25
  %31 = getelementptr inbounds i8, ptr %1, i64 12
  %32 = load i32, ptr %31, align 4, !tbaa !27
  %33 = and i32 %32, -2
  store i32 %33, ptr %31, align 4, !tbaa !27
  br label %34

34:                                               ; preds = %28, %25
  tail call void @sqlite3SelectPrep(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef null)
  %35 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %35, i8 0, i64 32, i1 false)
  %36 = getelementptr inbounds i8, ptr %1, i64 64
  %37 = load ptr, ptr %36, align 8, !tbaa !25
  store ptr %37, ptr %5, align 8, !tbaa !28
  %38 = getelementptr inbounds i8, ptr %1, i64 32
  %39 = load ptr, ptr %38, align 8, !tbaa !30
  %40 = load i32, ptr %21, align 8, !tbaa !22
  %.not577 = icmp eq i32 %40, 0
  br i1 %.not577, label %41, label %.thread651

41:                                               ; preds = %34
  %42 = load i8, ptr %18, align 1, !tbaa !15
  %.not578 = icmp eq i8 %42, 0
  br i1 %.not578, label %43, label %.thread651

43:                                               ; preds = %41
  %44 = getelementptr inbounds i8, ptr %1, i64 12
  %45 = load i32, ptr %44, align 4, !tbaa !27
  %46 = lshr i32 %45, 3
  %.lobit = and i32 %46, 1
  %47 = getelementptr inbounds i8, ptr %1, i64 72
  %48 = load ptr, ptr %47, align 8, !tbaa !31
  %.not579674 = icmp eq ptr %48, null
  br i1 %.not579674, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %43, %86
  %.0520677 = phi i32 [ %88, %86 ], [ 0, %43 ]
  %.0530676 = phi i32 [ %.3533.ph, %86 ], [ %.lobit, %43 ]
  %.0537675 = phi ptr [ %.1538.ph, %86 ], [ %39, %43 ]
  %49 = phi ptr [ %87, %86 ], [ %37, %43 ]
  %50 = load i32, ptr %.0537675, align 8, !tbaa !32
  %51 = icmp slt i32 %.0520677, %50
  br i1 %51, label %52, label %.critedge

52:                                               ; preds = %.lr.ph
  %53 = getelementptr inbounds i8, ptr %.0537675, i64 8
  %54 = sext i32 %.0520677 to i64
  %55 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %53, i64 0, i64 %54
  %56 = getelementptr inbounds i8, ptr %55, i64 40
  %57 = load ptr, ptr %56, align 8, !tbaa !34
  %58 = icmp eq ptr %57, null
  br i1 %58, label %86, label %59

59:                                               ; preds = %52
  %60 = getelementptr inbounds i8, ptr %55, i64 32
  %61 = load ptr, ptr %60, align 8, !tbaa !37
  %62 = getelementptr inbounds i8, ptr %61, i64 70
  %63 = load i16, ptr %62, align 2, !tbaa !38
  %64 = sext i16 %63 to i32
  %65 = load ptr, ptr %57, align 8, !tbaa !40
  %66 = load i32, ptr %65, align 8, !tbaa !41
  %.not580 = icmp eq i32 %66, %64
  br i1 %.not580, label %69, label %67

67:                                               ; preds = %59
  store ptr %49, ptr %5, align 8, !tbaa !28
  %68 = load ptr, ptr %61, align 8, !tbaa !43
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.9, i32 noundef %64, ptr noundef %68, i32 noundef %66) #4
  br label %.thread651

69:                                               ; preds = %59
  %70 = getelementptr inbounds i8, ptr %57, i64 12
  %71 = load i32, ptr %70, align 4, !tbaa !27
  %72 = and i32 %71, 8
  %.lobit581 = lshr exact i32 %72, 3
  %73 = tail call i32 @flattenSubquery(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %.0520677, i32 noundef %.0530676, i32 noundef %.lobit581)
  %.not583 = icmp eq i32 %73, 0
  br i1 %.not583, label %78, label %74

74:                                               ; preds = %69
  %.not582 = icmp eq i32 %72, 0
  br i1 %.not582, label %78, label %75

75:                                               ; preds = %74
  %76 = load i32, ptr %44, align 4, !tbaa !27
  %77 = or i32 %76, 8
  store i32 %77, ptr %44, align 4, !tbaa !27
  br label %78

78:                                               ; preds = %74, %75, %69
  %.2532 = phi i32 [ %.0530676, %69 ], [ 1, %75 ], [ %.0530676, %74 ]
  %.1521 = phi i32 [ %.0520677, %69 ], [ -1, %75 ], [ -1, %74 ]
  %79 = load ptr, ptr %38, align 8, !tbaa !30
  %80 = load i8, ptr %18, align 1, !tbaa !15
  %.not584 = icmp eq i8 %80, 0
  br i1 %.not584, label %81, label %.thread651.loopexit657

81:                                               ; preds = %78
  %82 = load i8, ptr %2, align 8, !tbaa !23
  %83 = icmp ult i8 %82, 9
  br i1 %83, label %86, label %84

84:                                               ; preds = %81
  %85 = load ptr, ptr %36, align 8, !tbaa !25
  br label %86

86:                                               ; preds = %52, %84, %81
  %87 = phi ptr [ %49, %81 ], [ %85, %84 ], [ %49, %52 ]
  %.1538.ph = phi ptr [ %79, %81 ], [ %79, %84 ], [ %.0537675, %52 ]
  %.3533.ph = phi i32 [ %.2532, %81 ], [ %.2532, %84 ], [ %.0530676, %52 ]
  %.2522.ph = phi i32 [ %.1521, %81 ], [ %.1521, %84 ], [ %.0520677, %52 ]
  %88 = add nsw i32 %.2522.ph, 1
  %89 = load ptr, ptr %47, align 8, !tbaa !31
  %.not579 = icmp eq ptr %89, null
  br i1 %.not579, label %.lr.ph, label %.critedge, !llvm.loop !44

.critedge:                                        ; preds = %.lr.ph, %86, %43
  %.lcssa671 = phi ptr [ %37, %43 ], [ %87, %86 ], [ %49, %.lr.ph ]
  %.0537.lcssa = phi ptr [ %39, %43 ], [ %.1538.ph, %86 ], [ %.0537675, %.lr.ph ]
  %.0530.lcssa = phi i32 [ %.lobit, %43 ], [ %.3533.ph, %86 ], [ %.0530676, %.lr.ph ]
  store ptr %.lcssa671, ptr %5, align 8, !tbaa !28
  %90 = tail call ptr @sqlite3GetVdbe(ptr noundef nonnull %0)
  %91 = icmp eq ptr %90, null
  br i1 %91, label %.thread651, label %92

92:                                               ; preds = %.critedge
  %93 = load ptr, ptr %47, align 8, !tbaa !31
  %.not585 = icmp eq ptr %93, null
  br i1 %.not585, label %.preheader, label %103

.preheader:                                       ; preds = %92
  %94 = load i32, ptr %.0537.lcssa, align 8, !tbaa !32
  %95 = icmp sgt i32 %94, 0
  br i1 %95, label %.lr.ph685, label %._crit_edge

.lr.ph685:                                        ; preds = %.preheader
  %96 = getelementptr inbounds i8, ptr %.0537.lcssa, i64 8
  %97 = getelementptr inbounds i8, ptr %0, i64 476
  %98 = getelementptr inbounds i8, ptr %1, i64 40
  %99 = getelementptr inbounds i8, ptr %.0537.lcssa, i64 180
  %100 = getelementptr inbounds i8, ptr %15, i64 80
  %101 = getelementptr inbounds i8, ptr %0, i64 56
  %102 = getelementptr inbounds i8, ptr %7, i64 20
  br label %105

103:                                              ; preds = %92
  %104 = tail call i32 @multiSelect(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2)
  store i32 %11, ptr %10, align 8, !tbaa !5
  br label %.loopexit

105:                                              ; preds = %.lr.ph685, %208
  %indvars.iv = phi i64 [ 0, %.lr.ph685 ], [ %indvars.iv.next, %208 ]
  %106 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %96, i64 0, i64 %indvars.iv
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #4
  %107 = getelementptr inbounds i8, ptr %106, i64 40
  %108 = load ptr, ptr %107, align 8, !tbaa !34
  %109 = icmp eq ptr %108, null
  br i1 %109, label %208, label %110

110:                                              ; preds = %105
  %111 = getelementptr inbounds i8, ptr %106, i64 48
  %112 = load i32, ptr %111, align 8, !tbaa !46
  %.not614 = icmp eq i32 %112, 0
  br i1 %.not614, label %122, label %113

113:                                              ; preds = %110
  %114 = getelementptr inbounds i8, ptr %106, i64 61
  %115 = load i8, ptr %114, align 1
  %116 = and i8 %115, 16
  %117 = icmp eq i8 %116, 0
  br i1 %117, label %118, label %208

118:                                              ; preds = %113
  %119 = getelementptr inbounds i8, ptr %106, i64 52
  %120 = load i32, ptr %119, align 4, !tbaa !47
  %121 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 14, i32 noundef %120, i32 noundef %112) #4
  br label %208

122:                                              ; preds = %110
  %123 = call i32 @sqlite3SelectExprHeight(ptr noundef %1) #4
  %124 = load i32, ptr %97, align 4, !tbaa !48
  %125 = add nsw i32 %124, %123
  store i32 %125, ptr %97, align 4, !tbaa !48
  %126 = getelementptr inbounds i8, ptr %106, i64 60
  %127 = load i8, ptr %126, align 4, !tbaa !49
  %128 = and i8 %127, 32
  %129 = icmp eq i8 %128, 0
  br i1 %129, label %130, label %135

130:                                              ; preds = %122
  %131 = load ptr, ptr %98, align 8, !tbaa !50
  %132 = getelementptr inbounds i8, ptr %106, i64 68
  %133 = load i32, ptr %132, align 4, !tbaa !51
  %134 = call i32 @pushDownWhereTerms(ptr noundef nonnull %0, ptr noundef nonnull %108, ptr noundef %131, i32 noundef %133)
  br label %135

135:                                              ; preds = %130, %122
  %136 = icmp eq i64 %indvars.iv, 0
  br i1 %136, label %137, label %174

137:                                              ; preds = %135
  %138 = load i32, ptr %.0537.lcssa, align 8, !tbaa !32
  %139 = icmp eq i32 %138, 1
  br i1 %139, label %143, label %140

140:                                              ; preds = %137
  %141 = load i8, ptr %99, align 4, !tbaa !49
  %142 = and i8 %141, 10
  %.not615 = icmp eq i8 %142, 0
  br i1 %.not615, label %174, label %143

143:                                              ; preds = %140, %137
  %144 = load i32, ptr %44, align 4, !tbaa !27
  %145 = and i32 %144, 2
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %147, label %174

147:                                              ; preds = %143
  %148 = load i16, ptr %100, align 8, !tbaa !52
  %149 = and i16 %148, 256
  %150 = icmp eq i16 %149, 0
  br i1 %150, label %151, label %174

151:                                              ; preds = %147
  %152 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %90) #4
  %153 = add nsw i32 %152, 1
  %154 = load i32, ptr %101, align 8, !tbaa !53
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %101, align 8, !tbaa !53
  %156 = getelementptr inbounds i8, ptr %106, i64 52
  store i32 %155, ptr %156, align 4, !tbaa !47
  %157 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 15, i32 noundef %155, i32 noundef 0, i32 noundef %153) #4
  store i32 %153, ptr %111, align 8, !tbaa !46
  %158 = load i32, ptr %156, align 4, !tbaa !47
  call void @sqlite3SelectDestInit(ptr noundef nonnull %7, i32 noundef 13, i32 noundef %158)
  %159 = load i32, ptr %12, align 4, !tbaa !13
  %160 = trunc i32 %159 to i8
  %161 = getelementptr inbounds i8, ptr %106, i64 64
  store i8 %160, ptr %161, align 8, !tbaa !54
  %162 = call i32 @sqlite3Select(ptr noundef nonnull %0, ptr noundef nonnull %108, ptr noundef nonnull %7)
  %163 = getelementptr inbounds i8, ptr %108, i64 10
  %164 = load i16, ptr %163, align 2, !tbaa !55
  %165 = getelementptr inbounds i8, ptr %106, i64 32
  %166 = load ptr, ptr %165, align 8, !tbaa !37
  %167 = getelementptr inbounds i8, ptr %166, i64 72
  store i16 %164, ptr %167, align 8, !tbaa !56
  %168 = getelementptr inbounds i8, ptr %106, i64 61
  %169 = load i8, ptr %168, align 1
  %170 = or i8 %169, 16
  store i8 %170, ptr %168, align 1
  %171 = load i32, ptr %102, align 4, !tbaa !57
  %172 = getelementptr inbounds i8, ptr %106, i64 56
  store i32 %171, ptr %172, align 8, !tbaa !58
  %173 = load i32, ptr %156, align 4, !tbaa !47
  call void @sqlite3VdbeEndCoroutine(ptr noundef %90, i32 noundef %173) #4
  call void @sqlite3VdbeJumpHere(ptr noundef %90, i32 noundef %152) #4
  br label %202

174:                                              ; preds = %147, %143, %140, %135
  %175 = load i32, ptr %101, align 8, !tbaa !53
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %101, align 8, !tbaa !53
  %177 = getelementptr inbounds i8, ptr %106, i64 52
  store i32 %176, ptr %177, align 4, !tbaa !47
  %178 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 77, i32 noundef 0, i32 noundef %176) #4
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %111, align 8, !tbaa !46
  %180 = getelementptr inbounds i8, ptr %106, i64 61
  %181 = load i8, ptr %180, align 1
  %182 = and i8 %181, 8
  %183 = icmp eq i8 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %174
  %185 = call i32 @sqlite3VdbeAddOp0(ptr noundef %90, i32 noundef 20) #4
  br label %186

186:                                              ; preds = %174, %184
  %.0549 = phi i32 [ %185, %184 ], [ 0, %174 ]
  %187 = getelementptr inbounds i8, ptr %106, i64 68
  %188 = load i32, ptr %187, align 4, !tbaa !51
  call void @sqlite3SelectDestInit(ptr noundef nonnull %7, i32 noundef 12, i32 noundef %188)
  %189 = load i32, ptr %12, align 4, !tbaa !13
  %190 = trunc i32 %189 to i8
  %191 = getelementptr inbounds i8, ptr %106, i64 64
  store i8 %190, ptr %191, align 8, !tbaa !54
  %192 = call i32 @sqlite3Select(ptr noundef nonnull %0, ptr noundef nonnull %108, ptr noundef nonnull %7)
  %193 = getelementptr inbounds i8, ptr %108, i64 10
  %194 = load i16, ptr %193, align 2, !tbaa !55
  %195 = getelementptr inbounds i8, ptr %106, i64 32
  %196 = load ptr, ptr %195, align 8, !tbaa !37
  %197 = getelementptr inbounds i8, ptr %196, i64 72
  store i16 %194, ptr %197, align 8, !tbaa !56
  %.not616 = icmp eq i32 %.0549, 0
  br i1 %.not616, label %199, label %198

198:                                              ; preds = %186
  call void @sqlite3VdbeJumpHere(ptr noundef %90, i32 noundef %.0549) #4
  br label %199

199:                                              ; preds = %198, %186
  %200 = load i32, ptr %177, align 4, !tbaa !47
  %201 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 73, i32 noundef %200) #4
  call void @sqlite3VdbeChangeP1(ptr noundef %90, i32 noundef %178, i32 noundef %201) #4
  br label %202

202:                                              ; preds = %199, %151
  call void @sqlite3ClearTempRegCache(ptr noundef nonnull %0) #4
  %203 = load i8, ptr %18, align 1, !tbaa !15
  %.not617 = icmp eq i8 %203, 0
  br i1 %.not617, label %204, label %.thread651.loopexit

204:                                              ; preds = %202
  %205 = call i32 @sqlite3SelectExprHeight(ptr noundef %1) #4
  %206 = load i32, ptr %97, align 4, !tbaa !48
  %207 = sub nsw i32 %206, %205
  store i32 %207, ptr %97, align 4, !tbaa !48
  br label %208

208:                                              ; preds = %204, %105, %118, %113
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %209 = load i32, ptr %.0537.lcssa, align 8, !tbaa !32
  %210 = sext i32 %209 to i64
  %211 = icmp slt i64 %indvars.iv.next, %210
  br i1 %211, label %105, label %._crit_edge, !llvm.loop !59

._crit_edge:                                      ; preds = %208, %.preheader
  %212 = load ptr, ptr %1, align 8, !tbaa !40
  %213 = getelementptr inbounds i8, ptr %1, i64 40
  %214 = load ptr, ptr %213, align 8, !tbaa !50
  %215 = getelementptr inbounds i8, ptr %1, i64 48
  %216 = load ptr, ptr %215, align 8, !tbaa !60
  %217 = getelementptr inbounds i8, ptr %1, i64 56
  %218 = load ptr, ptr %217, align 8, !tbaa !61
  %219 = load i32, ptr %44, align 4, !tbaa !27
  %220 = trunc i32 %219 to i8
  %221 = and i8 %220, 1
  store i8 %221, ptr %4, align 4, !tbaa !62
  %222 = and i32 %219, 9
  %223 = icmp eq i32 %222, 1
  br i1 %223, label %224, label %232

224:                                              ; preds = %._crit_edge
  %225 = load ptr, ptr %5, align 8, !tbaa !28
  %226 = call i32 @sqlite3ExprListCompare(ptr noundef %225, ptr noundef %212, i32 noundef -1) #4
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %232

228:                                              ; preds = %224
  %229 = load i32, ptr %44, align 4, !tbaa !27
  %230 = and i32 %229, -2
  store i32 %230, ptr %44, align 4, !tbaa !27
  %231 = call ptr @sqlite3ExprListDup(ptr noundef %15, ptr noundef %212, i32 noundef 0) #4
  store ptr %231, ptr %215, align 8, !tbaa !60
  br label %232

232:                                              ; preds = %228, %224, %._crit_edge
  %.0540 = phi ptr [ %231, %228 ], [ %216, %224 ], [ %216, %._crit_edge ]
  %233 = load ptr, ptr %5, align 8, !tbaa !28
  %.not586 = icmp eq ptr %233, null
  br i1 %.not586, label %247, label %234

234:                                              ; preds = %232
  %235 = load i32, ptr %212, align 8, !tbaa !41
  %236 = call ptr @keyInfoFromExprList(ptr noundef nonnull %0, ptr noundef nonnull %233, i32 noundef 0, i32 noundef %235)
  %237 = getelementptr inbounds i8, ptr %0, i64 52
  %238 = load i32, ptr %237, align 4, !tbaa !64
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %237, align 4, !tbaa !64
  %240 = getelementptr inbounds i8, ptr %5, i64 12
  store i32 %238, ptr %240, align 4, !tbaa !65
  %241 = load ptr, ptr %5, align 8, !tbaa !28
  %242 = load i32, ptr %241, align 8, !tbaa !41
  %243 = add nsw i32 %242, 1
  %244 = load i32, ptr %212, align 8, !tbaa !41
  %245 = add nsw i32 %243, %244
  %246 = call i32 @sqlite3VdbeAddOp4(ptr noundef %90, i32 noundef 108, i32 noundef %238, i32 noundef %245, i32 noundef 0, ptr noundef %236, i32 noundef -5) #4
  br label %247

247:                                              ; preds = %232, %234
  %.sink = phi i32 [ %246, %234 ], [ -1, %232 ]
  %248 = getelementptr inbounds i8, ptr %5, i64 24
  store i32 %.sink, ptr %248, align 8
  %249 = load i8, ptr %2, align 8, !tbaa !23
  %250 = icmp eq i8 %249, 12
  br i1 %250, label %251, label %256

251:                                              ; preds = %247
  %252 = getelementptr inbounds i8, ptr %2, i64 16
  %253 = load i32, ptr %252, align 8, !tbaa !66
  %254 = load i32, ptr %212, align 8, !tbaa !41
  %255 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 108, i32 noundef %253, i32 noundef %254) #4
  br label %256

256:                                              ; preds = %251, %247
  %257 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %90) #4
  %258 = load i32, ptr %44, align 4, !tbaa !27
  %259 = and i32 %258, 16384
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %263

261:                                              ; preds = %256
  %262 = getelementptr inbounds i8, ptr %1, i64 10
  store i16 320, ptr %262, align 2, !tbaa !55
  br label %263

263:                                              ; preds = %261, %256
  call void @computeLimitRegisters(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %257)
  %264 = getelementptr inbounds i8, ptr %1, i64 16
  %265 = load i32, ptr %264, align 8, !tbaa !67
  %266 = icmp eq i32 %265, 0
  %267 = load i32, ptr %248, align 8
  %268 = icmp sgt i32 %267, -1
  %or.cond = select i1 %266, i1 %268, i1 false
  br i1 %or.cond, label %269, label %273

269:                                              ; preds = %263
  call void @sqlite3VdbeChangeOpcode(ptr noundef %90, i32 noundef %267, i8 noundef zeroext 109) #4
  %270 = getelementptr inbounds i8, ptr %5, i64 32
  %271 = load i8, ptr %270, align 8, !tbaa !68
  %272 = or i8 %271, 1
  store i8 %272, ptr %270, align 8, !tbaa !68
  br label %273

273:                                              ; preds = %269, %263
  %274 = load i32, ptr %44, align 4, !tbaa !27
  %275 = and i32 %274, 1
  %.not587 = icmp eq i32 %275, 0
  br i1 %.not587, label %285, label %276

276:                                              ; preds = %273
  %277 = getelementptr inbounds i8, ptr %0, i64 52
  %278 = load i32, ptr %277, align 4, !tbaa !64
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr %277, align 4, !tbaa !64
  %280 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %278, ptr %280, align 4, !tbaa !69
  %281 = load ptr, ptr %1, align 8, !tbaa !40
  %282 = call ptr @keyInfoFromExprList(ptr noundef nonnull %0, ptr noundef %281, i32 noundef 0, i32 noundef 0)
  %283 = call i32 @sqlite3VdbeAddOp4(ptr noundef %90, i32 noundef 108, i32 noundef %278, i32 noundef 0, i32 noundef 0, ptr noundef %282, i32 noundef -5) #4
  %284 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %283, ptr %284, align 4, !tbaa !70
  call void @sqlite3VdbeChangeP5(ptr noundef %90, i16 noundef zeroext 8) #4
  br label %285

285:                                              ; preds = %273, %276
  %.sink749 = phi i8 [ 3, %276 ], [ 0, %273 ]
  %286 = getelementptr inbounds i8, ptr %4, i64 1
  store i8 %.sink749, ptr %286, align 1
  %287 = icmp eq i32 %.0530.lcssa, 0
  %288 = icmp eq ptr %.0540, null
  %or.cond6 = select i1 %287, i1 %288, i1 false
  br i1 %or.cond6, label %289, label %336

289:                                              ; preds = %285
  %290 = load i8, ptr %4, align 4, !tbaa !62
  %.not609 = icmp eq i8 %290, 0
  %291 = load i32, ptr %44, align 4, !tbaa !27
  %292 = and i32 %291, 16384
  %293 = select i1 %.not609, i32 0, i32 256
  %294 = or disjoint i32 %293, %292
  %295 = trunc nuw nsw i32 %294 to i16
  %296 = load ptr, ptr %5, align 8, !tbaa !28
  %297 = load ptr, ptr %1, align 8, !tbaa !40
  %298 = getelementptr inbounds i8, ptr %1, i64 10
  %299 = load i16, ptr %298, align 2, !tbaa !55
  %300 = sext i16 %299 to i32
  %301 = call ptr @sqlite3WhereBegin(ptr noundef nonnull %0, ptr noundef nonnull %.0537.lcssa, ptr noundef %214, ptr noundef %296, ptr noundef %297, i16 noundef zeroext %295, i32 noundef %300) #4
  %302 = icmp eq ptr %301, null
  br i1 %302, label %.thread651, label %303

303:                                              ; preds = %289
  %304 = call signext i16 @sqlite3WhereOutputRowCount(ptr noundef nonnull %301) #4
  %305 = load i16, ptr %298, align 2, !tbaa !55
  %306 = icmp slt i16 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %303
  %308 = call signext i16 @sqlite3WhereOutputRowCount(ptr noundef nonnull %301) #4
  store i16 %308, ptr %298, align 2, !tbaa !55
  br label %309

309:                                              ; preds = %307, %303
  %310 = load i8, ptr %4, align 4, !tbaa !62
  %.not610 = icmp eq i8 %310, 0
  br i1 %.not610, label %316, label %311

311:                                              ; preds = %309
  %312 = call i32 @sqlite3WhereIsDistinct(ptr noundef nonnull %301) #4
  %.not611 = icmp eq i32 %312, 0
  br i1 %.not611, label %316, label %313

313:                                              ; preds = %311
  %314 = call i32 @sqlite3WhereIsDistinct(ptr noundef nonnull %301) #4
  %315 = trunc i32 %314 to i8
  store i8 %315, ptr %286, align 1, !tbaa !71
  br label %316

316:                                              ; preds = %313, %311, %309
  %317 = load ptr, ptr %5, align 8
  %.not612 = icmp eq ptr %317, null
  br i1 %.not612, label %329, label %318

318:                                              ; preds = %316
  %319 = call i32 @sqlite3WhereIsOrdered(ptr noundef nonnull %301) #4
  %320 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %319, ptr %320, align 8, !tbaa !72
  %321 = call i32 @sqlite3WhereOrderedInnerLoop(ptr noundef nonnull %301) #4
  %322 = trunc i32 %321 to i8
  %323 = getelementptr inbounds i8, ptr %5, i64 33
  store i8 %322, ptr %323, align 1, !tbaa !73
  %324 = load i32, ptr %320, align 8, !tbaa !72
  %325 = load ptr, ptr %5, align 8
  %326 = load i32, ptr %325, align 8, !tbaa !41
  %327 = icmp eq i32 %324, %326
  br i1 %327, label %328, label %.thread627

328:                                              ; preds = %318
  store ptr null, ptr %5, align 8, !tbaa !28
  br label %329

329:                                              ; preds = %328, %316
  %330 = load i32, ptr %248, align 8, !tbaa !74
  %331 = icmp sgt i32 %330, -1
  br i1 %331, label %332, label %.thread627

332:                                              ; preds = %329
  %333 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %90, i32 noundef %330) #4
  br label %.thread627

.thread627:                                       ; preds = %318, %329, %332
  %334 = call i32 @sqlite3WhereContinueLabel(ptr noundef nonnull %301) #4
  %335 = call i32 @sqlite3WhereBreakLabel(ptr noundef nonnull %301) #4
  call void @selectInnerLoop(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %212, i32 noundef -1, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %2, i32 noundef %334, i32 noundef %335)
  call void @sqlite3WhereEnd(ptr noundef nonnull %301) #4
  br label %675

336:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) #4
  br i1 %288, label %383, label %337

337:                                              ; preds = %336
  %338 = load ptr, ptr %1, align 8, !tbaa !40
  %339 = load i32, ptr %338, align 8, !tbaa !41
  %340 = icmp sgt i32 %339, 0
  br i1 %340, label %.lr.ph689.preheader, label %._crit_edge690

.lr.ph689.preheader:                              ; preds = %337
  %341 = getelementptr inbounds i8, ptr %338, i64 8
  %342 = load ptr, ptr %341, align 8, !tbaa !75
  %xtraiter = and i32 %339, 7
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph689.prol.loopexit, label %.lr.ph689.prol

.lr.ph689.prol:                                   ; preds = %.lr.ph689.preheader, %.lr.ph689.prol
  %.0554687.prol = phi i32 [ %344, %.lr.ph689.prol ], [ %339, %.lr.ph689.preheader ]
  %.0556686.prol = phi ptr [ %345, %.lr.ph689.prol ], [ %342, %.lr.ph689.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph689.prol ], [ 0, %.lr.ph689.preheader ]
  %343 = getelementptr inbounds i8, ptr %.0556686.prol, i64 30
  store i16 0, ptr %343, align 2, !tbaa !76
  %344 = add nsw i32 %.0554687.prol, -1
  %345 = getelementptr inbounds i8, ptr %.0556686.prol, i64 32
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph689.prol.loopexit, label %.lr.ph689.prol, !llvm.loop !77

.lr.ph689.prol.loopexit:                          ; preds = %.lr.ph689.prol, %.lr.ph689.preheader
  %.0554687.unr = phi i32 [ %339, %.lr.ph689.preheader ], [ %344, %.lr.ph689.prol ]
  %.0556686.unr = phi ptr [ %342, %.lr.ph689.preheader ], [ %345, %.lr.ph689.prol ]
  %346 = icmp ult i32 %339, 8
  br i1 %346, label %._crit_edge690, label %.lr.ph689

.lr.ph689:                                        ; preds = %.lr.ph689.prol.loopexit, %.lr.ph689
  %.0554687 = phi i32 [ %355, %.lr.ph689 ], [ %.0554687.unr, %.lr.ph689.prol.loopexit ]
  %.0556686 = phi ptr [ %356, %.lr.ph689 ], [ %.0556686.unr, %.lr.ph689.prol.loopexit ]
  %347 = getelementptr inbounds i8, ptr %.0556686, i64 30
  store i16 0, ptr %347, align 2, !tbaa !76
  %348 = getelementptr inbounds i8, ptr %.0556686, i64 62
  store i16 0, ptr %348, align 2, !tbaa !76
  %349 = getelementptr inbounds i8, ptr %.0556686, i64 94
  store i16 0, ptr %349, align 2, !tbaa !76
  %350 = getelementptr inbounds i8, ptr %.0556686, i64 126
  store i16 0, ptr %350, align 2, !tbaa !76
  %351 = getelementptr inbounds i8, ptr %.0556686, i64 158
  store i16 0, ptr %351, align 2, !tbaa !76
  %352 = getelementptr inbounds i8, ptr %.0556686, i64 190
  store i16 0, ptr %352, align 2, !tbaa !76
  %353 = getelementptr inbounds i8, ptr %.0556686, i64 222
  store i16 0, ptr %353, align 2, !tbaa !76
  %354 = getelementptr inbounds i8, ptr %.0556686, i64 254
  store i16 0, ptr %354, align 2, !tbaa !76
  %355 = add nsw i32 %.0554687, -8
  %356 = getelementptr inbounds i8, ptr %.0556686, i64 256
  %357 = add i32 %.0554687, -9
  %358 = icmp ult i32 %357, -2
  br i1 %358, label %.lr.ph689, label %._crit_edge690, !llvm.loop !79

._crit_edge690:                                   ; preds = %.lr.ph689.prol.loopexit, %.lr.ph689, %337
  %359 = load i32, ptr %.0540, align 8, !tbaa !41
  %360 = icmp sgt i32 %359, 0
  br i1 %360, label %.lr.ph694.preheader, label %._crit_edge695

.lr.ph694.preheader:                              ; preds = %._crit_edge690
  %361 = getelementptr inbounds i8, ptr %.0540, i64 8
  %362 = load ptr, ptr %361, align 8, !tbaa !75
  %xtraiter791 = and i32 %359, 7
  %lcmp.mod792.not = icmp eq i32 %xtraiter791, 0
  br i1 %lcmp.mod792.not, label %.lr.ph694.prol.loopexit, label %.lr.ph694.prol

.lr.ph694.prol:                                   ; preds = %.lr.ph694.preheader, %.lr.ph694.prol
  %.1555692.prol = phi i32 [ %364, %.lr.ph694.prol ], [ %359, %.lr.ph694.preheader ]
  %.1557691.prol = phi ptr [ %365, %.lr.ph694.prol ], [ %362, %.lr.ph694.preheader ]
  %prol.iter793 = phi i32 [ %prol.iter793.next, %.lr.ph694.prol ], [ 0, %.lr.ph694.preheader ]
  %363 = getelementptr inbounds i8, ptr %.1557691.prol, i64 30
  store i16 0, ptr %363, align 2, !tbaa !76
  %364 = add nsw i32 %.1555692.prol, -1
  %365 = getelementptr inbounds i8, ptr %.1557691.prol, i64 32
  %prol.iter793.next = add i32 %prol.iter793, 1
  %prol.iter793.cmp.not = icmp eq i32 %prol.iter793.next, %xtraiter791
  br i1 %prol.iter793.cmp.not, label %.lr.ph694.prol.loopexit, label %.lr.ph694.prol, !llvm.loop !80

.lr.ph694.prol.loopexit:                          ; preds = %.lr.ph694.prol, %.lr.ph694.preheader
  %.1555692.unr = phi i32 [ %359, %.lr.ph694.preheader ], [ %364, %.lr.ph694.prol ]
  %.1557691.unr = phi ptr [ %362, %.lr.ph694.preheader ], [ %365, %.lr.ph694.prol ]
  %366 = icmp ult i32 %359, 8
  br i1 %366, label %._crit_edge695, label %.lr.ph694

.lr.ph694:                                        ; preds = %.lr.ph694.prol.loopexit, %.lr.ph694
  %.1555692 = phi i32 [ %375, %.lr.ph694 ], [ %.1555692.unr, %.lr.ph694.prol.loopexit ]
  %.1557691 = phi ptr [ %376, %.lr.ph694 ], [ %.1557691.unr, %.lr.ph694.prol.loopexit ]
  %367 = getelementptr inbounds i8, ptr %.1557691, i64 30
  store i16 0, ptr %367, align 2, !tbaa !76
  %368 = getelementptr inbounds i8, ptr %.1557691, i64 62
  store i16 0, ptr %368, align 2, !tbaa !76
  %369 = getelementptr inbounds i8, ptr %.1557691, i64 94
  store i16 0, ptr %369, align 2, !tbaa !76
  %370 = getelementptr inbounds i8, ptr %.1557691, i64 126
  store i16 0, ptr %370, align 2, !tbaa !76
  %371 = getelementptr inbounds i8, ptr %.1557691, i64 158
  store i16 0, ptr %371, align 2, !tbaa !76
  %372 = getelementptr inbounds i8, ptr %.1557691, i64 190
  store i16 0, ptr %372, align 2, !tbaa !76
  %373 = getelementptr inbounds i8, ptr %.1557691, i64 222
  store i16 0, ptr %373, align 2, !tbaa !76
  %374 = getelementptr inbounds i8, ptr %.1557691, i64 254
  store i16 0, ptr %374, align 2, !tbaa !76
  %375 = add nsw i32 %.1555692, -8
  %376 = getelementptr inbounds i8, ptr %.1557691, i64 256
  %377 = add i32 %.1555692, -9
  %378 = icmp ult i32 %377, -2
  br i1 %378, label %.lr.ph694, label %._crit_edge695, !llvm.loop !81

._crit_edge695:                                   ; preds = %.lr.ph694.prol.loopexit, %.lr.ph694, %._crit_edge690
  %379 = getelementptr inbounds i8, ptr %1, i64 10
  %380 = load i16, ptr %379, align 2, !tbaa !55
  %381 = icmp sgt i16 %380, 66
  br i1 %381, label %382, label %385

382:                                              ; preds = %._crit_edge695
  store i16 66, ptr %379, align 2, !tbaa !55
  br label %385

383:                                              ; preds = %336
  %384 = getelementptr inbounds i8, ptr %1, i64 10
  store i16 0, ptr %384, align 2, !tbaa !55
  br label %385

385:                                              ; preds = %._crit_edge695, %382, %383
  %386 = load ptr, ptr %5, align 8, !tbaa !28
  %387 = call i32 @sqlite3ExprListCompare(ptr noundef %.0540, ptr noundef %386, i32 noundef -1) #4
  %.not601 = icmp eq i32 %387, 0
  %388 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %90) #4
  %389 = getelementptr inbounds i8, ptr %8, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %389, i8 0, i64 40, i1 false)
  store ptr %0, ptr %8, align 8, !tbaa !82
  %390 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr %.0537.lcssa, ptr %390, align 8, !tbaa !84
  %391 = getelementptr inbounds i8, ptr %8, i64 24
  store ptr %6, ptr %391, align 8, !tbaa !85
  %392 = getelementptr inbounds i8, ptr %0, i64 56
  %393 = load i32, ptr %392, align 8, !tbaa !53
  %394 = add nsw i32 %393, 1
  %395 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %394, ptr %395, align 8, !tbaa !86
  br i1 %288, label %398, label %396

396:                                              ; preds = %385
  %397 = load i32, ptr %.0540, align 8, !tbaa !41
  br label %398

398:                                              ; preds = %385, %396
  %399 = phi i32 [ %397, %396 ], [ 0, %385 ]
  %400 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %399, ptr %400, align 4, !tbaa !88
  %401 = getelementptr inbounds i8, ptr %6, i64 24
  store ptr %.0540, ptr %401, align 8, !tbaa !89
  call void @sqlite3ExprAnalyzeAggList(ptr noundef nonnull %8, ptr noundef %212) #4
  %402 = load ptr, ptr %5, align 8, !tbaa !28
  call void @sqlite3ExprAnalyzeAggList(ptr noundef nonnull %8, ptr noundef %402) #4
  %.not589 = icmp eq ptr %218, null
  br i1 %.not589, label %404, label %403

403:                                              ; preds = %398
  call void @sqlite3ExprAnalyzeAggregates(ptr noundef nonnull %8, ptr noundef nonnull %218) #4
  br label %404

404:                                              ; preds = %403, %398
  %405 = getelementptr inbounds i8, ptr %6, i64 40
  %406 = load i32, ptr %405, align 8, !tbaa !90
  %407 = getelementptr inbounds i8, ptr %6, i64 44
  store i32 %406, ptr %407, align 4, !tbaa !91
  %408 = getelementptr inbounds i8, ptr %6, i64 56
  %409 = load i32, ptr %408, align 8, !tbaa !92
  %410 = icmp sgt i32 %409, 0
  br i1 %410, label %.lr.ph698, label %._crit_edge699

.lr.ph698:                                        ; preds = %404
  %411 = getelementptr inbounds i8, ptr %8, i64 48
  %412 = getelementptr inbounds i8, ptr %6, i64 48
  %.pre = load i16, ptr %411, align 8, !tbaa !93
  br label %413

413:                                              ; preds = %.lr.ph698, %413
  %414 = phi i16 [ %.pre, %.lr.ph698 ], [ %422, %413 ]
  %indvars.iv737 = phi i64 [ 0, %.lr.ph698 ], [ %indvars.iv.next738, %413 ]
  %415 = or i16 %414, 8
  store i16 %415, ptr %411, align 8, !tbaa !93
  %416 = load ptr, ptr %412, align 8, !tbaa !94
  %417 = getelementptr inbounds %struct.AggInfo_func, ptr %416, i64 %indvars.iv737
  %418 = load ptr, ptr %417, align 8, !tbaa !95
  %419 = getelementptr inbounds i8, ptr %418, i64 32
  %420 = load ptr, ptr %419, align 8, !tbaa !76
  call void @sqlite3ExprAnalyzeAggList(ptr noundef nonnull %8, ptr noundef %420) #4
  %421 = load i16, ptr %411, align 8, !tbaa !93
  %422 = and i16 %421, -9
  store i16 %422, ptr %411, align 8, !tbaa !93
  %indvars.iv.next738 = add nuw nsw i64 %indvars.iv737, 1
  %423 = load i32, ptr %408, align 8, !tbaa !92
  %424 = sext i32 %423 to i64
  %425 = icmp slt i64 %indvars.iv.next738, %424
  br i1 %425, label %413, label %._crit_edge699, !llvm.loop !97

._crit_edge699:                                   ; preds = %413, %404
  %426 = load i32, ptr %392, align 8, !tbaa !53
  %427 = getelementptr inbounds i8, ptr %6, i64 20
  store i32 %426, ptr %427, align 4, !tbaa !98
  %428 = load i8, ptr %18, align 1, !tbaa !15
  %.not590 = icmp eq i8 %428, 0
  br i1 %.not590, label %429, label %.thread648

429:                                              ; preds = %._crit_edge699
  br i1 %288, label %588, label %430

430:                                              ; preds = %429
  %431 = getelementptr inbounds i8, ptr %0, i64 52
  %432 = load i32, ptr %431, align 4, !tbaa !64
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %431, align 4, !tbaa !64
  %434 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %432, ptr %434, align 4, !tbaa !99
  %435 = load i32, ptr %405, align 8, !tbaa !90
  %436 = call ptr @keyInfoFromExprList(ptr noundef nonnull %0, ptr noundef nonnull %.0540, i32 noundef 0, i32 noundef %435)
  %437 = load i32, ptr %434, align 4, !tbaa !99
  %438 = load i32, ptr %400, align 4, !tbaa !88
  %439 = call i32 @sqlite3VdbeAddOp4(ptr noundef %90, i32 noundef 109, i32 noundef %437, i32 noundef %438, i32 noundef 0, ptr noundef %436, i32 noundef -5) #4
  %440 = load i32, ptr %392, align 8, !tbaa !53
  %441 = add nsw i32 %440, 1
  %442 = add nsw i32 %440, 2
  %443 = add nsw i32 %440, 3
  store i32 %443, ptr %392, align 8, !tbaa !53
  %444 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %90) #4
  %445 = load i32, ptr %392, align 8, !tbaa !53
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %392, align 8, !tbaa !53
  %447 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %90) #4
  %448 = load i32, ptr %392, align 8, !tbaa !53
  %449 = add nsw i32 %448, 1
  %450 = load i32, ptr %.0540, align 8, !tbaa !41
  %451 = add nsw i32 %450, %448
  %452 = add nsw i32 %451, 1
  %453 = add nsw i32 %451, %450
  store i32 %453, ptr %392, align 8, !tbaa !53
  %454 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 77, i32 noundef 0, i32 noundef %442) #4
  %455 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 77, i32 noundef 0, i32 noundef %441) #4
  %456 = load i32, ptr %.0540, align 8, !tbaa !41
  %457 = add i32 %456, %448
  %458 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 80, i32 noundef 0, i32 noundef %449, i32 noundef %457) #4
  %459 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 14, i32 noundef %446, i32 noundef %447) #4
  %460 = select i1 %.not601, i16 576, i16 64
  %461 = call ptr @sqlite3WhereBegin(ptr noundef nonnull %0, ptr noundef nonnull %.0537.lcssa, ptr noundef %214, ptr noundef nonnull %.0540, ptr noundef null, i16 noundef zeroext %460, i32 noundef 0) #4
  %.not608 = icmp eq ptr %461, null
  br i1 %.not608, label %.thread648, label %462

462:                                              ; preds = %430
  %463 = call i32 @sqlite3WhereIsOrdered(ptr noundef nonnull %461) #4
  %464 = load i32, ptr %.0540, align 8, !tbaa !41
  %465 = icmp eq i32 %463, %464
  br i1 %465, label %524, label %466

466:                                              ; preds = %462
  %467 = load i8, ptr %4, align 4, !tbaa !62
  %.not602 = icmp eq i8 %467, 0
  br i1 %.not602, label %.thread630, label %468

468:                                              ; preds = %466
  %469 = load i32, ptr %44, align 4, !tbaa !27
  %.fr656 = freeze i32 %469
  %470 = and i32 %.fr656, 1
  %471 = icmp eq i32 %470, 0
  %spec.select = select i1 %471, ptr @.str.10, ptr @.str.11
  br label %.thread630

.thread630:                                       ; preds = %468, %466
  %472 = phi ptr [ @.str.11, %466 ], [ %spec.select, %468 ]
  call void @explainTempTable(ptr noundef nonnull %0, ptr noundef nonnull %472)
  %473 = load i32, ptr %.0540, align 8, !tbaa !41
  %474 = load i32, ptr %405, align 8, !tbaa !90
  %475 = icmp sgt i32 %474, 0
  br i1 %475, label %.lr.ph703, label %._crit_edge704

.lr.ph703:                                        ; preds = %.thread630
  %476 = getelementptr inbounds i8, ptr %6, i64 32
  %477 = load ptr, ptr %476, align 8, !tbaa !100
  %wide.trip.count = zext nneg i32 %474 to i64
  %xtraiter794 = and i64 %wide.trip.count, 1
  %478 = icmp eq i32 %474, 1
  br i1 %478, label %._crit_edge704.loopexit.unr-lcssa, label %.lr.ph703.new

.lr.ph703.new:                                    ; preds = %.lr.ph703
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %479

479:                                              ; preds = %479, %.lr.ph703.new
  %indvars.iv740 = phi i64 [ 0, %.lr.ph703.new ], [ %indvars.iv.next741.1, %479 ]
  %.0523701 = phi i32 [ %473, %.lr.ph703.new ], [ %.1524.1, %479 ]
  %.0535700 = phi i32 [ %473, %.lr.ph703.new ], [ %.1536.1, %479 ]
  %niter = phi i64 [ 0, %.lr.ph703.new ], [ %niter.next.1, %479 ]
  %480 = getelementptr inbounds %struct.AggInfo_col, ptr %477, i64 %indvars.iv740, i32 3
  %481 = load i32, ptr %480, align 8, !tbaa !101
  %.not604 = icmp sge i32 %481, %.0523701
  %482 = zext i1 %.not604 to i32
  %.1536 = add nsw i32 %.0535700, %482
  %.1524 = add nsw i32 %.0523701, %482
  %indvars.iv.next741 = or disjoint i64 %indvars.iv740, 1
  %483 = getelementptr inbounds %struct.AggInfo_col, ptr %477, i64 %indvars.iv.next741, i32 3
  %484 = load i32, ptr %483, align 8, !tbaa !101
  %.not604.1 = icmp sge i32 %484, %.1524
  %485 = zext i1 %.not604.1 to i32
  %.1536.1 = add nsw i32 %.1536, %485
  %.1524.1 = add nsw i32 %.1524, %485
  %indvars.iv.next741.1 = add nuw nsw i64 %indvars.iv740, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge704.loopexit.unr-lcssa, label %479, !llvm.loop !103

._crit_edge704.loopexit.unr-lcssa:                ; preds = %479, %.lr.ph703
  %.1536.lcssa.ph = phi i32 [ poison, %.lr.ph703 ], [ %.1536.1, %479 ]
  %indvars.iv740.unr = phi i64 [ 0, %.lr.ph703 ], [ %indvars.iv.next741.1, %479 ]
  %.0523701.unr = phi i32 [ %473, %.lr.ph703 ], [ %.1524.1, %479 ]
  %.0535700.unr = phi i32 [ %473, %.lr.ph703 ], [ %.1536.1, %479 ]
  %lcmp.mod795.not = icmp eq i64 %xtraiter794, 0
  br i1 %lcmp.mod795.not, label %._crit_edge704, label %._crit_edge704.loopexit.epilog-lcssa

._crit_edge704.loopexit.epilog-lcssa:             ; preds = %._crit_edge704.loopexit.unr-lcssa
  %486 = getelementptr inbounds %struct.AggInfo_col, ptr %477, i64 %indvars.iv740.unr, i32 3
  %487 = load i32, ptr %486, align 8, !tbaa !101
  %.not604.epil = icmp sge i32 %487, %.0523701.unr
  %488 = zext i1 %.not604.epil to i32
  %.1536.epil = add nsw i32 %.0535700.unr, %488
  br label %._crit_edge704

._crit_edge704:                                   ; preds = %._crit_edge704.loopexit.epilog-lcssa, %._crit_edge704.loopexit.unr-lcssa, %.thread630
  %.0535.lcssa = phi i32 [ %473, %.thread630 ], [ %.1536.lcssa.ph, %._crit_edge704.loopexit.unr-lcssa ], [ %.1536.epil, %._crit_edge704.loopexit.epilog-lcssa ]
  %489 = call i32 @sqlite3GetTempRange(ptr noundef nonnull %0, i32 noundef %.0535.lcssa) #4
  call void @sqlite3ExprCacheClear(ptr noundef nonnull %0) #4
  %490 = call i32 @sqlite3ExprCodeExprList(ptr noundef nonnull %0, ptr noundef nonnull %.0540, i32 noundef %489, i32 noundef 0, i8 noundef zeroext 0) #4
  %491 = load i32, ptr %405, align 8, !tbaa !90
  %492 = icmp sgt i32 %491, 0
  br i1 %492, label %.lr.ph709, label %._crit_edge710

.lr.ph709:                                        ; preds = %._crit_edge704
  %493 = getelementptr inbounds i8, ptr %6, i64 32
  br label %494

494:                                              ; preds = %.lr.ph709, %508
  %495 = phi i32 [ %491, %.lr.ph709 ], [ %509, %508 ]
  %indvars.iv743 = phi i64 [ 0, %.lr.ph709 ], [ %indvars.iv.next744, %508 ]
  %.2525706 = phi i32 [ %473, %.lr.ph709 ], [ %.3526, %508 ]
  %496 = load ptr, ptr %493, align 8, !tbaa !100
  %497 = getelementptr inbounds %struct.AggInfo_col, ptr %496, i64 %indvars.iv743
  %498 = getelementptr inbounds i8, ptr %497, i64 16
  %499 = load i32, ptr %498, align 8, !tbaa !101
  %.not603 = icmp slt i32 %499, %.2525706
  br i1 %.not603, label %508, label %500

500:                                              ; preds = %494
  %501 = add nsw i32 %.2525706, %489
  %502 = load ptr, ptr %497, align 8, !tbaa !104
  %503 = getelementptr inbounds i8, ptr %497, i64 12
  %504 = load i32, ptr %503, align 4, !tbaa !105
  %505 = getelementptr inbounds i8, ptr %497, i64 8
  %506 = load i32, ptr %505, align 8, !tbaa !106
  call void @sqlite3ExprCodeGetColumnToReg(ptr noundef nonnull %0, ptr noundef %502, i32 noundef %504, i32 noundef %506, i32 noundef %501) #4
  %507 = add nsw i32 %.2525706, 1
  %.pre750 = load i32, ptr %405, align 8, !tbaa !90
  br label %508

508:                                              ; preds = %500, %494
  %509 = phi i32 [ %.pre750, %500 ], [ %495, %494 ]
  %.3526 = phi i32 [ %507, %500 ], [ %.2525706, %494 ]
  %indvars.iv.next744 = add nuw nsw i64 %indvars.iv743, 1
  %510 = sext i32 %509 to i64
  %511 = icmp slt i64 %indvars.iv.next744, %510
  br i1 %511, label %494, label %._crit_edge710, !llvm.loop !107

._crit_edge710:                                   ; preds = %508, %._crit_edge704
  %512 = call i32 @sqlite3GetTempReg(ptr noundef nonnull %0) #4
  %513 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 100, i32 noundef %489, i32 noundef %.0535.lcssa, i32 noundef %512) #4
  %514 = load i32, ptr %434, align 4, !tbaa !99
  %515 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 125, i32 noundef %514, i32 noundef %512) #4
  call void @sqlite3ReleaseTempReg(ptr noundef nonnull %0, i32 noundef %512) #4
  call void @sqlite3ReleaseTempRange(ptr noundef nonnull %0, i32 noundef %489, i32 noundef %.0535.lcssa) #4
  call void @sqlite3WhereEnd(ptr noundef nonnull %461) #4
  %516 = load i32, ptr %431, align 4, !tbaa !64
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr %431, align 4, !tbaa !64
  %518 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %516, ptr %518, align 8, !tbaa !108
  %519 = call i32 @sqlite3GetTempReg(ptr noundef nonnull %0) #4
  %520 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 111, i32 noundef %516, i32 noundef %519, i32 noundef %.0535.lcssa) #4
  %521 = load i32, ptr %434, align 4, !tbaa !99
  %522 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 56, i32 noundef %521, i32 noundef %388) #4
  %523 = getelementptr inbounds i8, ptr %6, i64 1
  store i8 1, ptr %523, align 1, !tbaa !109
  call void @sqlite3ExprCacheClear(ptr noundef nonnull %0) #4
  br label %524

524:                                              ; preds = %462, %._crit_edge710
  %.0552 = phi i32 [ %519, %._crit_edge710 ], [ 0, %462 ]
  %.0551 = phi i32 [ %516, %._crit_edge710 ], [ 0, %462 ]
  br i1 %.not601, label %525, label %536

525:                                              ; preds = %524
  %526 = getelementptr inbounds i8, ptr %15, i64 80
  %527 = load i16, ptr %526, align 8, !tbaa !52
  %528 = and i16 %527, 4
  %529 = icmp eq i16 %528, 0
  br i1 %529, label %530, label %536

530:                                              ; preds = %525
  br i1 %465, label %531, label %533

531:                                              ; preds = %530
  %532 = call i32 @sqlite3WhereIsSorted(ptr noundef nonnull %461) #4
  %.not606 = icmp eq i32 %532, 0
  br i1 %.not606, label %536, label %533

533:                                              ; preds = %531, %530
  store ptr null, ptr %5, align 8, !tbaa !28
  %534 = load i32, ptr %248, align 8, !tbaa !74
  %535 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %90, i32 noundef %534) #4
  br label %536

536:                                              ; preds = %533, %531, %525, %524
  %537 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %90) #4
  call void @sqlite3ExprCacheClear(ptr noundef nonnull %0) #4
  br i1 %465, label %538, label %.thread754

538:                                              ; preds = %536
  %539 = load i32, ptr %.0540, align 8, !tbaa !41
  %540 = icmp sgt i32 %539, 0
  br i1 %540, label %.lr.ph713.split.us.preheader, label %._crit_edge714

.thread754:                                       ; preds = %536
  %541 = load i32, ptr %434, align 4, !tbaa !99
  %542 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 121, i32 noundef %541, i32 noundef %.0552, i32 noundef %.0551) #4
  %543 = load i32, ptr %.0540, align 8, !tbaa !41
  %544 = icmp sgt i32 %543, 0
  br i1 %544, label %.lr.ph713.split, label %._crit_edge714

.lr.ph713.split.us.preheader:                     ; preds = %538
  %545 = getelementptr inbounds i8, ptr %.0540, i64 8
  br label %.lr.ph713.split.us

.lr.ph713.split.us:                               ; preds = %.lr.ph713.split.us.preheader, %.lr.ph713.split.us
  %indvars.iv746 = phi i64 [ 0, %.lr.ph713.split.us.preheader ], [ %indvars.iv.next747, %.lr.ph713.split.us ]
  store i8 1, ptr %6, align 8, !tbaa !110
  %546 = load ptr, ptr %545, align 8, !tbaa !75
  %547 = getelementptr inbounds %struct.ExprList_item, ptr %546, i64 %indvars.iv746
  %548 = load ptr, ptr %547, align 8, !tbaa !111
  %549 = trunc i64 %indvars.iv746 to i32
  %550 = add i32 %452, %549
  call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %548, i32 noundef %550) #4
  %indvars.iv.next747 = add nuw nsw i64 %indvars.iv746, 1
  %551 = load i32, ptr %.0540, align 8, !tbaa !41
  %552 = sext i32 %551 to i64
  %553 = icmp slt i64 %indvars.iv.next747, %552
  br i1 %553, label %.lr.ph713.split.us, label %._crit_edge714, !llvm.loop !113

.lr.ph713.split:                                  ; preds = %.thread754, %.lr.ph713.split
  %.4527711 = phi i32 [ %556, %.lr.ph713.split ], [ 0, %.thread754 ]
  %554 = add nsw i32 %.4527711, %452
  %555 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 98, i32 noundef %.0551, i32 noundef %.4527711, i32 noundef %554) #4
  %556 = add nuw nsw i32 %.4527711, 1
  %557 = load i32, ptr %.0540, align 8, !tbaa !41
  %558 = icmp slt i32 %556, %557
  br i1 %558, label %.lr.ph713.split, label %._crit_edge714, !llvm.loop !113

._crit_edge714:                                   ; preds = %.lr.ph713.split, %.lr.ph713.split.us, %.thread754, %538
  %.lcssa = phi i32 [ %539, %538 ], [ %543, %.thread754 ], [ %551, %.lr.ph713.split.us ], [ %557, %.lr.ph713.split ]
  %559 = call ptr @sqlite3KeyInfoRef(ptr noundef %436)
  %560 = call i32 @sqlite3VdbeAddOp4(ptr noundef %90, i32 noundef 96, i32 noundef %449, i32 noundef %452, i32 noundef %.lcssa, ptr noundef %559, i32 noundef -5) #4
  %561 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %90) #4
  %562 = add nsw i32 %561, 1
  %563 = call i32 @sqlite3VdbeAddOp3(ptr noundef %90, i32 noundef 18, i32 noundef %562, i32 noundef 0, i32 noundef %562) #4
  %564 = load i32, ptr %.0540, align 8, !tbaa !41
  call void @sqlite3ExprCodeMove(ptr noundef nonnull %0, i32 noundef %452, i32 noundef %449, i32 noundef %564) #4
  %565 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 14, i32 noundef %443, i32 noundef %444) #4
  %566 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 67, i32 noundef %442, i32 noundef %388) #4
  %567 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 14, i32 noundef %446, i32 noundef %447) #4
  call void @sqlite3VdbeJumpHere(ptr noundef %90, i32 noundef %561) #4
  call void @updateAccumulator(ptr noundef nonnull %0, ptr noundef nonnull %6)
  %568 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 77, i32 noundef 1, i32 noundef %441) #4
  br i1 %465, label %572, label %569

569:                                              ; preds = %._crit_edge714
  %570 = load i32, ptr %434, align 4, !tbaa !99
  %571 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 3, i32 noundef %570, i32 noundef %537) #4
  br label %574

572:                                              ; preds = %._crit_edge714
  call void @sqlite3WhereEnd(ptr noundef nonnull %461) #4
  %573 = call i32 @sqlite3VdbeChangeToNoop(ptr noundef %90, i32 noundef %439) #4
  br label %574

574:                                              ; preds = %569, %572
  %575 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 14, i32 noundef %443, i32 noundef %444) #4
  %576 = call i32 @sqlite3VdbeGoto(ptr noundef %90, i32 noundef %388) #4
  %577 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %90) #4
  %578 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 77, i32 noundef 1, i32 noundef %442) #4
  %579 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 73, i32 noundef %443) #4
  call void @sqlite3VdbeResolveLabel(ptr noundef %90, i32 noundef %444) #4
  %580 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %90) #4
  %581 = add nsw i32 %580, 2
  %582 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 67, i32 noundef %441, i32 noundef %581) #4
  %583 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 73, i32 noundef %443) #4
  call void @finalizeAggFunctions(ptr noundef nonnull %0, ptr noundef nonnull %6)
  %584 = add nsw i32 %580, 1
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %0, ptr noundef %218, i32 noundef %584, i32 noundef 16) #4
  %585 = load ptr, ptr %1, align 8, !tbaa !40
  call void @selectInnerLoop(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %585, i32 noundef -1, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %2, i32 noundef %584, i32 noundef %577)
  %586 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 73, i32 noundef %443) #4
  call void @sqlite3VdbeResolveLabel(ptr noundef %90, i32 noundef %447) #4
  call void @resetAccumulator(ptr noundef nonnull %0, ptr noundef nonnull %6)
  %587 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 73, i32 noundef %446) #4
  br label %674

588:                                              ; preds = %429
  %589 = call ptr @isSimpleCount(ptr noundef nonnull %1, ptr noundef nonnull %6)
  %.not591 = icmp eq ptr %589, null
  br i1 %.not591, label %647, label %590

590:                                              ; preds = %588
  %591 = load ptr, ptr %0, align 8, !tbaa !14
  %592 = getelementptr inbounds i8, ptr %589, i64 112
  %593 = load ptr, ptr %592, align 8, !tbaa !114
  %594 = call i32 @sqlite3SchemaToIndex(ptr noundef %591, ptr noundef %593) #4
  %595 = getelementptr inbounds i8, ptr %0, i64 52
  %596 = load i32, ptr %595, align 4, !tbaa !64
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %595, align 4, !tbaa !64
  %598 = getelementptr inbounds i8, ptr %589, i64 56
  %599 = load i32, ptr %598, align 8, !tbaa !115
  call void @sqlite3CodeVerifySchema(ptr noundef nonnull %0, i32 noundef %594) #4
  %600 = load i32, ptr %598, align 8, !tbaa !115
  %601 = load ptr, ptr %589, align 8, !tbaa !43
  call void @sqlite3TableLock(ptr noundef nonnull %0, i32 noundef %594, i32 noundef %600, i8 noundef zeroext 0, ptr noundef %601) #4
  %602 = getelementptr inbounds i8, ptr %589, i64 64
  %603 = load i32, ptr %602, align 8, !tbaa !116
  %604 = and i32 %603, 32
  %605 = icmp eq i32 %604, 0
  br i1 %605, label %608, label %606

606:                                              ; preds = %590
  %607 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %589) #4
  br label %608

608:                                              ; preds = %606, %590
  %.0516 = phi ptr [ null, %590 ], [ %607, %606 ]
  %609 = getelementptr inbounds i8, ptr %589, i64 16
  %.0518716 = load ptr, ptr %609, align 8, !tbaa !117
  %.not596717 = icmp eq ptr %.0518716, null
  br i1 %.not596717, label %._crit_edge722, label %.lr.ph721

.lr.ph721:                                        ; preds = %608
  %610 = getelementptr inbounds i8, ptr %589, i64 74
  br label %611

611:                                              ; preds = %.lr.ph721, %631
  %.0518719 = phi ptr [ %.0518716, %.lr.ph721 ], [ %.0518, %631 ]
  %.1718 = phi ptr [ %.0516, %.lr.ph721 ], [ %.2, %631 ]
  %612 = getelementptr inbounds i8, ptr %.0518719, i64 99
  %613 = load i8, ptr %612, align 1
  %614 = and i8 %613, 4
  %615 = icmp eq i8 %614, 0
  br i1 %615, label %616, label %631

616:                                              ; preds = %611
  %617 = getelementptr inbounds i8, ptr %.0518719, i64 92
  %618 = load i16, ptr %617, align 4, !tbaa !118
  %619 = load i16, ptr %610, align 2, !tbaa !120
  %620 = icmp slt i16 %618, %619
  br i1 %620, label %621, label %631

621:                                              ; preds = %616
  %622 = getelementptr inbounds i8, ptr %.0518719, i64 72
  %623 = load ptr, ptr %622, align 8, !tbaa !121
  %624 = icmp eq ptr %623, null
  br i1 %624, label %625, label %631

625:                                              ; preds = %621
  %.not599 = icmp eq ptr %.1718, null
  br i1 %.not599, label %630, label %626

626:                                              ; preds = %625
  %627 = getelementptr inbounds i8, ptr %.1718, i64 92
  %628 = load i16, ptr %627, align 4, !tbaa !118
  %629 = icmp slt i16 %618, %628
  br i1 %629, label %630, label %631

630:                                              ; preds = %626, %625
  br label %631

631:                                              ; preds = %611, %616, %621, %626, %630
  %.2 = phi ptr [ %.0518719, %630 ], [ %.1718, %626 ], [ %.1718, %621 ], [ %.1718, %616 ], [ %.1718, %611 ]
  %632 = getelementptr inbounds i8, ptr %.0518719, i64 40
  %.0518 = load ptr, ptr %632, align 8, !tbaa !117
  %.not596 = icmp eq ptr %.0518, null
  br i1 %.not596, label %._crit_edge722, label %611, !llvm.loop !122

._crit_edge722:                                   ; preds = %631, %608
  %.1.lcssa = phi ptr [ %.0516, %608 ], [ %.2, %631 ]
  %.not597 = icmp eq ptr %.1.lcssa, null
  br i1 %.not597, label %.thread634, label %634

.thread634:                                       ; preds = %._crit_edge722
  %633 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %90, i32 noundef 105, i32 noundef %596, i32 noundef %599, i32 noundef %594, i32 noundef 1) #4
  br label %640

634:                                              ; preds = %._crit_edge722
  %635 = getelementptr inbounds i8, ptr %.1.lcssa, i64 88
  %636 = load i32, ptr %635, align 8, !tbaa !123
  %637 = call ptr @sqlite3KeyInfoOfIndex(ptr noundef nonnull %0, ptr noundef nonnull %.1.lcssa) #4
  %638 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %90, i32 noundef 105, i32 noundef %596, i32 noundef %636, i32 noundef %594, i32 noundef 1) #4
  %.not598 = icmp eq ptr %637, null
  br i1 %.not598, label %640, label %639

639:                                              ; preds = %634
  call void @sqlite3VdbeChangeP4(ptr noundef %90, i32 noundef -1, ptr noundef nonnull %637, i32 noundef -5) #4
  br label %640

640:                                              ; preds = %.thread634, %639, %634
  %641 = getelementptr inbounds i8, ptr %6, i64 48
  %642 = load ptr, ptr %641, align 8, !tbaa !94
  %643 = getelementptr inbounds i8, ptr %642, i64 16
  %644 = load i32, ptr %643, align 8, !tbaa !124
  %645 = call i32 @sqlite3VdbeAddOp2(ptr noundef %90, i32 noundef 101, i32 noundef %596, i32 noundef %644) #4
  %646 = call i32 @sqlite3VdbeAddOp1(ptr noundef %90, i32 noundef 112, i32 noundef %596) #4
  call void @explainSimpleCount(ptr noundef nonnull %0, ptr noundef nonnull %589, ptr noundef %.1.lcssa)
  br label %.thread644

647:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  store ptr null, ptr %9, align 8, !tbaa !117
  %648 = load ptr, ptr %217, align 8, !tbaa !61
  %649 = icmp eq ptr %648, null
  br i1 %649, label %650, label %.thread638

650:                                              ; preds = %647
  %651 = call zeroext i8 @minMaxQuery(ptr noundef nonnull %6, ptr noundef nonnull %9)
  %.not592 = icmp eq i8 %651, 0
  br i1 %.not592, label %.thread638, label %652

652:                                              ; preds = %650
  %653 = load ptr, ptr %9, align 8, !tbaa !117
  %654 = call ptr @sqlite3ExprListDup(ptr noundef nonnull %15, ptr noundef %653, i32 noundef 0) #4
  store ptr %654, ptr %9, align 8, !tbaa !117
  %655 = load i8, ptr %18, align 1, !tbaa !15
  %.not593 = icmp eq i8 %655, 0
  br i1 %.not593, label %656, label %.thread638

656:                                              ; preds = %652
  %.not594 = icmp ne i8 %651, 1
  %657 = zext i1 %.not594 to i8
  %658 = getelementptr inbounds i8, ptr %654, i64 8
  %659 = load ptr, ptr %658, align 8, !tbaa !75
  %660 = getelementptr inbounds i8, ptr %659, i64 24
  store i8 %657, ptr %660, align 8, !tbaa !125
  %661 = load ptr, ptr %659, align 8, !tbaa !111
  store i8 -104, ptr %661, align 8, !tbaa !126
  br label %.thread638

.thread638:                                       ; preds = %647, %652, %656, %650
  %.0641 = phi i8 [ %651, %652 ], [ %651, %656 ], [ 0, %650 ], [ 0, %647 ]
  %.0528 = phi ptr [ %654, %652 ], [ %654, %656 ], [ null, %650 ], [ null, %647 ]
  call void @resetAccumulator(ptr noundef nonnull %0, ptr noundef nonnull %6)
  %662 = load ptr, ptr %9, align 8, !tbaa !117
  %663 = zext i8 %.0641 to i16
  %664 = call ptr @sqlite3WhereBegin(ptr noundef nonnull %0, ptr noundef nonnull %.0537.lcssa, ptr noundef %214, ptr noundef %662, ptr noundef null, i16 noundef zeroext %663, i32 noundef 0) #4
  %.not595 = icmp eq ptr %664, null
  br i1 %.not595, label %673, label %665

665:                                              ; preds = %.thread638
  call void @updateAccumulator(ptr noundef nonnull %0, ptr noundef nonnull %6)
  %666 = call i32 @sqlite3WhereIsOrdered(ptr noundef nonnull %664) #4
  %667 = icmp sgt i32 %666, 0
  br i1 %667, label %668, label %671

668:                                              ; preds = %665
  %669 = call i32 @sqlite3WhereBreakLabel(ptr noundef nonnull %664) #4
  %670 = call i32 @sqlite3VdbeGoto(ptr noundef %90, i32 noundef %669) #4
  br label %671

671:                                              ; preds = %665, %668
  call void @sqlite3WhereEnd(ptr noundef nonnull %664) #4
  call void @finalizeAggFunctions(ptr noundef nonnull %0, ptr noundef nonnull %6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  br label %.thread644

.thread644:                                       ; preds = %640, %671
  %.1529 = phi ptr [ null, %640 ], [ %.0528, %671 ]
  store ptr null, ptr %5, align 8, !tbaa !28
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %0, ptr noundef %218, i32 noundef %388, i32 noundef 16) #4
  %672 = load ptr, ptr %1, align 8, !tbaa !40
  call void @selectInnerLoop(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %672, i32 noundef -1, ptr noundef null, ptr noundef null, ptr noundef nonnull %2, i32 noundef %388, i32 noundef %388)
  call void @sqlite3ExprListDelete(ptr noundef %15, ptr noundef %.1529) #4
  br label %674

673:                                              ; preds = %.thread638
  call void @sqlite3ExprListDelete(ptr noundef nonnull %15, ptr noundef %.0528) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  br label %.thread648

674:                                              ; preds = %574, %.thread644
  call void @sqlite3VdbeResolveLabel(ptr noundef %90, i32 noundef %388) #4
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #4
  br label %675

.thread648:                                       ; preds = %673, %._crit_edge699, %430
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #4
  br label %.thread651

675:                                              ; preds = %674, %.thread627
  %676 = load i8, ptr %286, align 1, !tbaa !71
  %677 = icmp eq i8 %676, 3
  br i1 %677, label %678, label %679

678:                                              ; preds = %675
  call void @explainTempTable(ptr noundef nonnull %0, ptr noundef nonnull @.str.10)
  br label %679

679:                                              ; preds = %678, %675
  %680 = load ptr, ptr %5, align 8, !tbaa !28
  %.not613 = icmp eq ptr %680, null
  br i1 %.not613, label %687, label %681

681:                                              ; preds = %679
  %682 = getelementptr inbounds i8, ptr %5, i64 8
  %683 = load i32, ptr %682, align 8, !tbaa !72
  %684 = icmp sgt i32 %683, 0
  %685 = select i1 %684, ptr @.str.12, ptr @.str.13
  call void @explainTempTable(ptr noundef nonnull %0, ptr noundef nonnull %685)
  %686 = load i32, ptr %212, align 8, !tbaa !41
  call void @generateSortTail(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %5, i32 noundef %686, ptr noundef nonnull %2)
  br label %687

.thread651.loopexit657:                           ; preds = %78
  store ptr %49, ptr %5, align 8, !tbaa !28
  br label %.thread651

.thread651.loopexit:                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  br label %.thread651

.thread651:                                       ; preds = %.thread651.loopexit, %.thread651.loopexit657, %34, %41, %.critedge, %67, %289, %.thread648
  store i32 %11, ptr %10, align 8, !tbaa !5
  br label %694

687:                                              ; preds = %679, %681
  call void @sqlite3VdbeResolveLabel(ptr noundef %90, i32 noundef %257) #4
  %688 = load i32, ptr %21, align 8, !tbaa !22
  %689 = icmp slt i32 %688, 1
  store i32 %11, ptr %10, align 8, !tbaa !5
  br i1 %689, label %690, label %694

690:                                              ; preds = %687
  %691 = load i8, ptr %2, align 8, !tbaa !23
  %692 = icmp eq i8 %691, 9
  br i1 %692, label %693, label %694

693:                                              ; preds = %690
  call void @generateColumnNames(ptr noundef nonnull %0, ptr noundef nonnull %.0537.lcssa, ptr noundef %212)
  br label %694

694:                                              ; preds = %.thread651, %693, %690, %687
  %.0541655 = phi i32 [ 1, %.thread651 ], [ 0, %693 ], [ 0, %690 ], [ 1, %687 ]
  %695 = getelementptr inbounds i8, ptr %6, i64 32
  %696 = load ptr, ptr %695, align 8, !tbaa !100
  call void @sqlite3DbFree(ptr noundef %15, ptr noundef %696) #4
  %697 = getelementptr inbounds i8, ptr %6, i64 48
  %698 = load ptr, ptr %697, align 8, !tbaa !94
  call void @sqlite3DbFree(ptr noundef %15, ptr noundef %698) #4
  br label %.loopexit

.loopexit:                                        ; preds = %23, %3, %17, %20, %694, %103
  %.0519 = phi i32 [ %.0541655, %694 ], [ %104, %103 ], [ 1, %20 ], [ 1, %17 ], [ 1, %3 ], [ 1, %23 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #4
  ret i32 %.0519
}

declare i32 @sqlite3AuthCheck(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @sqlite3ExprListDelete(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @flattenSubquery(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @multiSelect(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @sqlite3VdbeAddOp2(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3SelectExprHeight(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pushDownWhereTerms(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeAddOp3(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3VdbeEndCoroutine(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3VdbeJumpHere(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3ClearTempRegCache(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeAddOp0(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeAddOp1(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3VdbeChangeP1(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3ExprListCompare(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @sqlite3ExprListDup(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden ptr @keyInfoFromExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare i32 @sqlite3VdbeAddOp4(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @computeLimitRegisters(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @sqlite3VdbeChangeOpcode(ptr noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #2

declare void @sqlite3VdbeChangeP5(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

declare ptr @sqlite3WhereBegin(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i16 noundef zeroext, i32 noundef) local_unnamed_addr #2

declare signext i16 @sqlite3WhereOutputRowCount(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3WhereIsDistinct(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3WhereIsOrdered(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3WhereOrderedInnerLoop(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeChangeToNoop(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @selectInnerLoop(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare i32 @sqlite3WhereContinueLabel(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3WhereBreakLabel(ptr noundef) local_unnamed_addr #2

declare void @sqlite3WhereEnd(ptr noundef) local_unnamed_addr #2

declare void @sqlite3ExprAnalyzeAggList(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @sqlite3ExprAnalyzeAggregates(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @explainTempTable(ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @sqlite3GetTempRange(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3ExprCacheClear(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3ExprCodeExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #2

declare void @sqlite3ExprCodeGetColumnToReg(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3GetTempReg(ptr noundef) local_unnamed_addr #2

declare void @sqlite3ReleaseTempReg(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3ReleaseTempRange(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3WhereIsSorted(ptr noundef) local_unnamed_addr #2

declare void @sqlite3ExprCode(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3ExprCodeMove(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @updateAccumulator(ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @sqlite3VdbeGoto(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3VdbeResolveLabel(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @finalizeAggFunctions(ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @sqlite3ExprIfFalse(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @resetAccumulator(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden ptr @isSimpleCount(ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @sqlite3SchemaToIndex(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @sqlite3CodeVerifySchema(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3TableLock(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare ptr @sqlite3PrimaryKeyIndex(ptr noundef) local_unnamed_addr #2

declare ptr @sqlite3KeyInfoOfIndex(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeAddOp4Int(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @sqlite3VdbeChangeP4(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @explainSimpleCount(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @minMaxQuery(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @generateSortTail(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @generateColumnNames(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 480}
!6 = !{!"Parse", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !8, i64 28, !8, i64 29, !8, i64 30, !8, i64 31, !8, i64 32, !8, i64 33, !8, i64 34, !8, i64 35, !8, i64 36, !8, i64 37, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !7, i64 88, !7, i64 96, !11, i64 104, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !8, i64 192, !8, i64 193, !8, i64 194, !8, i64 196, !8, i64 396, !11, i64 432, !11, i64 448, !12, i64 464, !8, i64 466, !8, i64 467, !8, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !11, i64 536, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"Token", !7, i64 0, !10, i64 8}
!12 = !{!"short", !8, i64 0}
!13 = !{!6, !10, i64 484}
!14 = !{!6, !7, i64 0}
!15 = !{!16, !8, i64 85}
!16 = !{!"sqlite3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !17, i64 48, !17, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !12, i64 80, !8, i64 82, !8, i64 83, !8, i64 84, !8, i64 85, !8, i64 86, !8, i64 87, !8, i64 88, !8, i64 89, !8, i64 90, !8, i64 91, !8, i64 92, !8, i64 93, !8, i64 94, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !8, i64 112, !10, i64 160, !18, i64 164, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, i64 328, !8, i64 336, !19, i64 344, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !10, i64 432, !10, i64 436, !20, i64 440, !7, i64 464, !7, i64 472, !7, i64 480, !20, i64 488, !20, i64 512, !21, i64 536, !8, i64 560, !7, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !17, i64 648, !17, i64 656, !7, i64 664}
!17 = !{!"long long", !8, i64 0}
!18 = !{!"sqlite3InitInfo", !10, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7}
!19 = !{!"Lookaside", !10, i64 0, !12, i64 4, !8, i64 6, !10, i64 8, !10, i64 12, !8, i64 16, !7, i64 32, !7, i64 40, !7, i64 48}
!20 = !{!"Hash", !10, i64 0, !10, i64 4, !7, i64 8, !7, i64 16}
!21 = !{!"BusyHandler", !7, i64 0, !7, i64 8, !10, i64 16}
!22 = !{!6, !10, i64 48}
!23 = !{!24, !8, i64 0}
!24 = !{!"SelectDest", !8, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32}
!25 = !{!26, !7, i64 64}
!26 = !{!"Select", !7, i64 0, !8, i64 8, !12, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104}
!27 = !{!26, !10, i64 12}
!28 = !{!29, !7, i64 0}
!29 = !{!"SortCtx", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !8, i64 32, !8, i64 33}
!30 = !{!26, !7, i64 32}
!31 = !{!26, !7, i64 72}
!32 = !{!33, !10, i64 0}
!33 = !{!"SrcList", !10, i64 0, !10, i64 4, !8, i64 8}
!34 = !{!35, !7, i64 40}
!35 = !{!"SrcList_item", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !36, i64 60, !8, i64 64, !10, i64 68, !7, i64 72, !7, i64 80, !17, i64 88, !8, i64 96, !7, i64 104}
!36 = !{!"", !8, i64 0, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1}
!37 = !{!35, !7, i64 32}
!38 = !{!39, !12, i64 70}
!39 = !{!"Table", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !12, i64 68, !12, i64 70, !12, i64 72, !12, i64 74, !8, i64 76, !10, i64 80, !10, i64 84, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!40 = !{!26, !7, i64 0}
!41 = !{!42, !10, i64 0}
!42 = !{!"ExprList", !10, i64 0, !7, i64 8}
!43 = !{!39, !7, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!35, !10, i64 48}
!47 = !{!35, !10, i64 52}
!48 = !{!6, !10, i64 476}
!49 = !{!35, !8, i64 60}
!50 = !{!26, !7, i64 40}
!51 = !{!35, !10, i64 68}
!52 = !{!16, !12, i64 80}
!53 = !{!6, !10, i64 56}
!54 = !{!35, !8, i64 64}
!55 = !{!26, !12, i64 10}
!56 = !{!39, !12, i64 72}
!57 = !{!24, !10, i64 20}
!58 = !{!35, !10, i64 56}
!59 = distinct !{!59, !45}
!60 = !{!26, !7, i64 48}
!61 = !{!26, !7, i64 56}
!62 = !{!63, !8, i64 0}
!63 = !{!"DistinctCtx", !8, i64 0, !8, i64 1, !10, i64 4, !10, i64 8}
!64 = !{!6, !10, i64 52}
!65 = !{!29, !10, i64 12}
!66 = !{!24, !10, i64 16}
!67 = !{!26, !10, i64 16}
!68 = !{!29, !8, i64 32}
!69 = !{!63, !10, i64 4}
!70 = !{!63, !10, i64 8}
!71 = !{!63, !8, i64 1}
!72 = !{!29, !10, i64 8}
!73 = !{!29, !8, i64 33}
!74 = !{!29, !10, i64 24}
!75 = !{!42, !7, i64 8}
!76 = !{!8, !8, i64 0}
!77 = distinct !{!77, !78}
!78 = !{!"llvm.loop.unroll.disable"}
!79 = distinct !{!79, !45}
!80 = distinct !{!80, !78}
!81 = distinct !{!81, !45}
!82 = !{!83, !7, i64 0}
!83 = !{!"NameContext", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !12, i64 48}
!84 = !{!83, !7, i64 8}
!85 = !{!83, !7, i64 24}
!86 = !{!87, !10, i64 16}
!87 = !{!"AggInfo", !8, i64 0, !8, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !7, i64 48, !10, i64 56}
!88 = !{!87, !10, i64 12}
!89 = !{!87, !7, i64 24}
!90 = !{!87, !10, i64 40}
!91 = !{!87, !10, i64 44}
!92 = !{!87, !10, i64 56}
!93 = !{!83, !12, i64 48}
!94 = !{!87, !7, i64 48}
!95 = !{!96, !7, i64 0}
!96 = !{!"AggInfo_func", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20}
!97 = distinct !{!97, !45}
!98 = !{!87, !10, i64 20}
!99 = !{!87, !10, i64 4}
!100 = !{!87, !7, i64 32}
!101 = !{!102, !10, i64 16}
!102 = !{!"AggInfo_col", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24}
!103 = distinct !{!103, !45}
!104 = !{!102, !7, i64 0}
!105 = !{!102, !10, i64 12}
!106 = !{!102, !10, i64 8}
!107 = distinct !{!107, !45}
!108 = !{!87, !10, i64 8}
!109 = !{!87, !8, i64 1}
!110 = !{!87, !8, i64 0}
!111 = !{!112, !7, i64 0}
!112 = !{!"ExprList_item", !7, i64 0, !7, i64 8, !7, i64 16, !8, i64 24, !10, i64 25, !10, i64 25, !10, i64 25, !8, i64 28}
!113 = distinct !{!113, !45}
!114 = !{!39, !7, i64 112}
!115 = !{!39, !10, i64 56}
!116 = !{!39, !10, i64 64}
!117 = !{!7, !7, i64 0}
!118 = !{!119, !12, i64 92}
!119 = !{!"Index", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !12, i64 92, !12, i64 94, !12, i64 96, !8, i64 98, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99}
!120 = !{!39, !12, i64 74}
!121 = !{!119, !7, i64 72}
!122 = distinct !{!122, !45}
!123 = !{!119, !10, i64 88}
!124 = !{!96, !10, i64 16}
!125 = !{!112, !8, i64 24}
!126 = !{!127, !8, i64 0}
!127 = !{!"Expr", !8, i64 0, !8, i64 1, !10, i64 4, !8, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !12, i64 50, !12, i64 52, !8, i64 54, !7, i64 56, !7, i64 64}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass