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

; 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.Expr = type { i8, i8, i32, %union.anon.6, ptr, ptr, %union.anon.7, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon.6 = type { ptr }
%union.anon.7 = type { ptr }
%struct.WhereInfo = type { ptr, ptr, ptr, ptr, i16, [2 x i32], i32, i32, i32, i16, i8, i8, i8, i8, i8, i8, i8, i32, ptr, i64, i16, %struct.WhereClause, %struct.WhereMaskSet, [1 x %struct.WhereLevel] }
%struct.WhereClause = type { ptr, ptr, i8, i32, i32, ptr, [8 x %struct.WhereTerm] }
%struct.WhereTerm = type { ptr, ptr, i16, i16, i16, i8, i8, i32, i32, i32, %union.anon.5, i64, i64 }
%union.anon.5 = type { ptr }
%struct.WhereMaskSet = type { i32, [64 x i32] }
%struct.WhereLevel = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, %union.anon.0, ptr, i64 }
%union.anon.0 = type { %struct.anon.1 }
%struct.anon.1 = type { i32, ptr }
%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.SrcList = type { i32, i32, [1 x %struct.SrcList_item] }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon, i8, i32, ptr, ptr, i64, %union.anon, ptr }
%struct.anon = type { i8, i8, [2 x i8] }
%union.anon = type { ptr }
%struct.WhereLoop = type { i64, i64, i8, i8, i16, i16, i16, %union.anon.2, i32, i16, i16, i16, ptr, ptr, [3 x ptr] }
%union.anon.2 = type { %struct.anon.3 }
%struct.anon.3 = type { i16, i16, i16, ptr }
%struct.anon.4 = type { i32, i8, i8, i16, ptr }
%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.8, %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.8 = 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.InLoop = type { i32, i32, i8 }
%struct.VdbeOp = type { i8, i8, i16, i32, i32, i32, %union.p4union }
%union.p4union = type { ptr }
%struct.Index = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i16, i16, i16, i8, i8 }
%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.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }
%struct.WhereOrInfo = type { %struct.WhereClause, i64 }

@__const.sqlite3WhereCodeOneLoopStart.aMoveOp = external hidden unnamed_addr constant [4 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStartOp = external hidden constant [8 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aEndOp = external hidden constant [4 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStep = external hidden constant [2 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStart = external hidden constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3WhereExplainOneScan(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i16 noundef zeroext) #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 i32 @sqlite3VdbeAddOp4(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
define dso_local i64 @sqlite3WhereCodeOneLoopStart(ptr noundef %0, i32 noundef %1, i64 noundef %2) #0 {
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [4 x i8], align 1
  %48 = alloca ptr, align 8
  %49 = alloca i16, align 2
  %50 = alloca i16, align 2
  %51 = alloca i16, align 2
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca i8, align 1
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca i8, align 1
  %69 = alloca i8, align 1
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i16, align 2
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca ptr, align 8
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca ptr, align 8
  %108 = alloca %struct.Expr, align 8
  %109 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i64 %2, ptr %7, align 8, !tbaa !11
  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 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  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 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store i32 0, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store i32 0, ptr %26, align 4, !tbaa !9
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.WhereInfo, ptr %110, i32 0, i32 0
  %112 = load ptr, ptr %111, align 8, !tbaa !13
  store ptr %112, ptr %18, align 8, !tbaa !5
  %113 = load ptr, ptr %18, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.Parse, ptr %113, i32 0, i32 2
  %115 = load ptr, ptr %114, align 8, !tbaa !18
  store ptr %115, ptr %20, align 8, !tbaa !5
  %116 = load ptr, ptr %5, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.WhereInfo, ptr %116, i32 0, i32 21
  store ptr %117, ptr %16, align 8, !tbaa !5
  %118 = load ptr, ptr %18, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.Parse, ptr %118, i32 0, i32 0
  %120 = load ptr, ptr %119, align 8, !tbaa !21
  store ptr %120, ptr %19, align 8, !tbaa !5
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.WhereInfo, ptr %121, i32 0, i32 23
  %123 = load i32, ptr %6, align 4, !tbaa !9
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %122, i64 0, i64 %124
  store ptr %125, ptr %14, align 8, !tbaa !5
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.WhereLevel, ptr %126, i32 0, i32 18
  %128 = load ptr, ptr %127, align 8, !tbaa !22
  store ptr %128, ptr %15, align 8, !tbaa !5
  %129 = load ptr, ptr %5, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.WhereInfo, ptr %129, i32 0, i32 1
  %131 = load ptr, ptr %130, align 8, !tbaa !24
  %132 = getelementptr inbounds %struct.SrcList, ptr %131, i32 0, i32 2
  %133 = load ptr, ptr %14, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.WhereLevel, ptr %133, i32 0, i32 11
  %135 = load i8, ptr %134, align 4, !tbaa !25
  %136 = zext i8 %135 to i64
  %137 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %132, i64 0, i64 %136
  store ptr %137, ptr %21, align 8, !tbaa !5
  %138 = load ptr, ptr %21, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.SrcList_item, ptr %138, i32 0, i32 11
  %140 = load i32, ptr %139, align 4, !tbaa !26
  store i32 %140, ptr %10, align 4, !tbaa !9
  %141 = load i64, ptr %7, align 8, !tbaa !11
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.WhereInfo, ptr %142, i32 0, i32 22
  %144 = load i32, ptr %10, align 4, !tbaa !9
  %145 = call i64 @sqlite3WhereGetMask(ptr noundef %143, i32 noundef %144)
  %146 = xor i64 %145, -1
  %147 = and i64 %141, %146
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.WhereLevel, ptr %148, i32 0, i32 19
  store i64 %147, ptr %149, align 8, !tbaa !29
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.WhereInfo, ptr %150, i32 0, i32 19
  %152 = load i64, ptr %151, align 8, !tbaa !30
  %153 = load i32, ptr %6, align 4, !tbaa !9
  %154 = zext i32 %153 to i64
  %155 = lshr i64 %152, %154
  %156 = and i64 %155, 1
  %157 = trunc i64 %156 to i32
  store i32 %157, ptr %13, align 4, !tbaa !9
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.WhereLoop, ptr %158, i32 0, i32 8
  %160 = load i32, ptr %159, align 8, !tbaa !31
  %161 = and i32 %160, 64
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %170

163:                                              ; preds = %3
  %164 = load ptr, ptr %5, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.WhereInfo, ptr %164, i32 0, i32 9
  %166 = load i16, ptr %165, align 8, !tbaa !33
  %167 = zext i16 %166 to i32
  %168 = and i32 %167, 32
  %169 = icmp eq i32 %168, 0
  br label %170

170:                                              ; preds = %163, %3
  %171 = phi i1 [ false, %3 ], [ %169, %163 ]
  %172 = zext i1 %171 to i32
  store i32 %172, ptr %12, align 4, !tbaa !9
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %173)
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.WhereLevel, ptr %175, i32 0, i32 4
  store i32 %174, ptr %176, align 8, !tbaa !34
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.WhereLevel, ptr %177, i32 0, i32 3
  store i32 %174, ptr %178, align 4, !tbaa !35
  store i32 %174, ptr %22, align 4, !tbaa !9
  %179 = load ptr, ptr %20, align 8, !tbaa !5
  %180 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %179)
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.WhereLevel, ptr %181, i32 0, i32 6
  store i32 %180, ptr %182, align 8, !tbaa !36
  store i32 %180, ptr %24, align 4, !tbaa !9
  %183 = load ptr, ptr %14, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.WhereLevel, ptr %183, i32 0, i32 11
  %185 = load i8, ptr %184, align 4, !tbaa !25
  %186 = zext i8 %185 to i32
  %187 = icmp sgt i32 %186, 0
  br i1 %187, label %188, label %209

188:                                              ; preds = %170
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.SrcList_item, ptr %189, i64 0
  %191 = getelementptr inbounds %struct.SrcList_item, ptr %190, i32 0, i32 9
  %192 = getelementptr inbounds %struct.anon, ptr %191, i32 0, i32 0
  %193 = load i8, ptr %192, align 4, !tbaa !37
  %194 = zext i8 %193 to i32
  %195 = and i32 %194, 8
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %209

197:                                              ; preds = %188
  %198 = load ptr, ptr %18, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.Parse, ptr %198, i32 0, i32 18
  %200 = load i32, ptr %199, align 8, !tbaa !38
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %199, align 8, !tbaa !38
  %202 = load ptr, ptr %14, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.WhereLevel, ptr %202, i32 0, i32 0
  store i32 %201, ptr %203, align 8, !tbaa !39
  %204 = load ptr, ptr %20, align 8, !tbaa !5
  %205 = load ptr, ptr %14, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.WhereLevel, ptr %205, i32 0, i32 0
  %207 = load i32, ptr %206, align 8, !tbaa !39
  %208 = call i32 @sqlite3VdbeAddOp2(ptr noundef %204, i32 noundef 77, i32 noundef 0, i32 noundef %207)
  br label %209

209:                                              ; preds = %197, %188, %170
  %210 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %210, ptr %8, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %226, %209
  %212 = load i32, ptr %8, align 4, !tbaa !9
  %213 = icmp sgt i32 %212, 0
  br i1 %213, label %214, label %223

214:                                              ; preds = %211
  %215 = load ptr, ptr %5, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.WhereInfo, ptr %215, i32 0, i32 23
  %217 = load i32, ptr %8, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %216, i64 0, i64 %218
  %220 = getelementptr inbounds %struct.WhereLevel, ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 8, !tbaa !39
  %222 = icmp eq i32 %221, 0
  br label %223

223:                                              ; preds = %214, %211
  %224 = phi i1 [ false, %211 ], [ %222, %214 ]
  br i1 %224, label %225, label %229

225:                                              ; preds = %223
  br label %226

226:                                              ; preds = %225
  %227 = load i32, ptr %8, align 4, !tbaa !9
  %228 = add nsw i32 %227, -1
  store i32 %228, ptr %8, align 4, !tbaa !9
  br label %211, !llvm.loop !40

229:                                              ; preds = %223
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.WhereInfo, ptr %230, i32 0, i32 23
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %231, i64 0, i64 %233
  %235 = getelementptr inbounds %struct.WhereLevel, ptr %234, i32 0, i32 3
  %236 = load i32, ptr %235, align 4, !tbaa !35
  store i32 %236, ptr %23, align 4, !tbaa !9
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.SrcList_item, ptr %237, i32 0, i32 9
  %239 = getelementptr inbounds %struct.anon, ptr %238, i32 0, i32 1
  %240 = load i8, ptr %239, align 1
  %241 = lshr i8 %240, 4
  %242 = and i8 %241, 1
  %243 = zext i8 %242 to i32
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %263

245:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %246 = load ptr, ptr %21, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.SrcList_item, ptr %246, i32 0, i32 7
  %248 = load i32, ptr %247, align 4, !tbaa !42
  store i32 %248, ptr %27, align 4, !tbaa !9
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = load i32, ptr %27, align 4, !tbaa !9
  %251 = load ptr, ptr %21, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.SrcList_item, ptr %251, i32 0, i32 6
  %253 = load i32, ptr %252, align 8, !tbaa !43
  %254 = call i32 @sqlite3VdbeAddOp3(ptr noundef %249, i32 noundef 15, i32 noundef %250, i32 noundef 0, i32 noundef %253)
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = load i32, ptr %27, align 4, !tbaa !9
  %257 = load i32, ptr %22, align 4, !tbaa !9
  %258 = call i32 @sqlite3VdbeAddOp2(ptr noundef %255, i32 noundef 16, i32 noundef %256, i32 noundef %257)
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.WhereLevel, ptr %259, i32 0, i32 16
  store i32 %258, ptr %260, align 4, !tbaa !44
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.WhereLevel, ptr %261, i32 0, i32 12
  store i8 13, ptr %262, align 1, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  br label %1996

263:                                              ; preds = %229
  %264 = load ptr, ptr %15, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.WhereLoop, ptr %264, i32 0, i32 8
  %266 = load i32, ptr %265, align 8, !tbaa !31
  %267 = and i32 %266, 1024
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %501

269:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %270 = load ptr, ptr %15, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.WhereLoop, ptr %270, i32 0, i32 9
  %272 = load i16, ptr %271, align 4, !tbaa !46
  %273 = zext i16 %272 to i32
  store i32 %273, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %274 = load ptr, ptr %18, align 8, !tbaa !5
  call void @sqlite3ExprCachePush(ptr noundef %274)
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = load i32, ptr %30, align 4, !tbaa !9
  %277 = add nsw i32 %276, 2
  %278 = call i32 @sqlite3GetTempRange(ptr noundef %275, i32 noundef %277)
  store i32 %278, ptr %28, align 4, !tbaa !9
  %279 = load ptr, ptr %14, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.WhereLevel, ptr %279, i32 0, i32 3
  %281 = load i32, ptr %280, align 4, !tbaa !35
  store i32 %281, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %332, %269
  %283 = load i32, ptr %8, align 4, !tbaa !9
  %284 = load i32, ptr %30, align 4, !tbaa !9
  %285 = icmp slt i32 %283, %284
  br i1 %285, label %286, label %335

286:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %287 = load i32, ptr %28, align 4, !tbaa !9
  %288 = load i32, ptr %8, align 4, !tbaa !9
  %289 = add nsw i32 %287, %288
  %290 = add nsw i32 %289, 2
  store i32 %290, ptr %32, align 4, !tbaa !9
  %291 = load ptr, ptr %15, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.WhereLoop, ptr %291, i32 0, i32 12
  %293 = load ptr, ptr %292, align 8, !tbaa !47
  %294 = load i32, ptr %8, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds ptr, ptr %293, i64 %295
  %297 = load ptr, ptr %296, align 8, !tbaa !5
  store ptr %297, ptr %17, align 8, !tbaa !5
  %298 = load ptr, ptr %17, align 8, !tbaa !5
  %299 = icmp eq ptr %298, null
  br i1 %299, label %300, label %301

300:                                              ; preds = %286
  store i32 7, ptr %33, align 4
  br label %329

301:                                              ; preds = %286
  %302 = load ptr, ptr %17, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.WhereTerm, ptr %302, i32 0, i32 4
  %304 = load i16, ptr %303, align 4, !tbaa !48
  %305 = zext i16 %304 to i32
  %306 = and i32 %305, 1
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %319

308:                                              ; preds = %301
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  %310 = load ptr, ptr %17, align 8, !tbaa !5
  %311 = load ptr, ptr %14, align 8, !tbaa !5
  %312 = load i32, ptr %8, align 4, !tbaa !9
  %313 = load i32, ptr %13, align 4, !tbaa !9
  %314 = load i32, ptr %32, align 4, !tbaa !9
  %315 = call i32 @codeEqualityTerm(ptr noundef %309, ptr noundef %310, ptr noundef %311, i32 noundef %312, i32 noundef %313, i32 noundef %314)
  %316 = load ptr, ptr %14, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.WhereLevel, ptr %316, i32 0, i32 4
  %318 = load i32, ptr %317, align 8, !tbaa !34
  store i32 %318, ptr %29, align 4, !tbaa !9
  br label %328

319:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  %320 = load ptr, ptr %17, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.WhereTerm, ptr %320, i32 0, i32 0
  %322 = load ptr, ptr %321, align 8, !tbaa !50
  %323 = getelementptr inbounds %struct.Expr, ptr %322, i32 0, i32 5
  %324 = load ptr, ptr %323, align 8, !tbaa !51
  store ptr %324, ptr %34, align 8, !tbaa !5
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = load ptr, ptr %34, align 8, !tbaa !5
  %327 = load i32, ptr %32, align 4, !tbaa !9
  call void @codeExprOrVector(ptr noundef %325, ptr noundef %326, i32 noundef %327, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  br label %328

328:                                              ; preds = %319, %308
  store i32 0, ptr %33, align 4
  br label %329

329:                                              ; preds = %328, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  %330 = load i32, ptr %33, align 4
  switch i32 %330, label %2239 [
    i32 0, label %331
    i32 7, label %332
  ]

331:                                              ; preds = %329
  br label %332

332:                                              ; preds = %331, %329
  %333 = load i32, ptr %8, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %8, align 4, !tbaa !9
  br label %282, !llvm.loop !53

335:                                              ; preds = %282
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.WhereLoop, ptr %337, i32 0, i32 7
  %339 = getelementptr inbounds %struct.anon.4, ptr %338, i32 0, i32 0
  %340 = load i32, ptr %339, align 8, !tbaa !54
  %341 = load i32, ptr %28, align 4, !tbaa !9
  %342 = call i32 @sqlite3VdbeAddOp2(ptr noundef %336, i32 noundef 77, i32 noundef %340, i32 noundef %341)
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = load i32, ptr %30, align 4, !tbaa !9
  %345 = load i32, ptr %28, align 4, !tbaa !9
  %346 = add nsw i32 %345, 1
  %347 = call i32 @sqlite3VdbeAddOp2(ptr noundef %343, i32 noundef 77, i32 noundef %344, i32 noundef %346)
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load i32, ptr %10, align 4, !tbaa !9
  %350 = load i32, ptr %29, align 4, !tbaa !9
  %351 = load i32, ptr %28, align 4, !tbaa !9
  %352 = load ptr, ptr %15, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.WhereLoop, ptr %352, i32 0, i32 7
  %354 = getelementptr inbounds %struct.anon.4, ptr %353, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !54
  %356 = load ptr, ptr %15, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.WhereLoop, ptr %356, i32 0, i32 7
  %358 = getelementptr inbounds %struct.anon.4, ptr %357, i32 0, i32 1
  %359 = load i8, ptr %358, align 4, !tbaa !54
  %360 = zext i8 %359 to i32
  %361 = icmp ne i32 %360, 0
  %362 = zext i1 %361 to i64
  %363 = select i1 %361, i32 -1, i32 -2
  %364 = call i32 @sqlite3VdbeAddOp4(ptr noundef %348, i32 noundef 11, i32 noundef %349, i32 noundef %350, i32 noundef %351, ptr noundef %355, i32 noundef %363)
  %365 = load ptr, ptr %15, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.WhereLoop, ptr %365, i32 0, i32 7
  %367 = getelementptr inbounds %struct.anon.4, ptr %366, i32 0, i32 1
  store i8 0, ptr %367, align 4, !tbaa !54
  %368 = load i32, ptr %10, align 4, !tbaa !9
  %369 = load ptr, ptr %14, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.WhereLevel, ptr %369, i32 0, i32 15
  store i32 %368, ptr %370, align 8, !tbaa !55
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.WhereInfo, ptr %371, i32 0, i32 13
  %373 = load i8, ptr %372, align 1, !tbaa !56
  %374 = zext i8 %373 to i32
  %375 = icmp ne i32 %374, 0
  %376 = zext i1 %375 to i64
  %377 = select i1 %375, i32 162, i32 71
  %378 = trunc i32 %377 to i8
  %379 = load ptr, ptr %14, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.WhereLevel, ptr %379, i32 0, i32 12
  store i8 %378, ptr %380, align 1, !tbaa !45
  %381 = load ptr, ptr %20, align 8, !tbaa !5
  %382 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %381)
  %383 = load ptr, ptr %14, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.WhereLevel, ptr %383, i32 0, i32 16
  store i32 %382, ptr %384, align 4, !tbaa !44
  %385 = load ptr, ptr %14, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.WhereLevel, ptr %385, i32 0, i32 17
  %387 = getelementptr inbounds %struct.anon.1, ptr %386, i32 0, i32 0
  %388 = load i32, ptr %387, align 8, !tbaa !54
  store i32 %388, ptr %31, align 4, !tbaa !9
  %389 = load i32, ptr %30, align 4, !tbaa !9
  %390 = sub nsw i32 %389, 1
  store i32 %390, ptr %8, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %496, %335
  %392 = load i32, ptr %8, align 4, !tbaa !9
  %393 = icmp sge i32 %392, 0
  br i1 %393, label %394, label %499

394:                                              ; preds = %391
  %395 = load ptr, ptr %15, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.WhereLoop, ptr %395, i32 0, i32 12
  %397 = load ptr, ptr %396, align 8, !tbaa !47
  %398 = load i32, ptr %8, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds ptr, ptr %397, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !5
  store ptr %401, ptr %17, align 8, !tbaa !5
  %402 = load i32, ptr %8, align 4, !tbaa !9
  %403 = icmp slt i32 %402, 16
  br i1 %403, label %404, label %417

404:                                              ; preds = %394
  %405 = load ptr, ptr %15, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.WhereLoop, ptr %405, i32 0, i32 7
  %407 = getelementptr inbounds %struct.anon.4, ptr %406, i32 0, i32 3
  %408 = load i16, ptr %407, align 2, !tbaa !54
  %409 = zext i16 %408 to i32
  %410 = load i32, ptr %8, align 4, !tbaa !9
  %411 = ashr i32 %409, %410
  %412 = and i32 %411, 1
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %417

414:                                              ; preds = %404
  %415 = load ptr, ptr %14, align 8, !tbaa !5
  %416 = load ptr, ptr %17, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %415, ptr noundef %416)
  br label %495

417:                                              ; preds = %404, %394
  %418 = load ptr, ptr %17, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.WhereTerm, ptr %418, i32 0, i32 4
  %420 = load i16, ptr %419, align 4, !tbaa !48
  %421 = zext i16 %420 to i32
  %422 = and i32 %421, 1
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %494

424:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %425 = load ptr, ptr %19, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.sqlite3, ptr %425, i32 0, i32 17
  %427 = load i8, ptr %426, align 1, !tbaa !57
  %428 = icmp ne i8 %427, 0
  br i1 %428, label %457, label %429

429:                                              ; preds = %424
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = load ptr, ptr %14, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.WhereLevel, ptr %431, i32 0, i32 17
  %433 = getelementptr inbounds %struct.anon.1, ptr %432, i32 0, i32 1
  %434 = load ptr, ptr %433, align 8, !tbaa !54
  %435 = load i32, ptr %31, align 4, !tbaa !9
  %436 = add nsw i32 %435, -1
  store i32 %436, ptr %31, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds %struct.InLoop, ptr %434, i64 %437
  %439 = getelementptr inbounds %struct.InLoop, ptr %438, i32 0, i32 1
  %440 = load i32, ptr %439, align 4, !tbaa !63
  %441 = call ptr @sqlite3VdbeGetOp(ptr noundef %430, i32 noundef %440)
  store ptr %441, ptr %37, align 8, !tbaa !5
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = load ptr, ptr %37, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.VdbeOp, ptr %443, i32 0, i32 0
  %445 = load i8, ptr %444, align 8, !tbaa !65
  %446 = zext i8 %445 to i32
  %447 = load ptr, ptr %37, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.VdbeOp, ptr %447, i32 0, i32 3
  %449 = load i32, ptr %448, align 4, !tbaa !67
  %450 = load ptr, ptr %37, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.VdbeOp, ptr %450, i32 0, i32 4
  %452 = load i32, ptr %451, align 8, !tbaa !68
  %453 = load ptr, ptr %37, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.VdbeOp, ptr %453, i32 0, i32 5
  %455 = load i32, ptr %454, align 4, !tbaa !69
  %456 = call i32 @sqlite3VdbeAddOp3(ptr noundef %442, i32 noundef %446, i32 noundef %449, i32 noundef %452, i32 noundef %455)
  br label %457

457:                                              ; preds = %429, %424
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = call ptr @sqlite3PExpr(ptr noundef %458, i32 noundef 37, ptr noundef null, ptr noundef null)
  store ptr %459, ptr %35, align 8, !tbaa !5
  %460 = load ptr, ptr %35, align 8, !tbaa !5
  %461 = icmp ne ptr %460, null
  br i1 %461, label %462, label %493

462:                                              ; preds = %457
  %463 = load ptr, ptr %17, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.WhereTerm, ptr %463, i32 0, i32 0
  %465 = load ptr, ptr %464, align 8, !tbaa !50
  %466 = getelementptr inbounds %struct.Expr, ptr %465, i32 0, i32 4
  %467 = load ptr, ptr %466, align 8, !tbaa !70
  %468 = load ptr, ptr %35, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.Expr, ptr %468, i32 0, i32 4
  store ptr %467, ptr %469, align 8, !tbaa !70
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = call ptr @sqlite3Expr(ptr noundef %470, i32 noundef 157, ptr noundef null)
  store ptr %471, ptr %36, align 8, !tbaa !5
  %472 = load ptr, ptr %35, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.Expr, ptr %472, i32 0, i32 5
  store ptr %471, ptr %473, align 8, !tbaa !51
  %474 = load ptr, ptr %36, align 8, !tbaa !5
  %475 = icmp ne ptr %474, null
  br i1 %475, label %476, label %488

476:                                              ; preds = %462
  %477 = load i32, ptr %28, align 4, !tbaa !9
  %478 = load i32, ptr %8, align 4, !tbaa !9
  %479 = add nsw i32 %477, %478
  %480 = add nsw i32 %479, 2
  %481 = load ptr, ptr %36, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.Expr, ptr %481, i32 0, i32 8
  store i32 %480, ptr %482, align 4, !tbaa !71
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = load ptr, ptr %35, align 8, !tbaa !5
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.WhereLevel, ptr %485, i32 0, i32 6
  %487 = load i32, ptr %486, align 8, !tbaa !36
  call void @sqlite3ExprIfFalse(ptr noundef %483, ptr noundef %484, i32 noundef %487, i32 noundef 0)
  br label %488

488:                                              ; preds = %476, %462
  %489 = load ptr, ptr %35, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.Expr, ptr %489, i32 0, i32 4
  store ptr null, ptr %490, align 8, !tbaa !70
  %491 = load ptr, ptr %19, align 8, !tbaa !5
  %492 = load ptr, ptr %35, align 8, !tbaa !5
  call void @sqlite3ExprDelete(ptr noundef %491, ptr noundef %492)
  br label %493

493:                                              ; preds = %488, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  br label %494

494:                                              ; preds = %493, %417
  br label %495

495:                                              ; preds = %494, %414
  br label %496

496:                                              ; preds = %495
  %497 = load i32, ptr %8, align 4, !tbaa !9
  %498 = add nsw i32 %497, -1
  store i32 %498, ptr %8, align 4, !tbaa !9
  br label %391, !llvm.loop !72

499:                                              ; preds = %391
  %500 = load ptr, ptr %18, align 8, !tbaa !5
  call void @sqlite3ExprCachePop(ptr noundef %500)
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  br label %1995

501:                                              ; preds = %263
  %502 = load ptr, ptr %15, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.WhereLoop, ptr %502, i32 0, i32 8
  %504 = load i32, ptr %503, align 8, !tbaa !31
  %505 = and i32 %504, 256
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %551

507:                                              ; preds = %501
  %508 = load ptr, ptr %15, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.WhereLoop, ptr %508, i32 0, i32 8
  %510 = load i32, ptr %509, align 8, !tbaa !31
  %511 = and i32 %510, 5
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %551

513:                                              ; preds = %507
  %514 = load ptr, ptr %15, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.WhereLoop, ptr %514, i32 0, i32 12
  %516 = load ptr, ptr %515, align 8, !tbaa !47
  %517 = getelementptr inbounds ptr, ptr %516, i64 0
  %518 = load ptr, ptr %517, align 8, !tbaa !5
  store ptr %518, ptr %17, align 8, !tbaa !5
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.Parse, ptr %519, i32 0, i32 18
  %521 = load i32, ptr %520, align 8, !tbaa !38
  %522 = add nsw i32 %521, 1
  store i32 %522, ptr %520, align 8, !tbaa !38
  store i32 %522, ptr %26, align 4, !tbaa !9
  %523 = load ptr, ptr %18, align 8, !tbaa !5
  %524 = load ptr, ptr %17, align 8, !tbaa !5
  %525 = load ptr, ptr %14, align 8, !tbaa !5
  %526 = load i32, ptr %13, align 4, !tbaa !9
  %527 = load i32, ptr %26, align 4, !tbaa !9
  %528 = call i32 @codeEqualityTerm(ptr noundef %523, ptr noundef %524, ptr noundef %525, i32 noundef 0, i32 noundef %526, i32 noundef %527)
  store i32 %528, ptr %25, align 4, !tbaa !9
  %529 = load i32, ptr %25, align 4, !tbaa !9
  %530 = load i32, ptr %26, align 4, !tbaa !9
  %531 = icmp ne i32 %529, %530
  br i1 %531, label %532, label %535

532:                                              ; preds = %513
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i32, ptr %26, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %533, i32 noundef %534)
  br label %535

535:                                              ; preds = %532, %513
  %536 = load ptr, ptr %14, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.WhereLevel, ptr %536, i32 0, i32 4
  %538 = load i32, ptr %537, align 8, !tbaa !34
  store i32 %538, ptr %11, align 4, !tbaa !9
  %539 = load ptr, ptr %20, align 8, !tbaa !5
  %540 = load i32, ptr %10, align 4, !tbaa !9
  %541 = load i32, ptr %11, align 4, !tbaa !9
  %542 = load i32, ptr %25, align 4, !tbaa !9
  %543 = call i32 @sqlite3VdbeAddOp3(ptr noundef %539, i32 noundef 32, i32 noundef %540, i32 noundef %541, i32 noundef %542)
  %544 = load ptr, ptr %18, align 8, !tbaa !5
  %545 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3ExprCacheAffinityChange(ptr noundef %544, i32 noundef %545, i32 noundef 1)
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  %547 = load i32, ptr %10, align 4, !tbaa !9
  %548 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3ExprCacheStore(ptr noundef %546, i32 noundef %547, i32 noundef -1, i32 noundef %548)
  %549 = load ptr, ptr %14, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.WhereLevel, ptr %549, i32 0, i32 12
  store i8 -94, ptr %550, align 1, !tbaa !45
  br label %1994

551:                                              ; preds = %507, %501
  %552 = load ptr, ptr %15, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.WhereLoop, ptr %552, i32 0, i32 8
  %554 = load i32, ptr %553, align 8, !tbaa !31
  %555 = and i32 %554, 256
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %758

557:                                              ; preds = %551
  %558 = load ptr, ptr %15, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.WhereLoop, ptr %558, i32 0, i32 8
  %560 = load i32, ptr %559, align 8, !tbaa !31
  %561 = and i32 %560, 2
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %563, label %758

563:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 162, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  store i32 0, ptr %8, align 4, !tbaa !9
  store ptr null, ptr %42, align 8, !tbaa !5
  store ptr null, ptr %41, align 8, !tbaa !5
  %564 = load ptr, ptr %15, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.WhereLoop, ptr %564, i32 0, i32 8
  %566 = load i32, ptr %565, align 8, !tbaa !31
  %567 = and i32 %566, 32
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %569, label %578

569:                                              ; preds = %563
  %570 = load ptr, ptr %15, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.WhereLoop, ptr %570, i32 0, i32 12
  %572 = load ptr, ptr %571, align 8, !tbaa !47
  %573 = load i32, ptr %8, align 4, !tbaa !9
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr %8, align 4, !tbaa !9
  %575 = sext i32 %573 to i64
  %576 = getelementptr inbounds ptr, ptr %572, i64 %575
  %577 = load ptr, ptr %576, align 8, !tbaa !5
  store ptr %577, ptr %41, align 8, !tbaa !5
  br label %578

578:                                              ; preds = %569, %563
  %579 = load ptr, ptr %15, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.WhereLoop, ptr %579, i32 0, i32 8
  %581 = load i32, ptr %580, align 8, !tbaa !31
  %582 = and i32 %581, 16
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %584, label %593

584:                                              ; preds = %578
  %585 = load ptr, ptr %15, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.WhereLoop, ptr %585, i32 0, i32 12
  %587 = load ptr, ptr %586, align 8, !tbaa !47
  %588 = load i32, ptr %8, align 4, !tbaa !9
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %8, align 4, !tbaa !9
  %590 = sext i32 %588 to i64
  %591 = getelementptr inbounds ptr, ptr %587, i64 %590
  %592 = load ptr, ptr %591, align 8, !tbaa !5
  store ptr %592, ptr %42, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %584, %578
  %594 = load i32, ptr %13, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %600

596:                                              ; preds = %593
  %597 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %597, ptr %17, align 8, !tbaa !5
  %598 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %598, ptr %41, align 8, !tbaa !5
  %599 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %599, ptr %42, align 8, !tbaa !5
  br label %600

600:                                              ; preds = %596, %593
  %601 = load ptr, ptr %41, align 8, !tbaa !5
  %602 = icmp ne ptr %601, null
  br i1 %602, label %603, label %658

603:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %47, ptr align 1 @__const.sqlite3WhereCodeOneLoopStart.aMoveOp, i64 4, i1 false)
  %604 = load ptr, ptr %41, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.WhereTerm, ptr %604, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !50
  store ptr %606, ptr %43, align 8, !tbaa !5
  %607 = load ptr, ptr %43, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.Expr, ptr %607, i32 0, i32 5
  %609 = load ptr, ptr %608, align 8, !tbaa !51
  %610 = call i32 @sqlite3ExprIsVector(ptr noundef %609)
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %630

612:                                              ; preds = %603
  %613 = load ptr, ptr %18, align 8, !tbaa !5
  %614 = call i32 @sqlite3GetTempReg(ptr noundef %613)
  store i32 %614, ptr %45, align 4, !tbaa !9
  store i32 %614, ptr %44, align 4, !tbaa !9
  %615 = load ptr, ptr %18, align 8, !tbaa !5
  %616 = load ptr, ptr %43, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.Expr, ptr %616, i32 0, i32 5
  %618 = load ptr, ptr %617, align 8, !tbaa !51
  %619 = load i32, ptr %44, align 4, !tbaa !9
  call void @codeExprOrVector(ptr noundef %615, ptr noundef %618, i32 noundef %619, i32 noundef 1)
  %620 = load ptr, ptr %43, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.Expr, ptr %620, i32 0, i32 0
  %622 = load i8, ptr %621, align 8, !tbaa !73
  %623 = zext i8 %622 to i32
  %624 = sub nsw i32 %623, 38
  %625 = or i32 %624, 1
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds [4 x i8], ptr %47, i64 0, i64 %626
  %628 = load i8, ptr %627, align 1, !tbaa !54
  %629 = zext i8 %628 to i32
  store i32 %629, ptr %46, align 4, !tbaa !9
  br label %647

630:                                              ; preds = %603
  %631 = load ptr, ptr %18, align 8, !tbaa !5
  %632 = load ptr, ptr %43, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.Expr, ptr %632, i32 0, i32 5
  %634 = load ptr, ptr %633, align 8, !tbaa !51
  %635 = call i32 @sqlite3ExprCodeTemp(ptr noundef %631, ptr noundef %634, ptr noundef %45)
  store i32 %635, ptr %44, align 4, !tbaa !9
  %636 = load ptr, ptr %14, align 8, !tbaa !5
  %637 = load ptr, ptr %41, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %636, ptr noundef %637)
  %638 = load ptr, ptr %43, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.Expr, ptr %638, i32 0, i32 0
  %640 = load i8, ptr %639, align 8, !tbaa !73
  %641 = zext i8 %640 to i32
  %642 = sub nsw i32 %641, 38
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [4 x i8], ptr %47, i64 0, i64 %643
  %645 = load i8, ptr %644, align 1, !tbaa !54
  %646 = zext i8 %645 to i32
  store i32 %646, ptr %46, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %630, %612
  %648 = load ptr, ptr %20, align 8, !tbaa !5
  %649 = load i32, ptr %46, align 4, !tbaa !9
  %650 = load i32, ptr %10, align 4, !tbaa !9
  %651 = load i32, ptr %22, align 4, !tbaa !9
  %652 = load i32, ptr %44, align 4, !tbaa !9
  %653 = call i32 @sqlite3VdbeAddOp3(ptr noundef %648, i32 noundef %649, i32 noundef %650, i32 noundef %651, i32 noundef %652)
  %654 = load ptr, ptr %18, align 8, !tbaa !5
  %655 = load i32, ptr %44, align 4, !tbaa !9
  call void @sqlite3ExprCacheAffinityChange(ptr noundef %654, i32 noundef %655, i32 noundef 1)
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  %657 = load i32, ptr %45, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %656, i32 noundef %657)
  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 8, ptr %43) #4
  br label %667

658:                                              ; preds = %600
  %659 = load ptr, ptr %20, align 8, !tbaa !5
  %660 = load i32, ptr %13, align 4, !tbaa !9
  %661 = icmp ne i32 %660, 0
  %662 = zext i1 %661 to i64
  %663 = select i1 %661, i32 53, i32 58
  %664 = load i32, ptr %10, align 4, !tbaa !9
  %665 = load i32, ptr %23, align 4, !tbaa !9
  %666 = call i32 @sqlite3VdbeAddOp2(ptr noundef %659, i32 noundef %663, i32 noundef %664, i32 noundef %665)
  br label %667

667:                                              ; preds = %658, %647
  %668 = load ptr, ptr %42, align 8, !tbaa !5
  %669 = icmp ne ptr %668, null
  br i1 %669, label %670, label %720

670:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  %671 = load ptr, ptr %42, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.WhereTerm, ptr %671, i32 0, i32 0
  %673 = load ptr, ptr %672, align 8, !tbaa !50
  store ptr %673, ptr %48, align 8, !tbaa !5
  %674 = load ptr, ptr %18, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.Parse, ptr %674, i32 0, i32 18
  %676 = load i32, ptr %675, align 8, !tbaa !38
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %675, align 8, !tbaa !38
  store i32 %677, ptr %40, align 4, !tbaa !9
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = load ptr, ptr %48, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.Expr, ptr %679, i32 0, i32 5
  %681 = load ptr, ptr %680, align 8, !tbaa !51
  %682 = load i32, ptr %40, align 4, !tbaa !9
  call void @codeExprOrVector(ptr noundef %678, ptr noundef %681, i32 noundef %682, i32 noundef 1)
  %683 = load ptr, ptr %48, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.Expr, ptr %683, i32 0, i32 5
  %685 = load ptr, ptr %684, align 8, !tbaa !51
  %686 = call i32 @sqlite3ExprIsVector(ptr noundef %685)
  %687 = icmp eq i32 0, %686
  br i1 %687, label %688, label %705

688:                                              ; preds = %670
  %689 = load ptr, ptr %48, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.Expr, ptr %689, i32 0, i32 0
  %691 = load i8, ptr %690, align 8, !tbaa !73
  %692 = zext i8 %691 to i32
  %693 = icmp eq i32 %692, 40
  br i1 %693, label %700, label %694

694:                                              ; preds = %688
  %695 = load ptr, ptr %48, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.Expr, ptr %695, i32 0, i32 0
  %697 = load i8, ptr %696, align 8, !tbaa !73
  %698 = zext i8 %697 to i32
  %699 = icmp eq i32 %698, 38
  br i1 %699, label %700, label %705

700:                                              ; preds = %694, %688
  %701 = load i32, ptr %13, align 4, !tbaa !9
  %702 = icmp ne i32 %701, 0
  %703 = zext i1 %702 to i64
  %704 = select i1 %702, i32 39, i32 41
  store i32 %704, ptr %38, align 4, !tbaa !9
  br label %710

705:                                              ; preds = %694, %670
  %706 = load i32, ptr %13, align 4, !tbaa !9
  %707 = icmp ne i32 %706, 0
  %708 = zext i1 %707 to i64
  %709 = select i1 %707, i32 40, i32 38
  store i32 %709, ptr %38, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %705, %700
  %711 = load ptr, ptr %48, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.Expr, ptr %711, i32 0, i32 5
  %713 = load ptr, ptr %712, align 8, !tbaa !51
  %714 = call i32 @sqlite3ExprIsVector(ptr noundef %713)
  %715 = icmp eq i32 0, %714
  br i1 %715, label %716, label %719

716:                                              ; preds = %710
  %717 = load ptr, ptr %14, align 8, !tbaa !5
  %718 = load ptr, ptr %42, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %717, ptr noundef %718)
  br label %719

719:                                              ; preds = %716, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  br label %720

720:                                              ; preds = %719, %667
  %721 = load ptr, ptr %20, align 8, !tbaa !5
  %722 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %721)
  store i32 %722, ptr %39, align 4, !tbaa !9
  %723 = load i32, ptr %13, align 4, !tbaa !9
  %724 = icmp ne i32 %723, 0
  %725 = zext i1 %724 to i64
  %726 = select i1 %724, i32 6, i32 7
  %727 = trunc i32 %726 to i8
  %728 = load ptr, ptr %14, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.WhereLevel, ptr %728, i32 0, i32 12
  store i8 %727, ptr %729, align 1, !tbaa !45
  %730 = load i32, ptr %10, align 4, !tbaa !9
  %731 = load ptr, ptr %14, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.WhereLevel, ptr %731, i32 0, i32 15
  store i32 %730, ptr %732, align 8, !tbaa !55
  %733 = load i32, ptr %39, align 4, !tbaa !9
  %734 = load ptr, ptr %14, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.WhereLevel, ptr %734, i32 0, i32 16
  store i32 %733, ptr %735, align 4, !tbaa !44
  %736 = load i32, ptr %38, align 4, !tbaa !9
  %737 = icmp ne i32 %736, 162
  br i1 %737, label %738, label %757

738:                                              ; preds = %720
  %739 = load ptr, ptr %18, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.Parse, ptr %739, i32 0, i32 18
  %741 = load i32, ptr %740, align 8, !tbaa !38
  %742 = add nsw i32 %741, 1
  store i32 %742, ptr %740, align 8, !tbaa !38
  store i32 %742, ptr %25, align 4, !tbaa !9
  %743 = load ptr, ptr %20, align 8, !tbaa !5
  %744 = load i32, ptr %10, align 4, !tbaa !9
  %745 = load i32, ptr %25, align 4, !tbaa !9
  %746 = call i32 @sqlite3VdbeAddOp2(ptr noundef %743, i32 noundef 123, i32 noundef %744, i32 noundef %745)
  %747 = load ptr, ptr %18, align 8, !tbaa !5
  %748 = load i32, ptr %10, align 4, !tbaa !9
  %749 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3ExprCacheStore(ptr noundef %747, i32 noundef %748, i32 noundef -1, i32 noundef %749)
  %750 = load ptr, ptr %20, align 8, !tbaa !5
  %751 = load i32, ptr %38, align 4, !tbaa !9
  %752 = load i32, ptr %40, align 4, !tbaa !9
  %753 = load i32, ptr %22, align 4, !tbaa !9
  %754 = load i32, ptr %25, align 4, !tbaa !9
  %755 = call i32 @sqlite3VdbeAddOp3(ptr noundef %750, i32 noundef %751, i32 noundef %752, i32 noundef %753, i32 noundef %754)
  %756 = load ptr, ptr %20, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %756, i16 noundef zeroext 83)
  br label %757

757:                                              ; preds = %738, %720
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %1993

758:                                              ; preds = %557, %551
  %759 = load ptr, ptr %15, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.WhereLoop, ptr %759, i32 0, i32 8
  %761 = load i32, ptr %760, align 8, !tbaa !31
  %762 = and i32 %761, 512
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %1429

764:                                              ; preds = %758
  call void @llvm.lifetime.start.p0(i64 2, ptr %49) #4
  %765 = load ptr, ptr %15, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.WhereLoop, ptr %765, i32 0, i32 7
  %767 = getelementptr inbounds %struct.anon.3, ptr %766, i32 0, i32 0
  %768 = load i16, ptr %767, align 8, !tbaa !54
  store i16 %768, ptr %49, align 2, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 2, ptr %50) #4
  %769 = load ptr, ptr %15, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.WhereLoop, ptr %769, i32 0, i32 7
  %771 = getelementptr inbounds %struct.anon.3, ptr %770, i32 0, i32 1
  %772 = load i16, ptr %771, align 2, !tbaa !54
  store i16 %772, ptr %50, align 2, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 2, ptr %51) #4
  %773 = load ptr, ptr %15, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.WhereLoop, ptr %773, i32 0, i32 7
  %775 = getelementptr inbounds %struct.anon.3, ptr %774, i32 0, i32 2
  %776 = load i16, ptr %775, align 4, !tbaa !54
  store i16 %776, ptr %51, align 2, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  store ptr null, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  store ptr null, ptr %54, align 8, !tbaa !5
  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 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  store i32 0, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  store ptr null, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #4
  store i8 0, ptr %65, align 1, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #4
  store i8 0, ptr %66, align 1, !tbaa !54
  %777 = load ptr, ptr %15, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.WhereLoop, ptr %777, i32 0, i32 7
  %779 = getelementptr inbounds %struct.anon.3, ptr %778, i32 0, i32 3
  %780 = load ptr, ptr %779, align 8, !tbaa !54
  store ptr %780, ptr %59, align 8, !tbaa !5
  %781 = load ptr, ptr %14, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.WhereLevel, ptr %781, i32 0, i32 2
  %783 = load i32, ptr %782, align 8, !tbaa !75
  store i32 %783, ptr %60, align 4, !tbaa !9
  %784 = load ptr, ptr %5, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.WhereInfo, ptr %784, i32 0, i32 9
  %786 = load i16, ptr %785, align 8, !tbaa !33
  %787 = zext i16 %786 to i32
  %788 = and i32 %787, 1
  %789 = icmp ne i32 %788, 0
  br i1 %789, label %790, label %805

790:                                              ; preds = %764
  %791 = load ptr, ptr %5, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.WhereInfo, ptr %791, i32 0, i32 11
  %793 = load i8, ptr %792, align 1, !tbaa !76
  %794 = sext i8 %793 to i32
  %795 = icmp sgt i32 %794, 0
  br i1 %795, label %796, label %805

796:                                              ; preds = %790
  %797 = load ptr, ptr %59, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.Index, ptr %797, i32 0, i32 13
  %799 = load i16, ptr %798, align 2, !tbaa !77
  %800 = zext i16 %799 to i32
  %801 = load i16, ptr %49, align 2, !tbaa !74
  %802 = zext i16 %801 to i32
  %803 = icmp sgt i32 %800, %802
  br i1 %803, label %804, label %805

804:                                              ; preds = %796
  store i8 1, ptr %65, align 1, !tbaa !54
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %805

805:                                              ; preds = %804, %796, %790, %764
  %806 = load i16, ptr %49, align 2, !tbaa !74
  %807 = zext i16 %806 to i32
  store i32 %807, ptr %8, align 4, !tbaa !9
  %808 = load ptr, ptr %15, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.WhereLoop, ptr %808, i32 0, i32 8
  %810 = load i32, ptr %809, align 8, !tbaa !31
  %811 = and i32 %810, 32
  %812 = icmp ne i32 %811, 0
  br i1 %812, label %813, label %839

813:                                              ; preds = %805
  %814 = load ptr, ptr %15, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.WhereLoop, ptr %814, i32 0, i32 12
  %816 = load ptr, ptr %815, align 8, !tbaa !47
  %817 = load i32, ptr %8, align 4, !tbaa !9
  %818 = add nsw i32 %817, 1
  store i32 %818, ptr %8, align 4, !tbaa !9
  %819 = sext i32 %817 to i64
  %820 = getelementptr inbounds ptr, ptr %816, i64 %819
  %821 = load ptr, ptr %820, align 8, !tbaa !5
  store ptr %821, ptr %53, align 8, !tbaa !5
  %822 = load i32, ptr %61, align 4, !tbaa !9
  %823 = load ptr, ptr %15, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.WhereLoop, ptr %823, i32 0, i32 7
  %825 = getelementptr inbounds %struct.anon.3, ptr %824, i32 0, i32 1
  %826 = load i16, ptr %825, align 2, !tbaa !54
  %827 = zext i16 %826 to i32
  %828 = icmp sgt i32 %822, %827
  br i1 %828, label %829, label %831

829:                                              ; preds = %813
  %830 = load i32, ptr %61, align 4, !tbaa !9
  br label %837

831:                                              ; preds = %813
  %832 = load ptr, ptr %15, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.WhereLoop, ptr %832, i32 0, i32 7
  %834 = getelementptr inbounds %struct.anon.3, ptr %833, i32 0, i32 1
  %835 = load i16, ptr %834, align 2, !tbaa !54
  %836 = zext i16 %835 to i32
  br label %837

837:                                              ; preds = %831, %829
  %838 = phi i32 [ %830, %829 ], [ %836, %831 ]
  store i32 %838, ptr %61, align 4, !tbaa !9
  br label %839

839:                                              ; preds = %837, %805
  %840 = load ptr, ptr %15, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.WhereLoop, ptr %840, i32 0, i32 8
  %842 = load i32, ptr %841, align 8, !tbaa !31
  %843 = and i32 %842, 16
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %946

845:                                              ; preds = %839
  %846 = load ptr, ptr %15, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.WhereLoop, ptr %846, i32 0, i32 12
  %848 = load ptr, ptr %847, align 8, !tbaa !47
  %849 = load i32, ptr %8, align 4, !tbaa !9
  %850 = add nsw i32 %849, 1
  store i32 %850, ptr %8, align 4, !tbaa !9
  %851 = sext i32 %849 to i64
  %852 = getelementptr inbounds ptr, ptr %848, i64 %851
  %853 = load ptr, ptr %852, align 8, !tbaa !5
  store ptr %853, ptr %54, align 8, !tbaa !5
  %854 = load i32, ptr %61, align 4, !tbaa !9
  %855 = load ptr, ptr %15, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.WhereLoop, ptr %855, i32 0, i32 7
  %857 = getelementptr inbounds %struct.anon.3, ptr %856, i32 0, i32 2
  %858 = load i16, ptr %857, align 4, !tbaa !54
  %859 = zext i16 %858 to i32
  %860 = icmp sgt i32 %854, %859
  br i1 %860, label %861, label %863

861:                                              ; preds = %845
  %862 = load i32, ptr %61, align 4, !tbaa !9
  br label %869

863:                                              ; preds = %845
  %864 = load ptr, ptr %15, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.WhereLoop, ptr %864, i32 0, i32 7
  %866 = getelementptr inbounds %struct.anon.3, ptr %865, i32 0, i32 2
  %867 = load i16, ptr %866, align 4, !tbaa !54
  %868 = zext i16 %867 to i32
  br label %869

869:                                              ; preds = %863, %861
  %870 = phi i32 [ %862, %861 ], [ %868, %863 ]
  store i32 %870, ptr %61, align 4, !tbaa !9
  %871 = load ptr, ptr %54, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.WhereTerm, ptr %871, i32 0, i32 3
  %873 = load i16, ptr %872, align 2, !tbaa !79
  %874 = zext i16 %873 to i32
  %875 = and i32 %874, 256
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %913

877:                                              ; preds = %869
  %878 = load ptr, ptr %18, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.Parse, ptr %878, i32 0, i32 18
  %880 = load i32, ptr %879, align 8, !tbaa !38
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %879, align 8, !tbaa !38
  %882 = load ptr, ptr %14, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.WhereLevel, ptr %882, i32 0, i32 9
  store i32 %881, ptr %883, align 4, !tbaa !80
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load ptr, ptr %14, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.WhereLevel, ptr %885, i32 0, i32 9
  %887 = load i32, ptr %886, align 4, !tbaa !80
  %888 = call i32 @sqlite3VdbeAddOp2(ptr noundef %884, i32 noundef 77, i32 noundef 1, i32 noundef %887)
  %889 = load ptr, ptr %20, align 8, !tbaa !5
  %890 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %889)
  %891 = load ptr, ptr %14, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.WhereLevel, ptr %891, i32 0, i32 10
  store i32 %890, ptr %892, align 8, !tbaa !81
  %893 = load ptr, ptr %14, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.WhereLevel, ptr %893, i32 0, i32 9
  %895 = load i32, ptr %894, align 4, !tbaa !80
  %896 = shl i32 %895, 1
  store i32 %896, ptr %894, align 4, !tbaa !80
  %897 = load i32, ptr %13, align 4, !tbaa !9
  %898 = load ptr, ptr %59, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.Index, ptr %898, i32 0, i32 7
  %900 = load ptr, ptr %899, align 8, !tbaa !82
  %901 = load i16, ptr %49, align 2, !tbaa !74
  %902 = zext i16 %901 to i64
  %903 = getelementptr inbounds i8, ptr %900, i64 %902
  %904 = load i8, ptr %903, align 1, !tbaa !54
  %905 = zext i8 %904 to i32
  %906 = icmp eq i32 %905, 1
  %907 = zext i1 %906 to i32
  %908 = xor i32 %897, %907
  %909 = load ptr, ptr %14, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.WhereLevel, ptr %909, i32 0, i32 9
  %911 = load i32, ptr %910, align 4, !tbaa !80
  %912 = or i32 %911, %908
  store i32 %912, ptr %910, align 4, !tbaa !80
  br label %913

913:                                              ; preds = %877, %869
  %914 = load ptr, ptr %53, align 8, !tbaa !5
  %915 = icmp eq ptr %914, null
  br i1 %915, label %916, label %945

916:                                              ; preds = %913
  %917 = load ptr, ptr %59, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.Index, ptr %917, i32 0, i32 1
  %919 = load ptr, ptr %918, align 8, !tbaa !83
  %920 = load i16, ptr %49, align 2, !tbaa !74
  %921 = zext i16 %920 to i64
  %922 = getelementptr inbounds i16, ptr %919, i64 %921
  %923 = load i16, ptr %922, align 2, !tbaa !74
  %924 = sext i16 %923 to i32
  store i32 %924, ptr %8, align 4, !tbaa !9
  %925 = load i32, ptr %8, align 4, !tbaa !9
  %926 = icmp sge i32 %925, 0
  br i1 %926, label %927, label %940

927:                                              ; preds = %916
  %928 = load ptr, ptr %59, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.Index, ptr %928, i32 0, i32 3
  %930 = load ptr, ptr %929, align 8, !tbaa !84
  %931 = getelementptr inbounds %struct.Table, ptr %930, i32 0, i32 1
  %932 = load ptr, ptr %931, align 8, !tbaa !85
  %933 = load i32, ptr %8, align 4, !tbaa !9
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds %struct.Column, ptr %932, i64 %934
  %936 = getelementptr inbounds %struct.Column, ptr %935, i32 0, i32 3
  %937 = load i8, ptr %936, align 8, !tbaa !87
  %938 = zext i8 %937 to i32
  %939 = icmp eq i32 %938, 0
  br i1 %939, label %943, label %940

940:                                              ; preds = %927, %916
  %941 = load i32, ptr %8, align 4, !tbaa !9
  %942 = icmp eq i32 %941, -2
  br i1 %942, label %943, label %944

943:                                              ; preds = %940, %927
  store i8 1, ptr %65, align 1, !tbaa !54
  br label %944

944:                                              ; preds = %943, %940
  br label %945

945:                                              ; preds = %944, %913
  br label %946

946:                                              ; preds = %945, %839
  %947 = load i16, ptr %49, align 2, !tbaa !74
  %948 = zext i16 %947 to i32
  %949 = load ptr, ptr %59, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.Index, ptr %949, i32 0, i32 13
  %951 = load i16, ptr %950, align 2, !tbaa !77
  %952 = zext i16 %951 to i32
  %953 = icmp slt i32 %948, %952
  br i1 %953, label %954, label %967

954:                                              ; preds = %946
  %955 = load i32, ptr %13, align 4, !tbaa !9
  %956 = load ptr, ptr %59, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.Index, ptr %956, i32 0, i32 7
  %958 = load ptr, ptr %957, align 8, !tbaa !82
  %959 = load i16, ptr %49, align 2, !tbaa !74
  %960 = zext i16 %959 to i64
  %961 = getelementptr inbounds i8, ptr %958, i64 %960
  %962 = load i8, ptr %961, align 1, !tbaa !54
  %963 = zext i8 %962 to i32
  %964 = icmp eq i32 %963, 0
  %965 = zext i1 %964 to i32
  %966 = icmp eq i32 %955, %965
  br i1 %966, label %978, label %967

967:                                              ; preds = %954, %946
  %968 = load i32, ptr %13, align 4, !tbaa !9
  %969 = icmp ne i32 %968, 0
  br i1 %969, label %970, label %990

970:                                              ; preds = %967
  %971 = load ptr, ptr %59, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.Index, ptr %971, i32 0, i32 13
  %973 = load i16, ptr %972, align 2, !tbaa !77
  %974 = zext i16 %973 to i32
  %975 = load i16, ptr %49, align 2, !tbaa !74
  %976 = zext i16 %975 to i32
  %977 = icmp eq i32 %974, %976
  br i1 %977, label %978, label %990

978:                                              ; preds = %970, %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  %979 = load ptr, ptr %54, align 8, !tbaa !5
  store ptr %979, ptr %67, align 8, !tbaa !5
  %980 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %980, ptr %54, align 8, !tbaa !5
  %981 = load ptr, ptr %67, align 8, !tbaa !5
  store ptr %981, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #4
  %982 = load i8, ptr %65, align 1, !tbaa !54
  store i8 %982, ptr %68, align 1, !tbaa !54
  %983 = load i8, ptr %66, align 1, !tbaa !54
  store i8 %983, ptr %65, align 1, !tbaa !54
  %984 = load i8, ptr %68, align 1, !tbaa !54
  store i8 %984, ptr %66, align 1, !tbaa !54
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #4
  %985 = load i16, ptr %50, align 2, !tbaa !74
  %986 = trunc i16 %985 to i8
  store i8 %986, ptr %69, align 1, !tbaa !54
  %987 = load i16, ptr %51, align 2, !tbaa !74
  store i16 %987, ptr %50, align 2, !tbaa !74
  %988 = load i8, ptr %69, align 1, !tbaa !54
  %989 = zext i8 %988 to i16
  store i16 %989, ptr %51, align 2, !tbaa !74
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #4
  br label %990

990:                                              ; preds = %978, %970, %967
  %991 = load ptr, ptr %18, align 8, !tbaa !5
  %992 = load ptr, ptr %14, align 8, !tbaa !5
  %993 = load i32, ptr %13, align 4, !tbaa !9
  %994 = load i32, ptr %61, align 4, !tbaa !9
  %995 = call i32 @codeAllEqualityTerms(ptr noundef %991, ptr noundef %992, i32 noundef %993, i32 noundef %994, ptr noundef %63)
  store i32 %995, ptr %52, align 4, !tbaa !9
  %996 = load ptr, ptr %63, align 8, !tbaa !5
  %997 = icmp ne ptr %996, null
  br i1 %997, label %998, label %1009

998:                                              ; preds = %990
  %999 = load i16, ptr %51, align 2, !tbaa !74
  %1000 = zext i16 %999 to i32
  %1001 = icmp ne i32 %1000, 0
  br i1 %1001, label %1002, label %1009

1002:                                             ; preds = %998
  %1003 = load ptr, ptr %19, align 8, !tbaa !5
  %1004 = load ptr, ptr %63, align 8, !tbaa !5
  %1005 = load i16, ptr %49, align 2, !tbaa !74
  %1006 = zext i16 %1005 to i64
  %1007 = getelementptr inbounds i8, ptr %1004, i64 %1006
  %1008 = call ptr @sqlite3DbStrDup(ptr noundef %1003, ptr noundef %1007)
  store ptr %1008, ptr %64, align 8, !tbaa !5
  br label %1009

1009:                                             ; preds = %1002, %998, %990
  %1010 = load ptr, ptr %14, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.WhereLevel, ptr %1010, i32 0, i32 4
  %1012 = load i32, ptr %1011, align 8, !tbaa !34
  store i32 %1012, ptr %11, align 4, !tbaa !9
  %1013 = load ptr, ptr %53, align 8, !tbaa !5
  %1014 = icmp ne ptr %1013, null
  br i1 %1014, label %1015, label %1022

1015:                                             ; preds = %1009
  %1016 = load ptr, ptr %53, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.WhereTerm, ptr %1016, i32 0, i32 4
  %1018 = load i16, ptr %1017, align 4, !tbaa !48
  %1019 = zext i16 %1018 to i32
  %1020 = and i32 %1019, 40
  %1021 = icmp ne i32 %1020, 0
  br label %1022

1022:                                             ; preds = %1015, %1009
  %1023 = phi i1 [ true, %1009 ], [ %1021, %1015 ]
  %1024 = zext i1 %1023 to i32
  store i32 %1024, ptr %55, align 4, !tbaa !9
  %1025 = load ptr, ptr %54, align 8, !tbaa !5
  %1026 = icmp ne ptr %1025, null
  br i1 %1026, label %1027, label %1034

1027:                                             ; preds = %1022
  %1028 = load ptr, ptr %54, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.WhereTerm, ptr %1028, i32 0, i32 4
  %1030 = load i16, ptr %1029, align 4, !tbaa !48
  %1031 = zext i16 %1030 to i32
  %1032 = and i32 %1031, 40
  %1033 = icmp ne i32 %1032, 0
  br label %1034

1034:                                             ; preds = %1027, %1022
  %1035 = phi i1 [ true, %1022 ], [ %1033, %1027 ]
  %1036 = zext i1 %1035 to i32
  store i32 %1036, ptr %56, align 4, !tbaa !9
  %1037 = load ptr, ptr %53, align 8, !tbaa !5
  %1038 = icmp ne ptr %1037, null
  br i1 %1038, label %1043, label %1039

1039:                                             ; preds = %1034
  %1040 = load i16, ptr %49, align 2, !tbaa !74
  %1041 = zext i16 %1040 to i32
  %1042 = icmp sgt i32 %1041, 0
  br label %1043

1043:                                             ; preds = %1039, %1034
  %1044 = phi i1 [ true, %1034 ], [ %1042, %1039 ]
  %1045 = zext i1 %1044 to i32
  store i32 %1045, ptr %57, align 4, !tbaa !9
  %1046 = load i16, ptr %49, align 2, !tbaa !74
  %1047 = zext i16 %1046 to i32
  store i32 %1047, ptr %58, align 4, !tbaa !9
  %1048 = load ptr, ptr %53, align 8, !tbaa !5
  %1049 = icmp ne ptr %1048, null
  br i1 %1049, label %1050, label %1109

1050:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  %1051 = load ptr, ptr %53, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.WhereTerm, ptr %1051, i32 0, i32 0
  %1053 = load ptr, ptr %1052, align 8, !tbaa !50
  %1054 = getelementptr inbounds %struct.Expr, ptr %1053, i32 0, i32 5
  %1055 = load ptr, ptr %1054, align 8, !tbaa !51
  store ptr %1055, ptr %70, align 8, !tbaa !5
  %1056 = load ptr, ptr %18, align 8, !tbaa !5
  %1057 = load ptr, ptr %70, align 8, !tbaa !5
  %1058 = load i32, ptr %52, align 4, !tbaa !9
  %1059 = load i16, ptr %49, align 2, !tbaa !74
  %1060 = zext i16 %1059 to i32
  %1061 = add nsw i32 %1058, %1060
  %1062 = load i16, ptr %50, align 2, !tbaa !74
  %1063 = zext i16 %1062 to i32
  call void @codeExprOrVector(ptr noundef %1056, ptr noundef %1057, i32 noundef %1061, i32 noundef %1063)
  %1064 = load ptr, ptr %20, align 8, !tbaa !5
  %1065 = load ptr, ptr %14, align 8, !tbaa !5
  %1066 = load ptr, ptr %53, align 8, !tbaa !5
  call void @whereLikeOptimizationStringFixup(ptr noundef %1064, ptr noundef %1065, ptr noundef %1066)
  %1067 = load ptr, ptr %53, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.WhereTerm, ptr %1067, i32 0, i32 3
  %1069 = load i16, ptr %1068, align 2, !tbaa !79
  %1070 = zext i16 %1069 to i32
  %1071 = and i32 %1070, 0
  %1072 = icmp eq i32 %1071, 0
  br i1 %1072, label %1073, label %1085

1073:                                             ; preds = %1050
  %1074 = load ptr, ptr %70, align 8, !tbaa !5
  %1075 = call i32 @sqlite3ExprCanBeNull(ptr noundef %1074)
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1085

1077:                                             ; preds = %1073
  %1078 = load ptr, ptr %20, align 8, !tbaa !5
  %1079 = load i32, ptr %52, align 4, !tbaa !9
  %1080 = load i16, ptr %49, align 2, !tbaa !74
  %1081 = zext i16 %1080 to i32
  %1082 = add nsw i32 %1079, %1081
  %1083 = load i32, ptr %11, align 4, !tbaa !9
  %1084 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1078, i32 noundef 34, i32 noundef %1082, i32 noundef %1083)
  br label %1085

1085:                                             ; preds = %1077, %1073, %1050
  %1086 = load ptr, ptr %63, align 8, !tbaa !5
  %1087 = icmp ne ptr %1086, null
  br i1 %1087, label %1088, label %1096

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr %70, align 8, !tbaa !5
  %1090 = load i16, ptr %50, align 2, !tbaa !74
  %1091 = zext i16 %1090 to i32
  %1092 = load ptr, ptr %63, align 8, !tbaa !5
  %1093 = load i16, ptr %49, align 2, !tbaa !74
  %1094 = zext i16 %1093 to i64
  %1095 = getelementptr inbounds i8, ptr %1092, i64 %1094
  call void @updateRangeAffinityStr(ptr noundef %1089, i32 noundef %1091, ptr noundef %1095)
  br label %1096

1096:                                             ; preds = %1088, %1085
  %1097 = load i16, ptr %50, align 2, !tbaa !74
  %1098 = zext i16 %1097 to i32
  %1099 = load i32, ptr %58, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, %1098
  store i32 %1100, ptr %58, align 4, !tbaa !9
  %1101 = load ptr, ptr %70, align 8, !tbaa !5
  %1102 = call i32 @sqlite3ExprIsVector(ptr noundef %1101)
  %1103 = icmp eq i32 %1102, 0
  br i1 %1103, label %1104, label %1107

1104:                                             ; preds = %1096
  %1105 = load ptr, ptr %14, align 8, !tbaa !5
  %1106 = load ptr, ptr %53, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %1105, ptr noundef %1106)
  br label %1108

1107:                                             ; preds = %1096
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1108

1108:                                             ; preds = %1107, %1104
  store i8 0, ptr %65, align 1, !tbaa !54
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  br label %1122

1109:                                             ; preds = %1043
  %1110 = load i8, ptr %65, align 1, !tbaa !54
  %1111 = icmp ne i8 %1110, 0
  br i1 %1111, label %1112, label %1121

1112:                                             ; preds = %1109
  %1113 = load ptr, ptr %20, align 8, !tbaa !5
  %1114 = load i32, ptr %52, align 4, !tbaa !9
  %1115 = load i16, ptr %49, align 2, !tbaa !74
  %1116 = zext i16 %1115 to i32
  %1117 = add nsw i32 %1114, %1116
  %1118 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1113, i32 noundef 80, i32 noundef 0, i32 noundef %1117)
  %1119 = load i32, ptr %58, align 4, !tbaa !9
  %1120 = add nsw i32 %1119, 1
  store i32 %1120, ptr %58, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %1121

1121:                                             ; preds = %1112, %1109
  br label %1122

1122:                                             ; preds = %1121, %1108
  %1123 = load ptr, ptr %18, align 8, !tbaa !5
  %1124 = load i32, ptr %52, align 4, !tbaa !9
  %1125 = load i32, ptr %58, align 4, !tbaa !9
  %1126 = load i8, ptr %65, align 1, !tbaa !54
  %1127 = zext i8 %1126 to i32
  %1128 = sub nsw i32 %1125, %1127
  %1129 = load ptr, ptr %63, align 8, !tbaa !5
  call void @codeApplyAffinity(ptr noundef %1123, i32 noundef %1124, i32 noundef %1128, ptr noundef %1129)
  %1130 = load ptr, ptr %15, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.WhereLoop, ptr %1130, i32 0, i32 10
  %1132 = load i16, ptr %1131, align 2, !tbaa !89
  %1133 = zext i16 %1132 to i32
  %1134 = icmp sgt i32 %1133, 0
  br i1 %1134, label %1135, label %1143

1135:                                             ; preds = %1122
  %1136 = load i32, ptr %58, align 4, !tbaa !9
  %1137 = load ptr, ptr %15, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.WhereLoop, ptr %1137, i32 0, i32 10
  %1139 = load i16, ptr %1138, align 2, !tbaa !89
  %1140 = zext i16 %1139 to i32
  %1141 = icmp eq i32 %1136, %1140
  br i1 %1141, label %1142, label %1143

1142:                                             ; preds = %1135
  br label %1162

1143:                                             ; preds = %1135, %1122
  %1144 = load i32, ptr %57, align 4, !tbaa !9
  %1145 = shl i32 %1144, 2
  %1146 = load i32, ptr %55, align 4, !tbaa !9
  %1147 = shl i32 %1146, 1
  %1148 = add nsw i32 %1145, %1147
  %1149 = load i32, ptr %13, align 4, !tbaa !9
  %1150 = add nsw i32 %1148, %1149
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds [8 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStartOp, i64 0, i64 %1151
  %1153 = load i8, ptr %1152, align 1, !tbaa !54
  %1154 = zext i8 %1153 to i32
  store i32 %1154, ptr %62, align 4, !tbaa !9
  %1155 = load ptr, ptr %20, align 8, !tbaa !5
  %1156 = load i32, ptr %62, align 4, !tbaa !9
  %1157 = load i32, ptr %60, align 4, !tbaa !9
  %1158 = load i32, ptr %11, align 4, !tbaa !9
  %1159 = load i32, ptr %52, align 4, !tbaa !9
  %1160 = load i32, ptr %58, align 4, !tbaa !9
  %1161 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1155, i32 noundef %1156, i32 noundef %1157, i32 noundef %1158, i32 noundef %1159, i32 noundef %1160)
  br label %1162

1162:                                             ; preds = %1143, %1142
  %1163 = load i16, ptr %49, align 2, !tbaa !74
  %1164 = zext i16 %1163 to i32
  store i32 %1164, ptr %58, align 4, !tbaa !9
  %1165 = load ptr, ptr %54, align 8, !tbaa !5
  %1166 = icmp ne ptr %1165, null
  br i1 %1166, label %1167, label %1237

1167:                                             ; preds = %1162
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  %1168 = load ptr, ptr %54, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.WhereTerm, ptr %1168, i32 0, i32 0
  %1170 = load ptr, ptr %1169, align 8, !tbaa !50
  %1171 = getelementptr inbounds %struct.Expr, ptr %1170, i32 0, i32 5
  %1172 = load ptr, ptr %1171, align 8, !tbaa !51
  store ptr %1172, ptr %71, align 8, !tbaa !5
  %1173 = load ptr, ptr %18, align 8, !tbaa !5
  %1174 = load i32, ptr %52, align 4, !tbaa !9
  %1175 = load i16, ptr %49, align 2, !tbaa !74
  %1176 = zext i16 %1175 to i32
  %1177 = add nsw i32 %1174, %1176
  call void @sqlite3ExprCacheRemove(ptr noundef %1173, i32 noundef %1177, i32 noundef 1)
  %1178 = load ptr, ptr %18, align 8, !tbaa !5
  %1179 = load ptr, ptr %71, align 8, !tbaa !5
  %1180 = load i32, ptr %52, align 4, !tbaa !9
  %1181 = load i16, ptr %49, align 2, !tbaa !74
  %1182 = zext i16 %1181 to i32
  %1183 = add nsw i32 %1180, %1182
  %1184 = load i16, ptr %51, align 2, !tbaa !74
  %1185 = zext i16 %1184 to i32
  call void @codeExprOrVector(ptr noundef %1178, ptr noundef %1179, i32 noundef %1183, i32 noundef %1185)
  %1186 = load ptr, ptr %20, align 8, !tbaa !5
  %1187 = load ptr, ptr %14, align 8, !tbaa !5
  %1188 = load ptr, ptr %54, align 8, !tbaa !5
  call void @whereLikeOptimizationStringFixup(ptr noundef %1186, ptr noundef %1187, ptr noundef %1188)
  %1189 = load ptr, ptr %54, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.WhereTerm, ptr %1189, i32 0, i32 3
  %1191 = load i16, ptr %1190, align 2, !tbaa !79
  %1192 = zext i16 %1191 to i32
  %1193 = and i32 %1192, 0
  %1194 = icmp eq i32 %1193, 0
  br i1 %1194, label %1195, label %1207

1195:                                             ; preds = %1167
  %1196 = load ptr, ptr %71, align 8, !tbaa !5
  %1197 = call i32 @sqlite3ExprCanBeNull(ptr noundef %1196)
  %1198 = icmp ne i32 %1197, 0
  br i1 %1198, label %1199, label %1207

1199:                                             ; preds = %1195
  %1200 = load ptr, ptr %20, align 8, !tbaa !5
  %1201 = load i32, ptr %52, align 4, !tbaa !9
  %1202 = load i16, ptr %49, align 2, !tbaa !74
  %1203 = zext i16 %1202 to i32
  %1204 = add nsw i32 %1201, %1203
  %1205 = load i32, ptr %11, align 4, !tbaa !9
  %1206 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1200, i32 noundef 34, i32 noundef %1204, i32 noundef %1205)
  br label %1207

1207:                                             ; preds = %1199, %1195, %1167
  %1208 = load ptr, ptr %64, align 8, !tbaa !5
  %1209 = icmp ne ptr %1208, null
  br i1 %1209, label %1210, label %1223

1210:                                             ; preds = %1207
  %1211 = load ptr, ptr %71, align 8, !tbaa !5
  %1212 = load i16, ptr %51, align 2, !tbaa !74
  %1213 = zext i16 %1212 to i32
  %1214 = load ptr, ptr %64, align 8, !tbaa !5
  call void @updateRangeAffinityStr(ptr noundef %1211, i32 noundef %1213, ptr noundef %1214)
  %1215 = load ptr, ptr %18, align 8, !tbaa !5
  %1216 = load i32, ptr %52, align 4, !tbaa !9
  %1217 = load i16, ptr %49, align 2, !tbaa !74
  %1218 = zext i16 %1217 to i32
  %1219 = add nsw i32 %1216, %1218
  %1220 = load i16, ptr %51, align 2, !tbaa !74
  %1221 = zext i16 %1220 to i32
  %1222 = load ptr, ptr %64, align 8, !tbaa !5
  call void @codeApplyAffinity(ptr noundef %1215, i32 noundef %1219, i32 noundef %1221, ptr noundef %1222)
  br label %1224

1223:                                             ; preds = %1207
  br label %1224

1224:                                             ; preds = %1223, %1210
  %1225 = load i16, ptr %51, align 2, !tbaa !74
  %1226 = zext i16 %1225 to i32
  %1227 = load i32, ptr %58, align 4, !tbaa !9
  %1228 = add nsw i32 %1227, %1226
  store i32 %1228, ptr %58, align 4, !tbaa !9
  %1229 = load ptr, ptr %71, align 8, !tbaa !5
  %1230 = call i32 @sqlite3ExprIsVector(ptr noundef %1229)
  %1231 = icmp eq i32 %1230, 0
  br i1 %1231, label %1232, label %1235

1232:                                             ; preds = %1224
  %1233 = load ptr, ptr %14, align 8, !tbaa !5
  %1234 = load ptr, ptr %54, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %1233, ptr noundef %1234)
  br label %1236

1235:                                             ; preds = %1224
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1236

1236:                                             ; preds = %1235, %1232
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  br label %1250

1237:                                             ; preds = %1162
  %1238 = load i8, ptr %66, align 1, !tbaa !54
  %1239 = icmp ne i8 %1238, 0
  br i1 %1239, label %1240, label %1249

1240:                                             ; preds = %1237
  %1241 = load ptr, ptr %20, align 8, !tbaa !5
  %1242 = load i32, ptr %52, align 4, !tbaa !9
  %1243 = load i16, ptr %49, align 2, !tbaa !74
  %1244 = zext i16 %1243 to i32
  %1245 = add nsw i32 %1242, %1244
  %1246 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1241, i32 noundef 80, i32 noundef 0, i32 noundef %1245)
  store i32 0, ptr %56, align 4, !tbaa !9
  %1247 = load i32, ptr %58, align 4, !tbaa !9
  %1248 = add nsw i32 %1247, 1
  store i32 %1248, ptr %58, align 4, !tbaa !9
  br label %1249

1249:                                             ; preds = %1240, %1237
  br label %1250

1250:                                             ; preds = %1249, %1236
  %1251 = load ptr, ptr %19, align 8, !tbaa !5
  %1252 = load ptr, ptr %63, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1251, ptr noundef %1252)
  %1253 = load ptr, ptr %19, align 8, !tbaa !5
  %1254 = load ptr, ptr %64, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1253, ptr noundef %1254)
  %1255 = load ptr, ptr %20, align 8, !tbaa !5
  %1256 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1255)
  %1257 = load ptr, ptr %14, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.WhereLevel, ptr %1257, i32 0, i32 16
  store i32 %1256, ptr %1258, align 4, !tbaa !44
  %1259 = load i32, ptr %58, align 4, !tbaa !9
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1261, label %1277

1261:                                             ; preds = %1250
  %1262 = load i32, ptr %13, align 4, !tbaa !9
  %1263 = mul nsw i32 %1262, 2
  %1264 = load i32, ptr %56, align 4, !tbaa !9
  %1265 = add nsw i32 %1263, %1264
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds [4 x i8], ptr @sqlite3WhereCodeOneLoopStart.aEndOp, i64 0, i64 %1266
  %1268 = load i8, ptr %1267, align 1, !tbaa !54
  %1269 = zext i8 %1268 to i32
  store i32 %1269, ptr %62, align 4, !tbaa !9
  %1270 = load ptr, ptr %20, align 8, !tbaa !5
  %1271 = load i32, ptr %62, align 4, !tbaa !9
  %1272 = load i32, ptr %60, align 4, !tbaa !9
  %1273 = load i32, ptr %11, align 4, !tbaa !9
  %1274 = load i32, ptr %52, align 4, !tbaa !9
  %1275 = load i32, ptr %58, align 4, !tbaa !9
  %1276 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1270, i32 noundef %1271, i32 noundef %1272, i32 noundef %1273, i32 noundef %1274, i32 noundef %1275)
  br label %1277

1277:                                             ; preds = %1261, %1250
  %1278 = load i32, ptr %12, align 4, !tbaa !9
  %1279 = icmp ne i32 %1278, 0
  br i1 %1279, label %1280, label %1281

1280:                                             ; preds = %1277
  br label %1386

1281:                                             ; preds = %1277
  %1282 = load ptr, ptr %59, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.Index, ptr %1282, i32 0, i32 3
  %1284 = load ptr, ptr %1283, align 8, !tbaa !84
  %1285 = getelementptr inbounds %struct.Table, ptr %1284, i32 0, i32 9
  %1286 = load i32, ptr %1285, align 8, !tbaa !90
  %1287 = and i32 %1286, 32
  %1288 = icmp eq i32 %1287, 0
  br i1 %1288, label %1289, label %1331

1289:                                             ; preds = %1281
  %1290 = load ptr, ptr %5, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.WhereInfo, ptr %1290, i32 0, i32 9
  %1292 = load i16, ptr %1291, align 8, !tbaa !33
  %1293 = zext i16 %1292 to i32
  %1294 = and i32 %1293, 1024
  %1295 = icmp ne i32 %1294, 0
  br i1 %1295, label %1309, label %1296

1296:                                             ; preds = %1289
  %1297 = load ptr, ptr %5, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.WhereInfo, ptr %1297, i32 0, i32 9
  %1299 = load i16, ptr %1298, align 8, !tbaa !33
  %1300 = zext i16 %1299 to i32
  %1301 = and i32 %1300, 4096
  %1302 = icmp ne i32 %1301, 0
  br i1 %1302, label %1303, label %1325

1303:                                             ; preds = %1296
  %1304 = load ptr, ptr %5, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.WhereInfo, ptr %1304, i32 0, i32 13
  %1306 = load i8, ptr %1305, align 1, !tbaa !56
  %1307 = zext i8 %1306 to i32
  %1308 = icmp eq i32 %1307, 1
  br i1 %1308, label %1309, label %1325

1309:                                             ; preds = %1303, %1289
  %1310 = load ptr, ptr %18, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.Parse, ptr %1310, i32 0, i32 18
  %1312 = load i32, ptr %1311, align 8, !tbaa !38
  %1313 = add nsw i32 %1312, 1
  store i32 %1313, ptr %1311, align 8, !tbaa !38
  store i32 %1313, ptr %25, align 4, !tbaa !9
  %1314 = load ptr, ptr %20, align 8, !tbaa !5
  %1315 = load i32, ptr %60, align 4, !tbaa !9
  %1316 = load i32, ptr %25, align 4, !tbaa !9
  %1317 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1314, i32 noundef 129, i32 noundef %1315, i32 noundef %1316)
  %1318 = load ptr, ptr %18, align 8, !tbaa !5
  %1319 = load i32, ptr %10, align 4, !tbaa !9
  %1320 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3ExprCacheStore(ptr noundef %1318, i32 noundef %1319, i32 noundef -1, i32 noundef %1320)
  %1321 = load ptr, ptr %20, align 8, !tbaa !5
  %1322 = load i32, ptr %10, align 4, !tbaa !9
  %1323 = load i32, ptr %25, align 4, !tbaa !9
  %1324 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1321, i32 noundef 33, i32 noundef %1322, i32 noundef 0, i32 noundef %1323)
  br label %1330

1325:                                             ; preds = %1303, %1296
  %1326 = load ptr, ptr %5, align 8, !tbaa !5
  %1327 = load ptr, ptr %59, align 8, !tbaa !5
  %1328 = load i32, ptr %10, align 4, !tbaa !9
  %1329 = load i32, ptr %60, align 4, !tbaa !9
  call void @codeDeferredSeek(ptr noundef %1326, ptr noundef %1327, i32 noundef %1328, i32 noundef %1329)
  br label %1330

1330:                                             ; preds = %1325, %1309
  br label %1385

1331:                                             ; preds = %1281
  %1332 = load i32, ptr %10, align 4, !tbaa !9
  %1333 = load i32, ptr %60, align 4, !tbaa !9
  %1334 = icmp ne i32 %1332, %1333
  br i1 %1334, label %1335, label %1384

1335:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  %1336 = load ptr, ptr %59, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.Index, ptr %1336, i32 0, i32 3
  %1338 = load ptr, ptr %1337, align 8, !tbaa !84
  %1339 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %1338)
  store ptr %1339, ptr %72, align 8, !tbaa !5
  %1340 = load ptr, ptr %18, align 8, !tbaa !5
  %1341 = load ptr, ptr %72, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.Index, ptr %1341, i32 0, i32 13
  %1343 = load i16, ptr %1342, align 2, !tbaa !77
  %1344 = zext i16 %1343 to i32
  %1345 = call i32 @sqlite3GetTempRange(ptr noundef %1340, i32 noundef %1344)
  store i32 %1345, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %1346

1346:                                             ; preds = %1371, %1335
  %1347 = load i32, ptr %8, align 4, !tbaa !9
  %1348 = load ptr, ptr %72, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.Index, ptr %1348, i32 0, i32 13
  %1350 = load i16, ptr %1349, align 2, !tbaa !77
  %1351 = zext i16 %1350 to i32
  %1352 = icmp slt i32 %1347, %1351
  br i1 %1352, label %1353, label %1374

1353:                                             ; preds = %1346
  %1354 = load ptr, ptr %59, align 8, !tbaa !5
  %1355 = load ptr, ptr %72, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.Index, ptr %1355, i32 0, i32 1
  %1357 = load ptr, ptr %1356, align 8, !tbaa !83
  %1358 = load i32, ptr %8, align 4, !tbaa !9
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i16, ptr %1357, i64 %1359
  %1361 = load i16, ptr %1360, align 2, !tbaa !74
  %1362 = call signext i16 @sqlite3ColumnOfIndex(ptr noundef %1354, i16 noundef signext %1361)
  %1363 = sext i16 %1362 to i32
  store i32 %1363, ptr %9, align 4, !tbaa !9
  %1364 = load ptr, ptr %20, align 8, !tbaa !5
  %1365 = load i32, ptr %60, align 4, !tbaa !9
  %1366 = load i32, ptr %9, align 4, !tbaa !9
  %1367 = load i32, ptr %25, align 4, !tbaa !9
  %1368 = load i32, ptr %8, align 4, !tbaa !9
  %1369 = add nsw i32 %1367, %1368
  %1370 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1364, i32 noundef 98, i32 noundef %1365, i32 noundef %1366, i32 noundef %1369)
  br label %1371

1371:                                             ; preds = %1353
  %1372 = load i32, ptr %8, align 4, !tbaa !9
  %1373 = add nsw i32 %1372, 1
  store i32 %1373, ptr %8, align 4, !tbaa !9
  br label %1346, !llvm.loop !91

1374:                                             ; preds = %1346
  %1375 = load ptr, ptr %20, align 8, !tbaa !5
  %1376 = load i32, ptr %10, align 4, !tbaa !9
  %1377 = load i32, ptr %24, align 4, !tbaa !9
  %1378 = load i32, ptr %25, align 4, !tbaa !9
  %1379 = load ptr, ptr %72, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.Index, ptr %1379, i32 0, i32 13
  %1381 = load i16, ptr %1380, align 2, !tbaa !77
  %1382 = zext i16 %1381 to i32
  %1383 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1375, i32 noundef 30, i32 noundef %1376, i32 noundef %1377, i32 noundef %1378, i32 noundef %1382)
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  br label %1384

1384:                                             ; preds = %1374, %1331
  br label %1385

1385:                                             ; preds = %1384, %1330
  br label %1386

1386:                                             ; preds = %1385, %1280
  %1387 = load ptr, ptr %15, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.WhereLoop, ptr %1387, i32 0, i32 8
  %1389 = load i32, ptr %1388, align 8, !tbaa !31
  %1390 = and i32 %1389, 4096
  %1391 = icmp ne i32 %1390, 0
  br i1 %1391, label %1392, label %1395

1392:                                             ; preds = %1386
  %1393 = load ptr, ptr %14, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.WhereLevel, ptr %1393, i32 0, i32 12
  store i8 -94, ptr %1394, align 1, !tbaa !45
  br label %1405

1395:                                             ; preds = %1386
  %1396 = load i32, ptr %13, align 4, !tbaa !9
  %1397 = icmp ne i32 %1396, 0
  br i1 %1397, label %1398, label %1401

1398:                                             ; preds = %1395
  %1399 = load ptr, ptr %14, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.WhereLevel, ptr %1399, i32 0, i32 12
  store i8 6, ptr %1400, align 1, !tbaa !45
  br label %1404

1401:                                             ; preds = %1395
  %1402 = load ptr, ptr %14, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.WhereLevel, ptr %1402, i32 0, i32 12
  store i8 7, ptr %1403, align 1, !tbaa !45
  br label %1404

1404:                                             ; preds = %1401, %1398
  br label %1405

1405:                                             ; preds = %1404, %1392
  %1406 = load i32, ptr %60, align 4, !tbaa !9
  %1407 = load ptr, ptr %14, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.WhereLevel, ptr %1407, i32 0, i32 15
  store i32 %1406, ptr %1408, align 8, !tbaa !55
  %1409 = load ptr, ptr %15, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.WhereLoop, ptr %1409, i32 0, i32 8
  %1411 = load i32, ptr %1410, align 8, !tbaa !31
  %1412 = and i32 %1411, 65536
  %1413 = icmp ne i32 %1412, 0
  %1414 = zext i1 %1413 to i64
  %1415 = select i1 %1413, i32 1, i32 0
  %1416 = trunc i32 %1415 to i8
  %1417 = load ptr, ptr %14, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.WhereLevel, ptr %1417, i32 0, i32 13
  store i8 %1416, ptr %1418, align 2, !tbaa !92
  %1419 = load ptr, ptr %15, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.WhereLoop, ptr %1419, i32 0, i32 8
  %1421 = load i32, ptr %1420, align 8, !tbaa !31
  %1422 = and i32 %1421, 15
  %1423 = icmp eq i32 %1422, 0
  br i1 %1423, label %1424, label %1427

1424:                                             ; preds = %1405
  %1425 = load ptr, ptr %14, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.WhereLevel, ptr %1425, i32 0, i32 14
  store i8 1, ptr %1426, align 1, !tbaa !93
  br label %1428

1427:                                             ; preds = %1405
  br label %1428

1428:                                             ; preds = %1427, %1424
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %49) #4
  br label %1992

1429:                                             ; preds = %758
  %1430 = load ptr, ptr %15, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.WhereLoop, ptr %1430, i32 0, i32 8
  %1432 = load i32, ptr %1431, align 8, !tbaa !31
  %1433 = and i32 %1432, 8192
  %1434 = icmp ne i32 %1433, 0
  br i1 %1434, label %1435, label %1954

1435:                                             ; preds = %1429
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  store ptr null, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  %1436 = load ptr, ptr %18, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.Parse, ptr %1436, i32 0, i32 17
  %1438 = load i32, ptr %1437, align 4, !tbaa !94
  %1439 = add nsw i32 %1438, 1
  store i32 %1439, ptr %1437, align 4, !tbaa !94
  store i32 %1438, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  %1440 = load ptr, ptr %18, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.Parse, ptr %1440, i32 0, i32 18
  %1442 = load i32, ptr %1441, align 8, !tbaa !38
  %1443 = add nsw i32 %1442, 1
  store i32 %1443, ptr %1441, align 8, !tbaa !38
  store i32 %1443, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #4
  store i32 0, ptr %78, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  store i32 0, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #4
  %1444 = load ptr, ptr %20, align 8, !tbaa !5
  %1445 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %1444)
  store i32 %1445, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #4
  store i32 0, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #4
  store ptr null, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #4
  %1446 = load ptr, ptr %21, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.SrcList_item, ptr %1446, i32 0, i32 4
  %1448 = load ptr, ptr %1447, align 8, !tbaa !95
  store ptr %1448, ptr %86, align 8, !tbaa !5
  %1449 = load ptr, ptr %15, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.WhereLoop, ptr %1449, i32 0, i32 12
  %1451 = load ptr, ptr %1450, align 8, !tbaa !47
  %1452 = getelementptr inbounds ptr, ptr %1451, i64 0
  %1453 = load ptr, ptr %1452, align 8, !tbaa !5
  store ptr %1453, ptr %17, align 8, !tbaa !5
  %1454 = load ptr, ptr %17, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.WhereTerm, ptr %1454, i32 0, i32 10
  %1456 = load ptr, ptr %1455, align 8, !tbaa !54
  %1457 = getelementptr inbounds %struct.WhereOrInfo, ptr %1456, i32 0, i32 0
  store ptr %1457, ptr %73, align 8, !tbaa !5
  %1458 = load ptr, ptr %14, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.WhereLevel, ptr %1458, i32 0, i32 12
  store i8 73, ptr %1459, align 1, !tbaa !45
  %1460 = load i32, ptr %77, align 4, !tbaa !9
  %1461 = load ptr, ptr %14, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.WhereLevel, ptr %1461, i32 0, i32 15
  store i32 %1460, ptr %1462, align 8, !tbaa !55
  %1463 = load ptr, ptr %5, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.WhereInfo, ptr %1463, i32 0, i32 10
  %1465 = load i8, ptr %1464, align 2, !tbaa !96
  %1466 = zext i8 %1465 to i32
  %1467 = icmp sgt i32 %1466, 1
  br i1 %1467, label %1468, label %1533

1468:                                             ; preds = %1435
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #4
  %1469 = load ptr, ptr %5, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.WhereInfo, ptr %1469, i32 0, i32 10
  %1471 = load i8, ptr %1470, align 2, !tbaa !96
  %1472 = zext i8 %1471 to i32
  %1473 = load i32, ptr %6, align 4, !tbaa !9
  %1474 = sub nsw i32 %1472, %1473
  %1475 = sub nsw i32 %1474, 1
  store i32 %1475, ptr %87, align 4, !tbaa !9
  %1476 = load ptr, ptr %19, align 8, !tbaa !5
  %1477 = load i32, ptr %87, align 4, !tbaa !9
  %1478 = sext i32 %1477 to i64
  %1479 = mul i64 %1478, 112
  %1480 = add i64 120, %1479
  %1481 = call ptr @sqlite3DbMallocRaw(ptr noundef %1476, i64 noundef %1480)
  store ptr %1481, ptr %74, align 8, !tbaa !5
  %1482 = load ptr, ptr %74, align 8, !tbaa !5
  %1483 = icmp eq ptr %1482, null
  br i1 %1483, label %1484, label %1486

1484:                                             ; preds = %1468
  %1485 = load i64, ptr %7, align 8, !tbaa !11
  store i64 %1485, ptr %4, align 8
  store i32 1, ptr %33, align 4
  br label %1530

1486:                                             ; preds = %1468
  %1487 = load i32, ptr %87, align 4, !tbaa !9
  %1488 = add nsw i32 %1487, 1
  %1489 = trunc i32 %1488 to i8
  %1490 = zext i8 %1489 to i32
  %1491 = load ptr, ptr %74, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.SrcList, ptr %1491, i32 0, i32 1
  store i32 %1490, ptr %1492, align 4, !tbaa !97
  %1493 = load ptr, ptr %74, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.SrcList, ptr %1493, i32 0, i32 1
  %1495 = load i32, ptr %1494, align 4, !tbaa !97
  %1496 = load ptr, ptr %74, align 8, !tbaa !5
  %1497 = getelementptr inbounds %struct.SrcList, ptr %1496, i32 0, i32 0
  store i32 %1495, ptr %1497, align 8, !tbaa !99
  %1498 = load ptr, ptr %74, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.SrcList, ptr %1498, i32 0, i32 2
  %1500 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %1499, i64 0, i64 0
  %1501 = load ptr, ptr %21, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1500, ptr align 8 %1501, i64 112, i1 false)
  %1502 = load ptr, ptr %5, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.WhereInfo, ptr %1502, i32 0, i32 1
  %1504 = load ptr, ptr %1503, align 8, !tbaa !24
  %1505 = getelementptr inbounds %struct.SrcList, ptr %1504, i32 0, i32 2
  %1506 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %1505, i64 0, i64 0
  store ptr %1506, ptr %88, align 8, !tbaa !5
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %1507

1507:                                             ; preds = %1526, %1486
  %1508 = load i32, ptr %9, align 4, !tbaa !9
  %1509 = load i32, ptr %87, align 4, !tbaa !9
  %1510 = icmp sle i32 %1508, %1509
  br i1 %1510, label %1511, label %1529

1511:                                             ; preds = %1507
  %1512 = load ptr, ptr %74, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.SrcList, ptr %1512, i32 0, i32 2
  %1514 = load i32, ptr %9, align 4, !tbaa !9
  %1515 = sext i32 %1514 to i64
  %1516 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %1513, i64 0, i64 %1515
  %1517 = load ptr, ptr %88, align 8, !tbaa !5
  %1518 = load ptr, ptr %14, align 8, !tbaa !5
  %1519 = load i32, ptr %9, align 4, !tbaa !9
  %1520 = sext i32 %1519 to i64
  %1521 = getelementptr inbounds %struct.WhereLevel, ptr %1518, i64 %1520
  %1522 = getelementptr inbounds %struct.WhereLevel, ptr %1521, i32 0, i32 11
  %1523 = load i8, ptr %1522, align 4, !tbaa !25
  %1524 = zext i8 %1523 to i64
  %1525 = getelementptr inbounds %struct.SrcList_item, ptr %1517, i64 %1524
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1516, ptr align 8 %1525, i64 112, i1 false)
  br label %1526

1526:                                             ; preds = %1511
  %1527 = load i32, ptr %9, align 4, !tbaa !9
  %1528 = add nsw i32 %1527, 1
  store i32 %1528, ptr %9, align 4, !tbaa !9
  br label %1507, !llvm.loop !100

1529:                                             ; preds = %1507
  store i32 0, ptr %33, align 4
  br label %1530

1530:                                             ; preds = %1529, %1484
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  %1531 = load i32, ptr %33, align 4
  switch i32 %1531, label %1951 [
    i32 0, label %1532
  ]

1532:                                             ; preds = %1530
  br label %1537

1533:                                             ; preds = %1435
  %1534 = load ptr, ptr %5, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.WhereInfo, ptr %1534, i32 0, i32 1
  %1536 = load ptr, ptr %1535, align 8, !tbaa !24
  store ptr %1536, ptr %74, align 8, !tbaa !5
  br label %1537

1537:                                             ; preds = %1533, %1532
  %1538 = load ptr, ptr %5, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.WhereInfo, ptr %1538, i32 0, i32 9
  %1540 = load i16, ptr %1539, align 8, !tbaa !33
  %1541 = zext i16 %1540 to i32
  %1542 = and i32 %1541, 16
  %1543 = icmp eq i32 %1542, 0
  br i1 %1543, label %1544, label %1579

1544:                                             ; preds = %1537
  %1545 = load ptr, ptr %86, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.Table, ptr %1545, i32 0, i32 9
  %1547 = load i32, ptr %1546, align 8, !tbaa !90
  %1548 = and i32 %1547, 32
  %1549 = icmp eq i32 %1548, 0
  br i1 %1549, label %1550, label %1558

1550:                                             ; preds = %1544
  %1551 = load ptr, ptr %18, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.Parse, ptr %1551, i32 0, i32 18
  %1553 = load i32, ptr %1552, align 8, !tbaa !38
  %1554 = add nsw i32 %1553, 1
  store i32 %1554, ptr %1552, align 8, !tbaa !38
  store i32 %1554, ptr %78, align 4, !tbaa !9
  %1555 = load ptr, ptr %20, align 8, !tbaa !5
  %1556 = load i32, ptr %78, align 4, !tbaa !9
  %1557 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1555, i32 noundef 80, i32 noundef 0, i32 noundef %1556)
  br label %1574

1558:                                             ; preds = %1544
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #4
  %1559 = load ptr, ptr %86, align 8, !tbaa !5
  %1560 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %1559)
  store ptr %1560, ptr %89, align 8, !tbaa !5
  %1561 = load ptr, ptr %18, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.Parse, ptr %1561, i32 0, i32 17
  %1563 = load i32, ptr %1562, align 4, !tbaa !94
  %1564 = add nsw i32 %1563, 1
  store i32 %1564, ptr %1562, align 4, !tbaa !94
  store i32 %1563, ptr %78, align 4, !tbaa !9
  %1565 = load ptr, ptr %20, align 8, !tbaa !5
  %1566 = load i32, ptr %78, align 4, !tbaa !9
  %1567 = load ptr, ptr %89, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.Index, ptr %1567, i32 0, i32 13
  %1569 = load i16, ptr %1568, align 2, !tbaa !77
  %1570 = zext i16 %1569 to i32
  %1571 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1565, i32 noundef 108, i32 noundef %1566, i32 noundef %1570)
  %1572 = load ptr, ptr %18, align 8, !tbaa !5
  %1573 = load ptr, ptr %89, align 8, !tbaa !5
  call void @sqlite3VdbeSetP4KeyInfo(ptr noundef %1572, ptr noundef %1573)
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  br label %1574

1574:                                             ; preds = %1558, %1550
  %1575 = load ptr, ptr %18, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.Parse, ptr %1575, i32 0, i32 18
  %1577 = load i32, ptr %1576, align 8, !tbaa !38
  %1578 = add nsw i32 %1577, 1
  store i32 %1578, ptr %1576, align 8, !tbaa !38
  store i32 %1578, ptr %79, align 4, !tbaa !9
  br label %1579

1579:                                             ; preds = %1574, %1537
  %1580 = load ptr, ptr %20, align 8, !tbaa !5
  %1581 = load i32, ptr %77, align 4, !tbaa !9
  %1582 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1580, i32 noundef 77, i32 noundef 0, i32 noundef %1581)
  store i32 %1582, ptr %81, align 4, !tbaa !9
  %1583 = load ptr, ptr %16, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct.WhereClause, ptr %1583, i32 0, i32 3
  %1585 = load i32, ptr %1584, align 4, !tbaa !101
  %1586 = icmp sgt i32 %1585, 1
  br i1 %1586, label %1587, label %1667

1587:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #4
  store i32 0, ptr %90, align 4, !tbaa !9
  br label %1588

1588:                                             ; preds = %1656, %1587
  %1589 = load i32, ptr %90, align 4, !tbaa !9
  %1590 = load ptr, ptr %16, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.WhereClause, ptr %1590, i32 0, i32 3
  %1592 = load i32, ptr %1591, align 4, !tbaa !101
  %1593 = icmp slt i32 %1589, %1592
  br i1 %1593, label %1594, label %1659

1594:                                             ; preds = %1588
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #4
  %1595 = load ptr, ptr %16, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.WhereClause, ptr %1595, i32 0, i32 5
  %1597 = load ptr, ptr %1596, align 8, !tbaa !102
  %1598 = load i32, ptr %90, align 4, !tbaa !9
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds %struct.WhereTerm, ptr %1597, i64 %1599
  %1601 = getelementptr inbounds %struct.WhereTerm, ptr %1600, i32 0, i32 0
  %1602 = load ptr, ptr %1601, align 8, !tbaa !50
  store ptr %1602, ptr %91, align 8, !tbaa !5
  %1603 = load ptr, ptr %16, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.WhereClause, ptr %1603, i32 0, i32 5
  %1605 = load ptr, ptr %1604, align 8, !tbaa !102
  %1606 = load i32, ptr %90, align 4, !tbaa !9
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds %struct.WhereTerm, ptr %1605, i64 %1607
  %1609 = load ptr, ptr %17, align 8, !tbaa !5
  %1610 = icmp eq ptr %1608, %1609
  br i1 %1610, label %1611, label %1612

1611:                                             ; preds = %1594
  store i32 19, ptr %33, align 4
  br label %1653

1612:                                             ; preds = %1594
  %1613 = load ptr, ptr %91, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.Expr, ptr %1613, i32 0, i32 2
  %1615 = load i32, ptr %1614, align 4, !tbaa !103
  %1616 = and i32 %1615, 1
  %1617 = icmp ne i32 %1616, 0
  br i1 %1617, label %1618, label %1619

1618:                                             ; preds = %1612
  store i32 19, ptr %33, align 4
  br label %1653

1619:                                             ; preds = %1612
  %1620 = load ptr, ptr %16, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.WhereClause, ptr %1620, i32 0, i32 5
  %1622 = load ptr, ptr %1621, align 8, !tbaa !102
  %1623 = load i32, ptr %90, align 4, !tbaa !9
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds %struct.WhereTerm, ptr %1622, i64 %1624
  %1626 = getelementptr inbounds %struct.WhereTerm, ptr %1625, i32 0, i32 3
  %1627 = load i16, ptr %1626, align 2, !tbaa !79
  %1628 = zext i16 %1627 to i32
  %1629 = and i32 %1628, 6
  %1630 = icmp ne i32 %1629, 0
  br i1 %1630, label %1631, label %1632

1631:                                             ; preds = %1619
  store i32 19, ptr %33, align 4
  br label %1653

1632:                                             ; preds = %1619
  %1633 = load ptr, ptr %16, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.WhereClause, ptr %1633, i32 0, i32 5
  %1635 = load ptr, ptr %1634, align 8, !tbaa !102
  %1636 = load i32, ptr %90, align 4, !tbaa !9
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds %struct.WhereTerm, ptr %1635, i64 %1637
  %1639 = getelementptr inbounds %struct.WhereTerm, ptr %1638, i32 0, i32 4
  %1640 = load i16, ptr %1639, align 4, !tbaa !48
  %1641 = zext i16 %1640 to i32
  %1642 = and i32 %1641, 8191
  %1643 = icmp eq i32 %1642, 0
  br i1 %1643, label %1644, label %1645

1644:                                             ; preds = %1632
  store i32 19, ptr %33, align 4
  br label %1653

1645:                                             ; preds = %1632
  %1646 = load ptr, ptr %19, align 8, !tbaa !5
  %1647 = load ptr, ptr %91, align 8, !tbaa !5
  %1648 = call ptr @sqlite3ExprDup(ptr noundef %1646, ptr noundef %1647, i32 noundef 0)
  store ptr %1648, ptr %91, align 8, !tbaa !5
  %1649 = load ptr, ptr %19, align 8, !tbaa !5
  %1650 = load ptr, ptr %85, align 8, !tbaa !5
  %1651 = load ptr, ptr %91, align 8, !tbaa !5
  %1652 = call ptr @sqlite3ExprAnd(ptr noundef %1649, ptr noundef %1650, ptr noundef %1651)
  store ptr %1652, ptr %85, align 8, !tbaa !5
  store i32 0, ptr %33, align 4
  br label %1653

1653:                                             ; preds = %1645, %1644, %1631, %1618, %1611
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  %1654 = load i32, ptr %33, align 4
  switch i32 %1654, label %2239 [
    i32 0, label %1655
    i32 19, label %1656
  ]

1655:                                             ; preds = %1653
  br label %1656

1656:                                             ; preds = %1655, %1653
  %1657 = load i32, ptr %90, align 4, !tbaa !9
  %1658 = add nsw i32 %1657, 1
  store i32 %1658, ptr %90, align 4, !tbaa !9
  br label %1588, !llvm.loop !104

1659:                                             ; preds = %1588
  %1660 = load ptr, ptr %85, align 8, !tbaa !5
  %1661 = icmp ne ptr %1660, null
  br i1 %1661, label %1662, label %1666

1662:                                             ; preds = %1659
  %1663 = load ptr, ptr %18, align 8, !tbaa !5
  %1664 = load ptr, ptr %85, align 8, !tbaa !5
  %1665 = call ptr @sqlite3PExpr(ptr noundef %1663, i32 noundef 284, ptr noundef null, ptr noundef %1664)
  store ptr %1665, ptr %85, align 8, !tbaa !5
  br label %1666

1666:                                             ; preds = %1662, %1659
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  br label %1667

1667:                                             ; preds = %1666, %1579
  %1668 = load ptr, ptr %5, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.WhereInfo, ptr %1668, i32 0, i32 9
  %1670 = load i16, ptr %1669, align 8, !tbaa !33
  %1671 = zext i16 %1670 to i32
  %1672 = and i32 %1671, 1024
  %1673 = or i32 32, %1672
  %1674 = trunc i32 %1673 to i16
  store i16 %1674, ptr %84, align 2, !tbaa !74
  store i32 0, ptr %83, align 4, !tbaa !9
  br label %1675

1675:                                             ; preds = %1903, %1667
  %1676 = load i32, ptr %83, align 4, !tbaa !9
  %1677 = load ptr, ptr %73, align 8, !tbaa !5
  %1678 = getelementptr inbounds %struct.WhereClause, ptr %1677, i32 0, i32 3
  %1679 = load i32, ptr %1678, align 4, !tbaa !101
  %1680 = icmp slt i32 %1676, %1679
  br i1 %1680, label %1681, label %1906

1681:                                             ; preds = %1675
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #4
  %1682 = load ptr, ptr %73, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.WhereClause, ptr %1682, i32 0, i32 5
  %1684 = load ptr, ptr %1683, align 8, !tbaa !102
  %1685 = load i32, ptr %83, align 4, !tbaa !9
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds %struct.WhereTerm, ptr %1684, i64 %1686
  store ptr %1687, ptr %92, align 8, !tbaa !5
  %1688 = load ptr, ptr %92, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.WhereTerm, ptr %1688, i32 0, i32 8
  %1690 = load i32, ptr %1689, align 4, !tbaa !105
  %1691 = load i32, ptr %10, align 4, !tbaa !9
  %1692 = icmp eq i32 %1690, %1691
  br i1 %1692, label %1700, label %1693

1693:                                             ; preds = %1681
  %1694 = load ptr, ptr %92, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.WhereTerm, ptr %1694, i32 0, i32 4
  %1696 = load i16, ptr %1695, align 4, !tbaa !48
  %1697 = zext i16 %1696 to i32
  %1698 = and i32 %1697, 1024
  %1699 = icmp ne i32 %1698, 0
  br i1 %1699, label %1700, label %1902

1700:                                             ; preds = %1693, %1681
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #4
  %1701 = load ptr, ptr %92, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.WhereTerm, ptr %1701, i32 0, i32 0
  %1703 = load ptr, ptr %1702, align 8, !tbaa !50
  store ptr %1703, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #4
  store i32 0, ptr %95, align 4, !tbaa !9
  %1704 = load ptr, ptr %85, align 8, !tbaa !5
  %1705 = icmp ne ptr %1704, null
  br i1 %1705, label %1706, label %1717

1706:                                             ; preds = %1700
  %1707 = load ptr, ptr %94, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.Expr, ptr %1707, i32 0, i32 2
  %1709 = load i32, ptr %1708, align 4, !tbaa !103
  %1710 = and i32 %1709, 1
  %1711 = icmp ne i32 %1710, 0
  br i1 %1711, label %1717, label %1712

1712:                                             ; preds = %1706
  %1713 = load ptr, ptr %94, align 8, !tbaa !5
  %1714 = load ptr, ptr %85, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.Expr, ptr %1714, i32 0, i32 4
  store ptr %1713, ptr %1715, align 8, !tbaa !70
  %1716 = load ptr, ptr %85, align 8, !tbaa !5
  store ptr %1716, ptr %94, align 8, !tbaa !5
  br label %1717

1717:                                             ; preds = %1712, %1706, %1700
  %1718 = load ptr, ptr %18, align 8, !tbaa !5
  %1719 = load ptr, ptr %74, align 8, !tbaa !5
  %1720 = load ptr, ptr %94, align 8, !tbaa !5
  %1721 = load i16, ptr %84, align 2, !tbaa !74
  %1722 = load i32, ptr %76, align 4, !tbaa !9
  %1723 = call ptr @sqlite3WhereBegin(ptr noundef %1718, ptr noundef %1719, ptr noundef %1720, ptr noundef null, ptr noundef null, i16 noundef zeroext %1721, i32 noundef %1722)
  store ptr %1723, ptr %93, align 8, !tbaa !5
  %1724 = load ptr, ptr %93, align 8, !tbaa !5
  %1725 = icmp ne ptr %1724, null
  br i1 %1725, label %1726, label %1901

1726:                                             ; preds = %1717
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #4
  %1727 = load ptr, ptr %18, align 8, !tbaa !5
  %1728 = load ptr, ptr %74, align 8, !tbaa !5
  %1729 = load ptr, ptr %93, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct.WhereInfo, ptr %1729, i32 0, i32 23
  %1731 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %1730, i64 0, i64 0
  %1732 = load i32, ptr %6, align 4, !tbaa !9
  %1733 = load ptr, ptr %14, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.WhereLevel, ptr %1733, i32 0, i32 11
  %1735 = load i8, ptr %1734, align 4, !tbaa !25
  %1736 = zext i8 %1735 to i32
  %1737 = call i32 @sqlite3WhereExplainOneScan(ptr noundef %1727, ptr noundef %1728, ptr noundef %1731, i32 noundef %1732, i32 noundef %1736, i16 noundef zeroext 0)
  store i32 %1737, ptr %97, align 4, !tbaa !9
  %1738 = load i32, ptr %97, align 4, !tbaa !9
  %1739 = load ptr, ptr %5, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.WhereInfo, ptr %1739, i32 0, i32 9
  %1741 = load i16, ptr %1740, align 8, !tbaa !33
  %1742 = zext i16 %1741 to i32
  %1743 = and i32 %1742, 16
  %1744 = icmp eq i32 %1743, 0
  br i1 %1744, label %1745, label %1840

1745:                                             ; preds = %1726
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #4
  %1746 = load i32, ptr %83, align 4, !tbaa !9
  %1747 = load ptr, ptr %73, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.WhereClause, ptr %1747, i32 0, i32 3
  %1749 = load i32, ptr %1748, align 4, !tbaa !101
  %1750 = sub nsw i32 %1749, 1
  %1751 = icmp eq i32 %1746, %1750
  br i1 %1751, label %1752, label %1753

1752:                                             ; preds = %1745
  br label %1755

1753:                                             ; preds = %1745
  %1754 = load i32, ptr %83, align 4, !tbaa !9
  br label %1755

1755:                                             ; preds = %1753, %1752
  %1756 = phi i32 [ -1, %1752 ], [ %1754, %1753 ]
  store i32 %1756, ptr %99, align 4, !tbaa !9
  %1757 = load ptr, ptr %86, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.Table, ptr %1757, i32 0, i32 9
  %1759 = load i32, ptr %1758, align 8, !tbaa !90
  %1760 = and i32 %1759, 32
  %1761 = icmp eq i32 %1760, 0
  br i1 %1761, label %1762, label %1773

1762:                                             ; preds = %1755
  %1763 = load ptr, ptr %18, align 8, !tbaa !5
  %1764 = load ptr, ptr %86, align 8, !tbaa !5
  %1765 = load i32, ptr %10, align 4, !tbaa !9
  %1766 = load i32, ptr %79, align 4, !tbaa !9
  %1767 = call i32 @sqlite3ExprCodeGetColumn(ptr noundef %1763, ptr noundef %1764, i32 noundef -1, i32 noundef %1765, i32 noundef %1766, i8 noundef zeroext 0)
  store i32 %1767, ptr %98, align 4, !tbaa !9
  %1768 = load ptr, ptr %20, align 8, !tbaa !5
  %1769 = load i32, ptr %78, align 4, !tbaa !9
  %1770 = load i32, ptr %98, align 4, !tbaa !9
  %1771 = load i32, ptr %99, align 4, !tbaa !9
  %1772 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1768, i32 noundef 64, i32 noundef %1769, i32 noundef 0, i32 noundef %1770, i32 noundef %1771)
  store i32 %1772, ptr %95, align 4, !tbaa !9
  br label %1839

1773:                                             ; preds = %1755
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #4
  %1774 = load ptr, ptr %86, align 8, !tbaa !5
  %1775 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %1774)
  store ptr %1775, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #4
  %1776 = load ptr, ptr %100, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.Index, ptr %1776, i32 0, i32 13
  %1778 = load i16, ptr %1777, align 2, !tbaa !77
  %1779 = zext i16 %1778 to i32
  store i32 %1779, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #4
  %1780 = load ptr, ptr %18, align 8, !tbaa !5
  %1781 = load i32, ptr %101, align 4, !tbaa !9
  %1782 = call i32 @sqlite3GetTempRange(ptr noundef %1780, i32 noundef %1781)
  store i32 %1782, ptr %98, align 4, !tbaa !9
  store i32 0, ptr %102, align 4, !tbaa !9
  br label %1783

1783:                                             ; preds = %1803, %1773
  %1784 = load i32, ptr %102, align 4, !tbaa !9
  %1785 = load i32, ptr %101, align 4, !tbaa !9
  %1786 = icmp slt i32 %1784, %1785
  br i1 %1786, label %1787, label %1806

1787:                                             ; preds = %1783
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #4
  %1788 = load ptr, ptr %100, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.Index, ptr %1788, i32 0, i32 1
  %1790 = load ptr, ptr %1789, align 8, !tbaa !83
  %1791 = load i32, ptr %102, align 4, !tbaa !9
  %1792 = sext i32 %1791 to i64
  %1793 = getelementptr inbounds i16, ptr %1790, i64 %1792
  %1794 = load i16, ptr %1793, align 2, !tbaa !74
  %1795 = sext i16 %1794 to i32
  store i32 %1795, ptr %103, align 4, !tbaa !9
  %1796 = load ptr, ptr %18, align 8, !tbaa !5
  %1797 = load ptr, ptr %86, align 8, !tbaa !5
  %1798 = load i32, ptr %103, align 4, !tbaa !9
  %1799 = load i32, ptr %10, align 4, !tbaa !9
  %1800 = load i32, ptr %98, align 4, !tbaa !9
  %1801 = load i32, ptr %102, align 4, !tbaa !9
  %1802 = add nsw i32 %1800, %1801
  call void @sqlite3ExprCodeGetColumnToReg(ptr noundef %1796, ptr noundef %1797, i32 noundef %1798, i32 noundef %1799, i32 noundef %1802)
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #4
  br label %1803

1803:                                             ; preds = %1787
  %1804 = load i32, ptr %102, align 4, !tbaa !9
  %1805 = add nsw i32 %1804, 1
  store i32 %1805, ptr %102, align 4, !tbaa !9
  br label %1783, !llvm.loop !106

1806:                                             ; preds = %1783
  %1807 = load i32, ptr %99, align 4, !tbaa !9
  %1808 = icmp ne i32 %1807, 0
  br i1 %1808, label %1809, label %1815

1809:                                             ; preds = %1806
  %1810 = load ptr, ptr %20, align 8, !tbaa !5
  %1811 = load i32, ptr %78, align 4, !tbaa !9
  %1812 = load i32, ptr %98, align 4, !tbaa !9
  %1813 = load i32, ptr %101, align 4, !tbaa !9
  %1814 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1810, i32 noundef 31, i32 noundef %1811, i32 noundef 0, i32 noundef %1812, i32 noundef %1813)
  store i32 %1814, ptr %95, align 4, !tbaa !9
  br label %1815

1815:                                             ; preds = %1809, %1806
  %1816 = load i32, ptr %99, align 4, !tbaa !9
  %1817 = icmp sge i32 %1816, 0
  br i1 %1817, label %1818, label %1835

1818:                                             ; preds = %1815
  %1819 = load ptr, ptr %20, align 8, !tbaa !5
  %1820 = load i32, ptr %98, align 4, !tbaa !9
  %1821 = load i32, ptr %101, align 4, !tbaa !9
  %1822 = load i32, ptr %79, align 4, !tbaa !9
  %1823 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1819, i32 noundef 100, i32 noundef %1820, i32 noundef %1821, i32 noundef %1822)
  %1824 = load ptr, ptr %20, align 8, !tbaa !5
  %1825 = load i32, ptr %78, align 4, !tbaa !9
  %1826 = load i32, ptr %79, align 4, !tbaa !9
  %1827 = load i32, ptr %98, align 4, !tbaa !9
  %1828 = load i32, ptr %101, align 4, !tbaa !9
  %1829 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %1824, i32 noundef 126, i32 noundef %1825, i32 noundef %1826, i32 noundef %1827, i32 noundef %1828)
  %1830 = load i32, ptr %99, align 4, !tbaa !9
  %1831 = icmp ne i32 %1830, 0
  br i1 %1831, label %1832, label %1834

1832:                                             ; preds = %1818
  %1833 = load ptr, ptr %20, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %1833, i16 noundef zeroext 16)
  br label %1834

1834:                                             ; preds = %1832, %1818
  br label %1835

1835:                                             ; preds = %1834, %1815
  %1836 = load ptr, ptr %18, align 8, !tbaa !5
  %1837 = load i32, ptr %98, align 4, !tbaa !9
  %1838 = load i32, ptr %101, align 4, !tbaa !9
  call void @sqlite3ReleaseTempRange(ptr noundef %1836, i32 noundef %1837, i32 noundef %1838)
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  br label %1839

1839:                                             ; preds = %1835, %1762
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  br label %1840

1840:                                             ; preds = %1839, %1726
  %1841 = load ptr, ptr %20, align 8, !tbaa !5
  %1842 = load i32, ptr %77, align 4, !tbaa !9
  %1843 = load i32, ptr %80, align 4, !tbaa !9
  %1844 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1841, i32 noundef 14, i32 noundef %1842, i32 noundef %1843)
  %1845 = load i32, ptr %95, align 4, !tbaa !9
  %1846 = icmp ne i32 %1845, 0
  br i1 %1846, label %1847, label %1850

1847:                                             ; preds = %1840
  %1848 = load ptr, ptr %20, align 8, !tbaa !5
  %1849 = load i32, ptr %95, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %1848, i32 noundef %1849)
  br label %1850

1850:                                             ; preds = %1847, %1840
  %1851 = load ptr, ptr %93, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.WhereInfo, ptr %1851, i32 0, i32 14
  %1853 = load i8, ptr %1852, align 2, !tbaa !107
  %1854 = icmp ne i8 %1853, 0
  br i1 %1854, label %1855, label %1856

1855:                                             ; preds = %1850
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1856

1856:                                             ; preds = %1855, %1850
  %1857 = load ptr, ptr %93, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.WhereInfo, ptr %1857, i32 0, i32 23
  %1859 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %1858, i64 0, i64 0
  %1860 = getelementptr inbounds %struct.WhereLevel, ptr %1859, i32 0, i32 18
  %1861 = load ptr, ptr %1860, align 8, !tbaa !22
  store ptr %1861, ptr %96, align 8, !tbaa !5
  %1862 = load ptr, ptr %96, align 8, !tbaa !5
  %1863 = getelementptr inbounds %struct.WhereLoop, ptr %1862, i32 0, i32 8
  %1864 = load i32, ptr %1863, align 8, !tbaa !31
  %1865 = and i32 %1864, 512
  %1866 = icmp ne i32 %1865, 0
  br i1 %1866, label %1867, label %1898

1867:                                             ; preds = %1856
  %1868 = load i32, ptr %83, align 4, !tbaa !9
  %1869 = icmp eq i32 %1868, 0
  br i1 %1869, label %1877, label %1870

1870:                                             ; preds = %1867
  %1871 = load ptr, ptr %96, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.WhereLoop, ptr %1871, i32 0, i32 7
  %1873 = getelementptr inbounds %struct.anon.3, ptr %1872, i32 0, i32 3
  %1874 = load ptr, ptr %1873, align 8, !tbaa !54
  %1875 = load ptr, ptr %75, align 8, !tbaa !5
  %1876 = icmp eq ptr %1874, %1875
  br i1 %1876, label %1877, label %1898

1877:                                             ; preds = %1870, %1867
  %1878 = load ptr, ptr %86, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.Table, ptr %1878, i32 0, i32 9
  %1880 = load i32, ptr %1879, align 8, !tbaa !90
  %1881 = and i32 %1880, 32
  %1882 = icmp eq i32 %1881, 0
  br i1 %1882, label %1893, label %1883

1883:                                             ; preds = %1877
  %1884 = load ptr, ptr %96, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.WhereLoop, ptr %1884, i32 0, i32 7
  %1886 = getelementptr inbounds %struct.anon.3, ptr %1885, i32 0, i32 3
  %1887 = load ptr, ptr %1886, align 8, !tbaa !54
  %1888 = getelementptr inbounds %struct.Index, ptr %1887, i32 0, i32 16
  %1889 = load i8, ptr %1888, align 1
  %1890 = and i8 %1889, 3
  %1891 = zext i8 %1890 to i32
  %1892 = icmp eq i32 %1891, 2
  br i1 %1892, label %1898, label %1893

1893:                                             ; preds = %1883, %1877
  %1894 = load ptr, ptr %96, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.WhereLoop, ptr %1894, i32 0, i32 7
  %1896 = getelementptr inbounds %struct.anon.3, ptr %1895, i32 0, i32 3
  %1897 = load ptr, ptr %1896, align 8, !tbaa !54
  store ptr %1897, ptr %75, align 8, !tbaa !5
  br label %1899

1898:                                             ; preds = %1883, %1870, %1856
  store ptr null, ptr %75, align 8, !tbaa !5
  br label %1899

1899:                                             ; preds = %1898, %1893
  %1900 = load ptr, ptr %93, align 8, !tbaa !5
  call void @sqlite3WhereEnd(ptr noundef %1900)
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  br label %1901

1901:                                             ; preds = %1899, %1717
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  br label %1902

1902:                                             ; preds = %1901, %1693
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  br label %1903

1903:                                             ; preds = %1902
  %1904 = load i32, ptr %83, align 4, !tbaa !9
  %1905 = add nsw i32 %1904, 1
  store i32 %1905, ptr %83, align 4, !tbaa !9
  br label %1675, !llvm.loop !108

1906:                                             ; preds = %1675
  %1907 = load ptr, ptr %75, align 8, !tbaa !5
  %1908 = load ptr, ptr %14, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.WhereLevel, ptr %1908, i32 0, i32 17
  store ptr %1907, ptr %1909, align 8, !tbaa !54
  %1910 = load ptr, ptr %75, align 8, !tbaa !5
  %1911 = icmp ne ptr %1910, null
  br i1 %1911, label %1912, label %1916

1912:                                             ; preds = %1906
  %1913 = load i32, ptr %76, align 4, !tbaa !9
  %1914 = load ptr, ptr %14, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.WhereLevel, ptr %1914, i32 0, i32 2
  store i32 %1913, ptr %1915, align 8, !tbaa !75
  br label %1916

1916:                                             ; preds = %1912, %1906
  %1917 = load ptr, ptr %85, align 8, !tbaa !5
  %1918 = icmp ne ptr %1917, null
  br i1 %1918, label %1919, label %1924

1919:                                             ; preds = %1916
  %1920 = load ptr, ptr %85, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.Expr, ptr %1920, i32 0, i32 4
  store ptr null, ptr %1921, align 8, !tbaa !70
  %1922 = load ptr, ptr %19, align 8, !tbaa !5
  %1923 = load ptr, ptr %85, align 8, !tbaa !5
  call void @sqlite3ExprDelete(ptr noundef %1922, ptr noundef %1923)
  br label %1924

1924:                                             ; preds = %1919, %1916
  %1925 = load ptr, ptr %20, align 8, !tbaa !5
  %1926 = load i32, ptr %81, align 4, !tbaa !9
  %1927 = load ptr, ptr %20, align 8, !tbaa !5
  %1928 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %1927)
  call void @sqlite3VdbeChangeP1(ptr noundef %1925, i32 noundef %1926, i32 noundef %1928)
  %1929 = load ptr, ptr %20, align 8, !tbaa !5
  %1930 = load ptr, ptr %14, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.WhereLevel, ptr %1930, i32 0, i32 3
  %1932 = load i32, ptr %1931, align 4, !tbaa !35
  %1933 = call i32 @sqlite3VdbeGoto(ptr noundef %1929, i32 noundef %1932)
  %1934 = load ptr, ptr %20, align 8, !tbaa !5
  %1935 = load i32, ptr %80, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1934, i32 noundef %1935)
  %1936 = load ptr, ptr %5, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.WhereInfo, ptr %1936, i32 0, i32 10
  %1938 = load i8, ptr %1937, align 2, !tbaa !96
  %1939 = zext i8 %1938 to i32
  %1940 = icmp sgt i32 %1939, 1
  br i1 %1940, label %1941, label %1944

1941:                                             ; preds = %1924
  %1942 = load ptr, ptr %19, align 8, !tbaa !5
  %1943 = load ptr, ptr %74, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1942, ptr noundef %1943)
  br label %1944

1944:                                             ; preds = %1941, %1924
  %1945 = load i32, ptr %82, align 4, !tbaa !9
  %1946 = icmp ne i32 %1945, 0
  br i1 %1946, label %1950, label %1947

1947:                                             ; preds = %1944
  %1948 = load ptr, ptr %14, align 8, !tbaa !5
  %1949 = load ptr, ptr %17, align 8, !tbaa !5
  call void @disableTerm(ptr noundef %1948, ptr noundef %1949)
  br label %1950

1950:                                             ; preds = %1947, %1944
  store i32 0, ptr %33, align 4
  br label %1951

1951:                                             ; preds = %1950, %1530
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  %1952 = load i32, ptr %33, align 4
  switch i32 %1952, label %2237 [
    i32 0, label %1953
  ]

1953:                                             ; preds = %1951
  br label %1991

1954:                                             ; preds = %1429
  %1955 = load ptr, ptr %21, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.SrcList_item, ptr %1955, i32 0, i32 9
  %1957 = getelementptr inbounds %struct.anon, ptr %1956, i32 0, i32 1
  %1958 = load i8, ptr %1957, align 1
  %1959 = lshr i8 %1958, 5
  %1960 = and i8 %1959, 1
  %1961 = zext i8 %1960 to i32
  %1962 = icmp ne i32 %1961, 0
  br i1 %1962, label %1963, label %1966

1963:                                             ; preds = %1954
  %1964 = load ptr, ptr %14, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.WhereLevel, ptr %1964, i32 0, i32 12
  store i8 -94, ptr %1965, align 1, !tbaa !45
  br label %1990

1966:                                             ; preds = %1954
  %1967 = load i32, ptr %13, align 4, !tbaa !9
  %1968 = sext i32 %1967 to i64
  %1969 = getelementptr inbounds [2 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStep, i64 0, i64 %1968
  %1970 = load i8, ptr %1969, align 1, !tbaa !54
  %1971 = load ptr, ptr %14, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.WhereLevel, ptr %1971, i32 0, i32 12
  store i8 %1970, ptr %1972, align 1, !tbaa !45
  %1973 = load i32, ptr %10, align 4, !tbaa !9
  %1974 = load ptr, ptr %14, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.WhereLevel, ptr %1974, i32 0, i32 15
  store i32 %1973, ptr %1975, align 8, !tbaa !55
  %1976 = load ptr, ptr %20, align 8, !tbaa !5
  %1977 = load i32, ptr %13, align 4, !tbaa !9
  %1978 = sext i32 %1977 to i64
  %1979 = getelementptr inbounds [2 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStart, i64 0, i64 %1978
  %1980 = load i8, ptr %1979, align 1, !tbaa !54
  %1981 = zext i8 %1980 to i32
  %1982 = load i32, ptr %10, align 4, !tbaa !9
  %1983 = load i32, ptr %23, align 4, !tbaa !9
  %1984 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1976, i32 noundef %1981, i32 noundef %1982, i32 noundef %1983)
  %1985 = add nsw i32 1, %1984
  %1986 = load ptr, ptr %14, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.WhereLevel, ptr %1986, i32 0, i32 16
  store i32 %1985, ptr %1987, align 4, !tbaa !44
  %1988 = load ptr, ptr %14, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.WhereLevel, ptr %1988, i32 0, i32 14
  store i8 1, ptr %1989, align 1, !tbaa !93
  br label %1990

1990:                                             ; preds = %1966, %1963
  br label %1991

1991:                                             ; preds = %1990, %1953
  br label %1992

1992:                                             ; preds = %1991, %1428
  br label %1993

1993:                                             ; preds = %1992, %757
  br label %1994

1994:                                             ; preds = %1993, %535
  br label %1995

1995:                                             ; preds = %1994, %499
  br label %1996

1996:                                             ; preds = %1995, %245
  %1997 = load ptr, ptr %16, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.WhereClause, ptr %1997, i32 0, i32 5
  %1999 = load ptr, ptr %1998, align 8, !tbaa !102
  store ptr %1999, ptr %17, align 8, !tbaa !5
  %2000 = load ptr, ptr %16, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.WhereClause, ptr %2000, i32 0, i32 3
  %2002 = load i32, ptr %2001, align 4, !tbaa !101
  store i32 %2002, ptr %8, align 4, !tbaa !9
  br label %2003

2003:                                             ; preds = %2080, %1996
  %2004 = load i32, ptr %8, align 4, !tbaa !9
  %2005 = icmp sgt i32 %2004, 0
  br i1 %2005, label %2006, label %2085

2006:                                             ; preds = %2003
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #4
  store i32 0, ptr %105, align 4, !tbaa !9
  %2007 = load ptr, ptr %17, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.WhereTerm, ptr %2007, i32 0, i32 3
  %2009 = load i16, ptr %2008, align 2, !tbaa !79
  %2010 = zext i16 %2009 to i32
  %2011 = and i32 %2010, 6
  %2012 = icmp ne i32 %2011, 0
  br i1 %2012, label %2013, label %2014

2013:                                             ; preds = %2006
  store i32 28, ptr %33, align 4
  br label %2077

2014:                                             ; preds = %2006
  %2015 = load ptr, ptr %17, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.WhereTerm, ptr %2015, i32 0, i32 12
  %2017 = load i64, ptr %2016, align 8, !tbaa !109
  %2018 = load ptr, ptr %14, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.WhereLevel, ptr %2018, i32 0, i32 19
  %2020 = load i64, ptr %2019, align 8, !tbaa !29
  %2021 = and i64 %2017, %2020
  %2022 = icmp ne i64 %2021, 0
  br i1 %2022, label %2023, label %2026

2023:                                             ; preds = %2014
  %2024 = load ptr, ptr %5, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.WhereInfo, ptr %2024, i32 0, i32 14
  store i8 1, ptr %2025, align 2, !tbaa !107
  store i32 28, ptr %33, align 4
  br label %2077

2026:                                             ; preds = %2014
  %2027 = load ptr, ptr %17, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.WhereTerm, ptr %2027, i32 0, i32 0
  %2029 = load ptr, ptr %2028, align 8, !tbaa !50
  store ptr %2029, ptr %104, align 8, !tbaa !5
  %2030 = load ptr, ptr %14, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.WhereLevel, ptr %2030, i32 0, i32 0
  %2032 = load i32, ptr %2031, align 8, !tbaa !39
  %2033 = icmp ne i32 %2032, 0
  br i1 %2033, label %2034, label %2041

2034:                                             ; preds = %2026
  %2035 = load ptr, ptr %104, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.Expr, ptr %2035, i32 0, i32 2
  %2037 = load i32, ptr %2036, align 4, !tbaa !103
  %2038 = and i32 %2037, 1
  %2039 = icmp ne i32 %2038, 0
  br i1 %2039, label %2041, label %2040

2040:                                             ; preds = %2034
  store i32 28, ptr %33, align 4
  br label %2077

2041:                                             ; preds = %2034, %2026
  %2042 = load ptr, ptr %17, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.WhereTerm, ptr %2042, i32 0, i32 3
  %2044 = load i16, ptr %2043, align 2, !tbaa !79
  %2045 = zext i16 %2044 to i32
  %2046 = and i32 %2045, 512
  %2047 = icmp ne i32 %2046, 0
  br i1 %2047, label %2048, label %2061

2048:                                             ; preds = %2041
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #4
  %2049 = load ptr, ptr %14, align 8, !tbaa !5
  %2050 = getelementptr inbounds %struct.WhereLevel, ptr %2049, i32 0, i32 9
  %2051 = load i32, ptr %2050, align 4, !tbaa !80
  store i32 %2051, ptr %106, align 4, !tbaa !9
  %2052 = load ptr, ptr %20, align 8, !tbaa !5
  %2053 = load i32, ptr %106, align 4, !tbaa !9
  %2054 = and i32 %2053, 1
  %2055 = icmp ne i32 %2054, 0
  %2056 = zext i1 %2055 to i64
  %2057 = select i1 %2055, i32 22, i32 21
  %2058 = load i32, ptr %106, align 4, !tbaa !9
  %2059 = lshr i32 %2058, 1
  %2060 = call i32 @sqlite3VdbeAddOp1(ptr noundef %2052, i32 noundef %2057, i32 noundef %2059)
  store i32 %2060, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #4
  br label %2061

2061:                                             ; preds = %2048, %2041
  %2062 = load ptr, ptr %18, align 8, !tbaa !5
  %2063 = load ptr, ptr %104, align 8, !tbaa !5
  %2064 = load i32, ptr %24, align 4, !tbaa !9
  call void @sqlite3ExprIfFalse(ptr noundef %2062, ptr noundef %2063, i32 noundef %2064, i32 noundef 16)
  %2065 = load i32, ptr %105, align 4, !tbaa !9
  %2066 = icmp ne i32 %2065, 0
  br i1 %2066, label %2067, label %2070

2067:                                             ; preds = %2061
  %2068 = load ptr, ptr %20, align 8, !tbaa !5
  %2069 = load i32, ptr %105, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %2068, i32 noundef %2069)
  br label %2070

2070:                                             ; preds = %2067, %2061
  %2071 = load ptr, ptr %17, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.WhereTerm, ptr %2071, i32 0, i32 3
  %2073 = load i16, ptr %2072, align 2, !tbaa !79
  %2074 = zext i16 %2073 to i32
  %2075 = or i32 %2074, 4
  %2076 = trunc i32 %2075 to i16
  store i16 %2076, ptr %2072, align 2, !tbaa !79
  store i32 0, ptr %33, align 4
  br label %2077

2077:                                             ; preds = %2070, %2040, %2023, %2013
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  %2078 = load i32, ptr %33, align 4
  switch i32 %2078, label %2239 [
    i32 0, label %2079
    i32 28, label %2080
  ]

2079:                                             ; preds = %2077
  br label %2080

2080:                                             ; preds = %2079, %2077
  %2081 = load i32, ptr %8, align 4, !tbaa !9
  %2082 = add nsw i32 %2081, -1
  store i32 %2082, ptr %8, align 4, !tbaa !9
  %2083 = load ptr, ptr %17, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.WhereTerm, ptr %2083, i32 1
  store ptr %2084, ptr %17, align 8, !tbaa !5
  br label %2003, !llvm.loop !110

2085:                                             ; preds = %2003
  %2086 = load ptr, ptr %16, align 8, !tbaa !5
  %2087 = getelementptr inbounds %struct.WhereClause, ptr %2086, i32 0, i32 5
  %2088 = load ptr, ptr %2087, align 8, !tbaa !102
  store ptr %2088, ptr %17, align 8, !tbaa !5
  %2089 = load ptr, ptr %16, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.WhereClause, ptr %2089, i32 0, i32 3
  %2091 = load i32, ptr %2090, align 4, !tbaa !101
  store i32 %2091, ptr %8, align 4, !tbaa !9
  br label %2092

2092:                                             ; preds = %2167, %2085
  %2093 = load i32, ptr %8, align 4, !tbaa !9
  %2094 = icmp sgt i32 %2093, 0
  br i1 %2094, label %2095, label %2172

2095:                                             ; preds = %2092
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.start.p0(i64 72, ptr %108) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #4
  %2096 = load ptr, ptr %17, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.WhereTerm, ptr %2096, i32 0, i32 3
  %2098 = load i16, ptr %2097, align 2, !tbaa !79
  %2099 = zext i16 %2098 to i32
  %2100 = and i32 %2099, 6
  %2101 = icmp ne i32 %2100, 0
  br i1 %2101, label %2102, label %2103

2102:                                             ; preds = %2095
  store i32 31, ptr %33, align 4
  br label %2164

2103:                                             ; preds = %2095
  %2104 = load ptr, ptr %17, align 8, !tbaa !5
  %2105 = getelementptr inbounds %struct.WhereTerm, ptr %2104, i32 0, i32 4
  %2106 = load i16, ptr %2105, align 4, !tbaa !48
  %2107 = zext i16 %2106 to i32
  %2108 = and i32 %2107, 130
  %2109 = icmp eq i32 %2108, 0
  br i1 %2109, label %2110, label %2111

2110:                                             ; preds = %2103
  store i32 31, ptr %33, align 4
  br label %2164

2111:                                             ; preds = %2103
  %2112 = load ptr, ptr %17, align 8, !tbaa !5
  %2113 = getelementptr inbounds %struct.WhereTerm, ptr %2112, i32 0, i32 4
  %2114 = load i16, ptr %2113, align 4, !tbaa !48
  %2115 = zext i16 %2114 to i32
  %2116 = and i32 %2115, 2048
  %2117 = icmp eq i32 %2116, 0
  br i1 %2117, label %2118, label %2119

2118:                                             ; preds = %2111
  store i32 31, ptr %33, align 4
  br label %2164

2119:                                             ; preds = %2111
  %2120 = load ptr, ptr %17, align 8, !tbaa !5
  %2121 = getelementptr inbounds %struct.WhereTerm, ptr %2120, i32 0, i32 8
  %2122 = load i32, ptr %2121, align 4, !tbaa !105
  %2123 = load i32, ptr %10, align 4, !tbaa !9
  %2124 = icmp ne i32 %2122, %2123
  br i1 %2124, label %2125, label %2126

2125:                                             ; preds = %2119
  store i32 31, ptr %33, align 4
  br label %2164

2126:                                             ; preds = %2119
  %2127 = load ptr, ptr %14, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.WhereLevel, ptr %2127, i32 0, i32 0
  %2129 = load i32, ptr %2128, align 8, !tbaa !39
  %2130 = icmp ne i32 %2129, 0
  br i1 %2130, label %2131, label %2132

2131:                                             ; preds = %2126
  store i32 31, ptr %33, align 4
  br label %2164

2132:                                             ; preds = %2126
  %2133 = load ptr, ptr %17, align 8, !tbaa !5
  %2134 = getelementptr inbounds %struct.WhereTerm, ptr %2133, i32 0, i32 0
  %2135 = load ptr, ptr %2134, align 8, !tbaa !50
  store ptr %2135, ptr %107, align 8, !tbaa !5
  %2136 = load ptr, ptr %16, align 8, !tbaa !5
  %2137 = load i32, ptr %10, align 4, !tbaa !9
  %2138 = load ptr, ptr %17, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.WhereTerm, ptr %2138, i32 0, i32 10
  %2140 = load i32, ptr %2139, align 8, !tbaa !54
  %2141 = load i64, ptr %7, align 8, !tbaa !11
  %2142 = call ptr @sqlite3WhereFindTerm(ptr noundef %2136, i32 noundef %2137, i32 noundef %2140, i64 noundef %2141, i32 noundef 131, ptr noundef null)
  store ptr %2142, ptr %109, align 8, !tbaa !5
  %2143 = load ptr, ptr %109, align 8, !tbaa !5
  %2144 = icmp eq ptr %2143, null
  br i1 %2144, label %2145, label %2146

2145:                                             ; preds = %2132
  store i32 31, ptr %33, align 4
  br label %2164

2146:                                             ; preds = %2132
  %2147 = load ptr, ptr %109, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.WhereTerm, ptr %2147, i32 0, i32 3
  %2149 = load i16, ptr %2148, align 2, !tbaa !79
  %2150 = zext i16 %2149 to i32
  %2151 = and i32 %2150, 4
  %2152 = icmp ne i32 %2151, 0
  br i1 %2152, label %2153, label %2154

2153:                                             ; preds = %2146
  store i32 31, ptr %33, align 4
  br label %2164

2154:                                             ; preds = %2146
  %2155 = load ptr, ptr %109, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.WhereTerm, ptr %2155, i32 0, i32 0
  %2157 = load ptr, ptr %2156, align 8, !tbaa !50
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %108, ptr align 8 %2157, i64 72, i1 false), !tbaa.struct !111
  %2158 = load ptr, ptr %107, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.Expr, ptr %2158, i32 0, i32 4
  %2160 = load ptr, ptr %2159, align 8, !tbaa !70
  %2161 = getelementptr inbounds %struct.Expr, ptr %108, i32 0, i32 4
  store ptr %2160, ptr %2161, align 8, !tbaa !70
  %2162 = load ptr, ptr %18, align 8, !tbaa !5
  %2163 = load i32, ptr %24, align 4, !tbaa !9
  call void @sqlite3ExprIfFalse(ptr noundef %2162, ptr noundef %108, i32 noundef %2163, i32 noundef 16)
  store i32 0, ptr %33, align 4
  br label %2164

2164:                                             ; preds = %2154, %2153, %2145, %2131, %2125, %2118, %2110, %2102
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 72, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  %2165 = load i32, ptr %33, align 4
  switch i32 %2165, label %2239 [
    i32 0, label %2166
    i32 31, label %2167
  ]

2166:                                             ; preds = %2164
  br label %2167

2167:                                             ; preds = %2166, %2164
  %2168 = load i32, ptr %8, align 4, !tbaa !9
  %2169 = add nsw i32 %2168, -1
  store i32 %2169, ptr %8, align 4, !tbaa !9
  %2170 = load ptr, ptr %17, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.WhereTerm, ptr %2170, i32 1
  store ptr %2171, ptr %17, align 8, !tbaa !5
  br label %2092, !llvm.loop !112

2172:                                             ; preds = %2092
  %2173 = load ptr, ptr %14, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.WhereLevel, ptr %2173, i32 0, i32 0
  %2175 = load i32, ptr %2174, align 8, !tbaa !39
  %2176 = icmp ne i32 %2175, 0
  br i1 %2176, label %2177, label %2233

2177:                                             ; preds = %2172
  %2178 = load ptr, ptr %20, align 8, !tbaa !5
  %2179 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %2178)
  %2180 = load ptr, ptr %14, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.WhereLevel, ptr %2180, i32 0, i32 7
  store i32 %2179, ptr %2181, align 4, !tbaa !113
  %2182 = load ptr, ptr %20, align 8, !tbaa !5
  %2183 = load ptr, ptr %14, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct.WhereLevel, ptr %2183, i32 0, i32 0
  %2185 = load i32, ptr %2184, align 8, !tbaa !39
  %2186 = call i32 @sqlite3VdbeAddOp2(ptr noundef %2182, i32 noundef 77, i32 noundef 1, i32 noundef %2185)
  %2187 = load ptr, ptr %18, align 8, !tbaa !5
  call void @sqlite3ExprCacheClear(ptr noundef %2187)
  %2188 = load ptr, ptr %16, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.WhereClause, ptr %2188, i32 0, i32 5
  %2190 = load ptr, ptr %2189, align 8, !tbaa !102
  store ptr %2190, ptr %17, align 8, !tbaa !5
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %2191

2191:                                             ; preds = %2227, %2177
  %2192 = load i32, ptr %8, align 4, !tbaa !9
  %2193 = load ptr, ptr %16, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.WhereClause, ptr %2193, i32 0, i32 3
  %2195 = load i32, ptr %2194, align 4, !tbaa !101
  %2196 = icmp slt i32 %2192, %2195
  br i1 %2196, label %2197, label %2232

2197:                                             ; preds = %2191
  %2198 = load ptr, ptr %17, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.WhereTerm, ptr %2198, i32 0, i32 3
  %2200 = load i16, ptr %2199, align 2, !tbaa !79
  %2201 = zext i16 %2200 to i32
  %2202 = and i32 %2201, 6
  %2203 = icmp ne i32 %2202, 0
  br i1 %2203, label %2204, label %2205

2204:                                             ; preds = %2197
  br label %2227

2205:                                             ; preds = %2197
  %2206 = load ptr, ptr %17, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.WhereTerm, ptr %2206, i32 0, i32 12
  %2208 = load i64, ptr %2207, align 8, !tbaa !109
  %2209 = load ptr, ptr %14, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.WhereLevel, ptr %2209, i32 0, i32 19
  %2211 = load i64, ptr %2210, align 8, !tbaa !29
  %2212 = and i64 %2208, %2211
  %2213 = icmp ne i64 %2212, 0
  br i1 %2213, label %2214, label %2215

2214:                                             ; preds = %2205
  br label %2227

2215:                                             ; preds = %2205
  %2216 = load ptr, ptr %18, align 8, !tbaa !5
  %2217 = load ptr, ptr %17, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.WhereTerm, ptr %2217, i32 0, i32 0
  %2219 = load ptr, ptr %2218, align 8, !tbaa !50
  %2220 = load i32, ptr %24, align 4, !tbaa !9
  call void @sqlite3ExprIfFalse(ptr noundef %2216, ptr noundef %2219, i32 noundef %2220, i32 noundef 16)
  %2221 = load ptr, ptr %17, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.WhereTerm, ptr %2221, i32 0, i32 3
  %2223 = load i16, ptr %2222, align 2, !tbaa !79
  %2224 = zext i16 %2223 to i32
  %2225 = or i32 %2224, 4
  %2226 = trunc i32 %2225 to i16
  store i16 %2226, ptr %2222, align 2, !tbaa !79
  br label %2227

2227:                                             ; preds = %2215, %2214, %2204
  %2228 = load i32, ptr %8, align 4, !tbaa !9
  %2229 = add nsw i32 %2228, 1
  store i32 %2229, ptr %8, align 4, !tbaa !9
  %2230 = load ptr, ptr %17, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.WhereTerm, ptr %2230, i32 1
  store ptr %2231, ptr %17, align 8, !tbaa !5
  br label %2191, !llvm.loop !114

2232:                                             ; preds = %2191
  br label %2233

2233:                                             ; preds = %2232, %2172
  %2234 = load ptr, ptr %14, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.WhereLevel, ptr %2234, i32 0, i32 19
  %2236 = load i64, ptr %2235, align 8, !tbaa !29
  store i64 %2236, ptr %4, align 8
  store i32 1, ptr %33, align 4
  br label %2237

2237:                                             ; preds = %2233, %1951
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  %2238 = load i64, ptr %4, align 8
  ret i64 %2238

2239:                                             ; preds = %2164, %2077, %1653, %329
  unreachable
}

declare i64 @sqlite3WhereGetMask(ptr noundef, i32 noundef) #2

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) #2

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

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

declare void @sqlite3ExprCachePush(ptr noundef) #2

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

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

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) #2

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

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

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

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

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

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

declare void @sqlite3ExprCachePop(ptr noundef) #2

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

declare i32 @sqlite3ExprIsVector(ptr noundef) #2

declare i32 @sqlite3GetTempReg(ptr noundef) #2

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

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

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

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

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

declare i32 @sqlite3ExprCanBeNull(ptr noundef) #2

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

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

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

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

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

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

declare ptr @sqlite3PrimaryKeyIndex(ptr noundef) #2

declare signext i16 @sqlite3ColumnOfIndex(ptr noundef, i16 noundef signext) #2

declare ptr @sqlite3DbMallocRaw(ptr noundef, i64 noundef) #2

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

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

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

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

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

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

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

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

declare void @sqlite3WhereEnd(ptr noundef) #2

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

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

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

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

declare ptr @sqlite3WhereFindTerm(ptr noundef, i32 noundef, i32 noundef, i64 noundef, i32 noundef, ptr noundef) #2

declare void @sqlite3ExprCacheClear(ptr noundef) #2

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: readwrite) }
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, !12, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = !{!14, !6, i64 0}
!14 = !{!"WhereInfo", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !15, i64 32, !7, i64 36, !10, i64 44, !10, i64 48, !10, i64 52, !15, i64 56, !7, i64 58, !7, i64 59, !7, i64 60, !7, i64 61, !7, i64 62, !7, i64 63, !7, i64 64, !10, i64 68, !6, i64 72, !12, i64 80, !15, i64 88, !16, i64 96, !17, i64 648, !7, i64 912}
!15 = !{!"short", !7, i64 0}
!16 = !{!"WhereClause", !6, i64 0, !6, i64 8, !7, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !7, i64 40}
!17 = !{!"WhereMaskSet", !10, i64 0, !7, i64 4}
!18 = !{!19, !6, i64 16}
!19 = !{!"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, !20, 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, !20, i64 432, !20, i64 448, !15, 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, !20, i64 536, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584}
!20 = !{!"Token", !6, i64 0, !10, i64 8}
!21 = !{!19, !6, i64 0}
!22 = !{!23, !6, i64 72}
!23 = !{!"WhereLevel", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !7, i64 44, !7, i64 45, !7, i64 46, !7, i64 47, !10, i64 48, !10, i64 52, !7, i64 56, !6, i64 72, !12, i64 80}
!24 = !{!14, !6, i64 8}
!25 = !{!23, !7, i64 44}
!26 = !{!27, !10, i64 68}
!27 = !{!"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, !28, i64 60, !7, i64 64, !10, i64 68, !6, i64 72, !6, i64 80, !12, i64 88, !7, i64 96, !6, i64 104}
!28 = !{!"", !7, i64 0, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1}
!29 = !{!23, !12, i64 80}
!30 = !{!14, !12, i64 80}
!31 = !{!32, !10, i64 40}
!32 = !{!"WhereLoop", !12, i64 0, !12, i64 8, !7, i64 16, !7, i64 17, !15, i64 18, !15, i64 20, !15, i64 22, !7, i64 24, !10, i64 40, !15, i64 44, !15, i64 46, !15, i64 48, !6, i64 56, !6, i64 64, !7, i64 72}
!33 = !{!14, !15, i64 56}
!34 = !{!23, !10, i64 16}
!35 = !{!23, !10, i64 12}
!36 = !{!23, !10, i64 24}
!37 = !{!27, !7, i64 60}
!38 = !{!19, !10, i64 56}
!39 = !{!23, !10, i64 0}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!27, !10, i64 52}
!43 = !{!27, !10, i64 48}
!44 = !{!23, !10, i64 52}
!45 = !{!23, !7, i64 45}
!46 = !{!32, !15, i64 44}
!47 = !{!32, !6, i64 56}
!48 = !{!49, !15, i64 20}
!49 = !{!"WhereTerm", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 18, !15, i64 20, !7, i64 22, !7, i64 23, !10, i64 24, !10, i64 28, !10, i64 32, !7, i64 40, !12, i64 48, !12, i64 56}
!50 = !{!49, !6, i64 0}
!51 = !{!52, !6, i64 24}
!52 = !{!"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, !15, i64 48, !15, i64 50, !15, i64 52, !7, i64 54, !6, i64 56, !6, i64 64}
!53 = distinct !{!53, !41}
!54 = !{!7, !7, i64 0}
!55 = !{!23, !10, i64 48}
!56 = !{!14, !7, i64 61}
!57 = !{!58, !7, i64 85}
!58 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !12, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !15, 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, !59, 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, !60, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !61, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !61, i64 488, !61, i64 512, !62, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !12, i64 648, !12, i64 656, !6, i64 664}
!59 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!60 = !{!"Lookaside", !10, i64 0, !15, i64 4, !7, i64 6, !10, i64 8, !10, i64 12, !7, i64 16, !6, i64 32, !6, i64 40, !6, i64 48}
!61 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!62 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!63 = !{!64, !10, i64 4}
!64 = !{!"InLoop", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!66, !7, i64 0}
!66 = !{!"VdbeOp", !7, i64 0, !7, i64 1, !15, i64 2, !10, i64 4, !10, i64 8, !10, i64 12, !7, i64 16}
!67 = !{!66, !10, i64 4}
!68 = !{!66, !10, i64 8}
!69 = !{!66, !10, i64 12}
!70 = !{!52, !6, i64 16}
!71 = !{!52, !10, i64 44}
!72 = distinct !{!72, !41}
!73 = !{!52, !7, i64 0}
!74 = !{!15, !15, i64 0}
!75 = !{!23, !10, i64 8}
!76 = !{!14, !7, i64 59}
!77 = !{!78, !15, i64 94}
!78 = !{!"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, !15, i64 92, !15, i64 94, !15, 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}
!79 = !{!49, !15, i64 18}
!80 = !{!23, !10, i64 36}
!81 = !{!23, !10, i64 40}
!82 = !{!78, !6, i64 56}
!83 = !{!78, !6, i64 8}
!84 = !{!78, !6, i64 24}
!85 = !{!86, !6, i64 8}
!86 = !{!"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, !15, i64 68, !15, i64 70, !15, i64 72, !15, 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}
!87 = !{!88, !7, i64 24}
!88 = !{!"Column", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!89 = !{!32, !15, i64 46}
!90 = !{!86, !10, i64 64}
!91 = distinct !{!91, !41}
!92 = !{!23, !7, i64 46}
!93 = !{!23, !7, i64 47}
!94 = !{!19, !10, i64 52}
!95 = !{!27, !6, i64 32}
!96 = !{!14, !7, i64 58}
!97 = !{!98, !10, i64 4}
!98 = !{!"SrcList", !10, i64 0, !10, i64 4, !7, i64 8}
!99 = !{!98, !10, i64 0}
!100 = distinct !{!100, !41}
!101 = !{!16, !10, i64 20}
!102 = !{!16, !6, i64 32}
!103 = !{!52, !10, i64 4}
!104 = distinct !{!104, !41}
!105 = !{!49, !10, i64 28}
!106 = distinct !{!106, !41}
!107 = !{!14, !7, i64 62}
!108 = distinct !{!108, !41}
!109 = !{!49, !12, i64 56}
!110 = distinct !{!110, !41}
!111 = !{i64 0, i64 1, !54, i64 1, i64 1, !54, i64 4, i64 4, !9, i64 8, i64 8, !54, i64 16, i64 8, !5, i64 24, i64 8, !5, i64 32, i64 8, !54, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 2, !74, i64 50, i64 2, !74, i64 52, i64 2, !74, i64 54, i64 1, !54, i64 56, i64 8, !5, i64 64, i64 8, !5}
!112 = distinct !{!112, !41}
!113 = !{!23, !10, i64 28}
!114 = distinct !{!114, !41}


; 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.Expr = type { i8, i8, i32, %union.anon.6, ptr, ptr, %union.anon.7, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon.6 = type { ptr }
%union.anon.7 = type { ptr }
%struct.WhereLevel = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, %union.anon.0, ptr, i64 }
%union.anon.0 = type { %struct.anon.1 }
%struct.anon.1 = type { i32, ptr }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon, i8, i32, ptr, ptr, i64, %union.anon, ptr }
%struct.anon = type { i8, i8, [2 x i8] }
%union.anon = type { ptr }
%struct.InLoop = type { i32, i32, i8 }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }
%struct.WhereTerm = type { ptr, ptr, i16, i16, i16, i8, i8, i32, i32, i32, %union.anon.5, i64, i64 }
%union.anon.5 = type { ptr }

@__const.sqlite3WhereCodeOneLoopStart.aMoveOp = external hidden unnamed_addr constant [4 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStartOp = external hidden local_unnamed_addr constant [8 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aEndOp = external hidden local_unnamed_addr constant [4 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStep = external hidden local_unnamed_addr constant [2 x i8], align 1
@sqlite3WhereCodeOneLoopStart.aStart = external hidden local_unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3WhereExplainOneScan(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i16 noundef zeroext) 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 i32 @sqlite3VdbeAddOp4(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local i64 @sqlite3WhereCodeOneLoopStart(ptr noundef %0, i32 noundef %1, i64 noundef %2) local_unnamed_addr #0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %struct.Expr, align 8
  %7 = load ptr, ptr %0, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %7, i64 16
  %9 = load ptr, ptr %8, align 8, !tbaa !15
  %10 = getelementptr inbounds i8, ptr %0, i64 96
  %11 = load ptr, ptr %7, align 8, !tbaa !18
  %12 = getelementptr inbounds i8, ptr %0, i64 912
  %13 = sext i32 %1 to i64
  %14 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %12, i64 0, i64 %13
  %15 = getelementptr inbounds i8, ptr %14, i64 72
  %16 = load ptr, ptr %15, align 8, !tbaa !19
  %17 = getelementptr inbounds i8, ptr %0, i64 8
  %18 = load ptr, ptr %17, align 8, !tbaa !21
  %19 = getelementptr inbounds i8, ptr %18, i64 8
  %20 = getelementptr inbounds i8, ptr %14, i64 44
  %21 = load i8, ptr %20, align 4, !tbaa !22
  %22 = zext i8 %21 to i64
  %23 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %19, i64 0, i64 %22
  %24 = getelementptr inbounds i8, ptr %23, i64 68
  %25 = load i32, ptr %24, align 4, !tbaa !23
  %26 = getelementptr inbounds i8, ptr %0, i64 648
  %27 = tail call i64 @sqlite3WhereGetMask(ptr noundef nonnull %26, i32 noundef %25) #5
  %28 = xor i64 %27, -1
  %29 = and i64 %28, %2
  %30 = getelementptr inbounds i8, ptr %14, i64 80
  store i64 %29, ptr %30, align 8, !tbaa !26
  %31 = getelementptr inbounds i8, ptr %0, i64 80
  %32 = load i64, ptr %31, align 8, !tbaa !27
  %33 = zext nneg i32 %1 to i64
  %34 = lshr i64 %32, %33
  %35 = trunc i64 %34 to i32
  %36 = and i32 %35, 1
  %37 = getelementptr inbounds i8, ptr %16, i64 40
  %38 = load i32, ptr %37, align 8, !tbaa !28
  %39 = and i32 %38, 64
  %.not = icmp eq i32 %39, 0
  br i1 %.not, label %45, label %40

40:                                               ; preds = %3
  %41 = getelementptr inbounds i8, ptr %0, i64 56
  %42 = load i16, ptr %41, align 8, !tbaa !30
  %43 = and i16 %42, 32
  %44 = icmp eq i16 %43, 0
  br label %45

45:                                               ; preds = %40, %3
  %46 = phi i1 [ false, %3 ], [ %44, %40 ]
  %47 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %9) #5
  %48 = getelementptr inbounds i8, ptr %14, i64 16
  store i32 %47, ptr %48, align 8, !tbaa !31
  %49 = getelementptr inbounds i8, ptr %14, i64 12
  store i32 %47, ptr %49, align 4, !tbaa !32
  %50 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %9) #5
  %51 = getelementptr inbounds i8, ptr %14, i64 24
  store i32 %50, ptr %51, align 8, !tbaa !33
  %52 = load i8, ptr %20, align 4, !tbaa !22
  %.not811 = icmp eq i8 %52, 0
  br i1 %.not811, label %62, label %53

53:                                               ; preds = %45
  %54 = getelementptr inbounds i8, ptr %23, i64 60
  %55 = load i8, ptr %54, align 4, !tbaa !34
  %56 = and i8 %55, 8
  %.not812 = icmp eq i8 %56, 0
  br i1 %.not812, label %62, label %57

57:                                               ; preds = %53
  %58 = getelementptr inbounds i8, ptr %7, i64 56
  %59 = load i32, ptr %58, align 8, !tbaa !35
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr %58, align 8, !tbaa !35
  store i32 %60, ptr %14, align 8, !tbaa !36
  %61 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef 0, i32 noundef %60) #5
  br label %62

62:                                               ; preds = %57, %53, %45
  %63 = icmp sgt i32 %1, 0
  br i1 %63, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %62, %68
  %.0719912 = phi i32 [ %69, %68 ], [ %1, %62 ]
  %64 = zext nneg i32 %.0719912 to i64
  %65 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %12, i64 0, i64 %64
  %66 = load i32, ptr %65, align 8, !tbaa !36
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %.critedge.loopexit

68:                                               ; preds = %.lr.ph
  %69 = add nsw i32 %.0719912, -1
  %70 = icmp sgt i32 %.0719912, 1
  br i1 %70, label %.lr.ph, label %.critedge.loopexit, !llvm.loop !37

.critedge.loopexit:                               ; preds = %68, %.lr.ph
  %.0719.lcssa.ph = phi i32 [ %.0719912, %.lr.ph ], [ 0, %68 ]
  %.pre = zext nneg i32 %.0719.lcssa.ph to i64
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %62
  %.pre-phi = phi i64 [ %.pre, %.critedge.loopexit ], [ %13, %62 ]
  %71 = getelementptr inbounds [1 x %struct.WhereLevel], ptr %12, i64 0, i64 %.pre-phi, i32 3
  %72 = load i32, ptr %71, align 4, !tbaa !32
  %73 = getelementptr inbounds i8, ptr %23, i64 61
  %74 = load i8, ptr %73, align 1
  %75 = and i8 %74, 16
  %.not813 = icmp eq i8 %75, 0
  br i1 %.not813, label %85, label %76

76:                                               ; preds = %.critedge
  %77 = getelementptr inbounds i8, ptr %23, i64 52
  %78 = load i32, ptr %77, align 4, !tbaa !39
  %79 = getelementptr inbounds i8, ptr %23, i64 48
  %80 = load i32, ptr %79, align 8, !tbaa !40
  %81 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef 15, i32 noundef %78, i32 noundef 0, i32 noundef %80) #5
  %82 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 16, i32 noundef %78, i32 noundef %47) #5
  %83 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 %82, ptr %83, align 4, !tbaa !41
  %84 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 13, ptr %84, align 1, !tbaa !42
  br label %.critedge895

85:                                               ; preds = %.critedge
  %86 = load i32, ptr %37, align 8, !tbaa !28
  %87 = and i32 %86, 1024
  %.not814 = icmp eq i32 %87, 0
  br i1 %.not814, label %193, label %88

88:                                               ; preds = %85
  %89 = getelementptr inbounds i8, ptr %16, i64 44
  %90 = load i16, ptr %89, align 4, !tbaa !43
  %91 = zext i16 %90 to i32
  tail call void @sqlite3ExprCachePush(ptr noundef nonnull %7) #5
  %92 = add nuw nsw i32 %91, 2
  %93 = tail call i32 @sqlite3GetTempRange(ptr noundef nonnull %7, i32 noundef %92) #5
  %94 = load i32, ptr %49, align 4, !tbaa !32
  %.not966 = icmp eq i16 %90, 0
  br i1 %.not966, label %._crit_edge, label %.lr.ph917

.lr.ph917:                                        ; preds = %88
  %95 = add i32 %93, 2
  %96 = getelementptr inbounds i8, ptr %16, i64 56
  %wide.trip.count = zext i16 %90 to i64
  br label %97

97:                                               ; preds = %.lr.ph917, %115
  %indvars.iv = phi i64 [ 0, %.lr.ph917 ], [ %indvars.iv.next, %115 ]
  %.0729915 = phi i32 [ %94, %.lr.ph917 ], [ %.2731, %115 ]
  %98 = trunc nuw nsw i64 %indvars.iv to i32
  %99 = add i32 %95, %98
  %100 = load ptr, ptr %96, align 8, !tbaa !44
  %101 = getelementptr inbounds ptr, ptr %100, i64 %indvars.iv
  %102 = load ptr, ptr %101, align 8, !tbaa !45
  %103 = icmp eq ptr %102, null
  br i1 %103, label %115, label %104

104:                                              ; preds = %97
  %105 = getelementptr inbounds i8, ptr %102, i64 20
  %106 = load i16, ptr %105, align 4, !tbaa !46
  %107 = and i16 %106, 1
  %.not873 = icmp eq i16 %107, 0
  br i1 %.not873, label %111, label %108

108:                                              ; preds = %104
  %109 = tail call i32 @codeEqualityTerm(ptr noundef nonnull %7, ptr noundef nonnull %102, ptr noundef nonnull %14, i32 noundef %98, i32 noundef %36, i32 noundef %99)
  %110 = load i32, ptr %48, align 8, !tbaa !31
  br label %115

111:                                              ; preds = %104
  %112 = load ptr, ptr %102, align 8, !tbaa !48
  %113 = getelementptr inbounds i8, ptr %112, i64 24
  %114 = load ptr, ptr %113, align 8, !tbaa !49
  tail call void @codeExprOrVector(ptr noundef nonnull %7, ptr noundef %114, i32 noundef %99, i32 noundef 1)
  br label %115

115:                                              ; preds = %108, %111, %97
  %.2731 = phi i32 [ %.0729915, %97 ], [ %110, %108 ], [ %.0729915, %111 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %97, !llvm.loop !51

._crit_edge:                                      ; preds = %115, %88
  %.0729.lcssa = phi i32 [ %94, %88 ], [ %.2731, %115 ]
  %116 = getelementptr inbounds i8, ptr %16, i64 24
  %117 = load i32, ptr %116, align 8, !tbaa !52
  %118 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef %117, i32 noundef %93) #5
  %119 = add nsw i32 %93, 1
  %120 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef %91, i32 noundef %119) #5
  %121 = getelementptr inbounds i8, ptr %16, i64 32
  %122 = load ptr, ptr %121, align 8, !tbaa !52
  %123 = getelementptr inbounds i8, ptr %16, i64 28
  %124 = load i8, ptr %123, align 4, !tbaa !52
  %.not866 = icmp eq i8 %124, 0
  %125 = select i1 %.not866, i32 -2, i32 -1
  %126 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef %9, i32 noundef 11, i32 noundef %25, i32 noundef %.0729.lcssa, i32 noundef %93, ptr noundef %122, i32 noundef %125) #5
  store i8 0, ptr %123, align 4, !tbaa !52
  %127 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %25, ptr %127, align 8, !tbaa !53
  %128 = getelementptr inbounds i8, ptr %0, i64 61
  %129 = load i8, ptr %128, align 1, !tbaa !54
  %.not867 = icmp eq i8 %129, 0
  %130 = select i1 %.not867, i8 71, i8 -94
  %131 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 %130, ptr %131, align 1, !tbaa !42
  %132 = tail call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  %133 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 %132, ptr %133, align 4, !tbaa !41
  br i1 %.not966, label %._crit_edge925, label %.lr.ph924

.lr.ph924:                                        ; preds = %._crit_edge
  %134 = getelementptr inbounds i8, ptr %14, i64 56
  %135 = load i32, ptr %134, align 8, !tbaa !52
  %136 = getelementptr inbounds i8, ptr %16, i64 56
  %137 = getelementptr inbounds i8, ptr %16, i64 30
  %138 = getelementptr inbounds i8, ptr %11, i64 85
  %139 = getelementptr inbounds i8, ptr %14, i64 64
  %140 = add i32 %93, 2
  %141 = zext i16 %90 to i64
  br label %142

142:                                              ; preds = %.lr.ph924, %191
  %indvars.iv972 = phi i64 [ %141, %.lr.ph924 ], [ %indvars.iv.next973, %191 ]
  %.0732920 = phi i32 [ %135, %.lr.ph924 ], [ %.2734, %191 ]
  %indvars.iv.next973 = add nsw i64 %indvars.iv972, -1
  %143 = load ptr, ptr %136, align 8, !tbaa !44
  %144 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv.next973
  %145 = load ptr, ptr %144, align 8, !tbaa !45
  %146 = icmp ult i64 %indvars.iv972, 17
  br i1 %146, label %147, label %154

147:                                              ; preds = %142
  %148 = load i16, ptr %137, align 2, !tbaa !52
  %149 = zext i16 %148 to i32
  %150 = trunc nuw nsw i64 %indvars.iv.next973 to i32
  %151 = shl nuw nsw i32 1, %150
  %152 = and i32 %151, %149
  %.not868 = icmp eq i32 %152, 0
  br i1 %.not868, label %154, label %153

153:                                              ; preds = %147
  tail call void @disableTerm(ptr noundef nonnull %14, ptr noundef %145)
  br label %191

154:                                              ; preds = %147, %142
  %155 = getelementptr inbounds i8, ptr %145, i64 20
  %156 = load i16, ptr %155, align 4, !tbaa !46
  %157 = and i16 %156, 1
  %.not869 = icmp eq i16 %157, 0
  br i1 %.not869, label %191, label %158

158:                                              ; preds = %154
  %159 = load i8, ptr %138, align 1, !tbaa !55
  %.not870 = icmp eq i8 %159, 0
  br i1 %.not870, label %160, label %176

160:                                              ; preds = %158
  %161 = load ptr, ptr %139, align 8, !tbaa !52
  %162 = add nsw i32 %.0732920, -1
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds %struct.InLoop, ptr %161, i64 %163, i32 1
  %165 = load i32, ptr %164, align 4, !tbaa !61
  %166 = tail call ptr @sqlite3VdbeGetOp(ptr noundef %9, i32 noundef %165) #5
  %167 = load i8, ptr %166, align 8, !tbaa !63
  %168 = zext i8 %167 to i32
  %169 = getelementptr inbounds i8, ptr %166, i64 4
  %170 = load i32, ptr %169, align 4, !tbaa !65
  %171 = getelementptr inbounds i8, ptr %166, i64 8
  %172 = load i32, ptr %171, align 8, !tbaa !66
  %173 = getelementptr inbounds i8, ptr %166, i64 12
  %174 = load i32, ptr %173, align 4, !tbaa !67
  %175 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef %168, i32 noundef %170, i32 noundef %172, i32 noundef %174) #5
  br label %176

176:                                              ; preds = %160, %158
  %.1733 = phi i32 [ %.0732920, %158 ], [ %162, %160 ]
  %177 = tail call ptr @sqlite3PExpr(ptr noundef nonnull %7, i32 noundef 37, ptr noundef null, ptr noundef null) #5
  %.not871 = icmp eq ptr %177, null
  br i1 %.not871, label %191, label %178

178:                                              ; preds = %176
  %179 = load ptr, ptr %145, align 8, !tbaa !48
  %180 = getelementptr inbounds i8, ptr %179, i64 16
  %181 = load ptr, ptr %180, align 8, !tbaa !68
  %182 = getelementptr inbounds i8, ptr %177, i64 16
  store ptr %181, ptr %182, align 8, !tbaa !68
  %183 = tail call ptr @sqlite3Expr(ptr noundef nonnull %11, i32 noundef 157, ptr noundef null) #5
  %184 = getelementptr inbounds i8, ptr %177, i64 24
  store ptr %183, ptr %184, align 8, !tbaa !49
  %.not872 = icmp eq ptr %183, null
  br i1 %.not872, label %190, label %185

185:                                              ; preds = %178
  %186 = trunc nuw nsw i64 %indvars.iv.next973 to i32
  %187 = add i32 %140, %186
  %188 = getelementptr inbounds i8, ptr %183, i64 44
  store i32 %187, ptr %188, align 4, !tbaa !69
  %189 = load i32, ptr %51, align 8, !tbaa !33
  tail call void @sqlite3ExprIfFalse(ptr noundef nonnull %7, ptr noundef nonnull %177, i32 noundef %189, i32 noundef 0) #5
  br label %190

190:                                              ; preds = %185, %178
  store ptr null, ptr %182, align 8, !tbaa !68
  tail call void @sqlite3ExprDelete(ptr noundef nonnull %11, ptr noundef nonnull %177) #5
  br label %191

191:                                              ; preds = %176, %190, %153, %154
  %.2734 = phi i32 [ %.0732920, %153 ], [ %.0732920, %154 ], [ %.1733, %190 ], [ %.1733, %176 ]
  %192 = icmp ugt i64 %indvars.iv972, 1
  br i1 %192, label %142, label %._crit_edge925, !llvm.loop !70

._crit_edge925:                                   ; preds = %191, %._crit_edge
  tail call void @sqlite3ExprCachePop(ptr noundef nonnull %7) #5
  br label %.critedge895

193:                                              ; preds = %85
  %194 = and i32 %86, 256
  %.not815 = icmp eq i32 %194, 0
  %195 = and i32 %86, 5
  %.not816 = icmp eq i32 %195, 0
  %or.cond = or i1 %.not815, %.not816
  br i1 %or.cond, label %209, label %196

196:                                              ; preds = %193
  %197 = getelementptr inbounds i8, ptr %16, i64 56
  %198 = load ptr, ptr %197, align 8, !tbaa !44
  %199 = load ptr, ptr %198, align 8, !tbaa !45
  %200 = getelementptr inbounds i8, ptr %7, i64 56
  %201 = load i32, ptr %200, align 8, !tbaa !35
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %200, align 8, !tbaa !35
  %203 = tail call i32 @codeEqualityTerm(ptr noundef nonnull %7, ptr noundef %199, ptr noundef nonnull %14, i32 noundef 0, i32 noundef %36, i32 noundef %202)
  %.not865 = icmp eq i32 %203, %202
  br i1 %.not865, label %205, label %204

204:                                              ; preds = %196
  tail call void @sqlite3ReleaseTempReg(ptr noundef nonnull %7, i32 noundef %202) #5
  br label %205

205:                                              ; preds = %204, %196
  %206 = load i32, ptr %48, align 8, !tbaa !31
  %207 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef 32, i32 noundef %25, i32 noundef %206, i32 noundef %203) #5
  tail call void @sqlite3ExprCacheAffinityChange(ptr noundef nonnull %7, i32 noundef %203, i32 noundef 1) #5
  tail call void @sqlite3ExprCacheStore(ptr noundef nonnull %7, i32 noundef %25, i32 noundef -1, i32 noundef %203) #5
  %208 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 -94, ptr %208, align 1, !tbaa !42
  br label %.critedge895

209:                                              ; preds = %193
  %210 = and i32 %86, 258
  %or.cond888.not = icmp eq i32 %210, 258
  br i1 %or.cond888.not, label %211, label %280

211:                                              ; preds = %209
  %212 = and i32 %86, 32
  %.not858 = icmp eq i32 %212, 0
  br i1 %.not858, label %217, label %213

213:                                              ; preds = %211
  %214 = getelementptr inbounds i8, ptr %16, i64 56
  %215 = load ptr, ptr %214, align 8, !tbaa !44
  %216 = load ptr, ptr %215, align 8, !tbaa !45
  br label %217

217:                                              ; preds = %213, %211
  %.0745 = phi ptr [ %216, %213 ], [ null, %211 ]
  %.3722 = phi i64 [ 1, %213 ], [ 0, %211 ]
  %218 = and i32 %86, 16
  %.not859 = icmp eq i32 %218, 0
  br i1 %.not859, label %224, label %219

219:                                              ; preds = %217
  %220 = getelementptr inbounds i8, ptr %16, i64 56
  %221 = load ptr, ptr %220, align 8, !tbaa !44
  %222 = getelementptr inbounds ptr, ptr %221, i64 %.3722
  %223 = load ptr, ptr %222, align 8, !tbaa !45
  br label %224

224:                                              ; preds = %219, %217
  %.0747 = phi ptr [ %223, %219 ], [ null, %217 ]
  %.not860 = icmp eq i32 %36, 0
  %spec.select = select i1 %.not860, ptr %.0747, ptr %.0745
  %spec.select889 = select i1 %.not860, ptr %.0745, ptr %.0747
  %.not861 = icmp eq ptr %spec.select889, null
  br i1 %.not861, label %242, label %225

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %226 = load ptr, ptr %spec.select889, align 8, !tbaa !48
  %227 = getelementptr inbounds i8, ptr %226, i64 24
  %228 = load ptr, ptr %227, align 8, !tbaa !49
  %229 = tail call i32 @sqlite3ExprIsVector(ptr noundef %228) #5
  %.not862 = icmp eq i32 %229, 0
  br i1 %.not862, label %235, label %230

230:                                              ; preds = %225
  %231 = tail call i32 @sqlite3GetTempReg(ptr noundef nonnull %7) #5
  store i32 %231, ptr %4, align 4, !tbaa !71
  %232 = load ptr, ptr %227, align 8, !tbaa !49
  tail call void @codeExprOrVector(ptr noundef nonnull %7, ptr noundef %232, i32 noundef %231, i32 noundef 1)
  %233 = load i8, ptr %226, align 8, !tbaa !72
  %234 = or i8 %233, 1
  br label %239

235:                                              ; preds = %225
  %236 = load ptr, ptr %227, align 8, !tbaa !49
  %237 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %7, ptr noundef %236, ptr noundef nonnull %4) #5
  call void @disableTerm(ptr noundef nonnull %14, ptr noundef nonnull %spec.select889)
  %238 = load i8, ptr %226, align 8, !tbaa !72
  br label %239

239:                                              ; preds = %235, %230
  %.pn.in.in = phi i8 [ %234, %230 ], [ %238, %235 ]
  %.0749 = phi i32 [ %231, %230 ], [ %237, %235 ]
  %.pn.in = zext i8 %.pn.in.in to i64
  %.pn = add nsw i64 %.pn.in, -38
  %.0750.in.in = getelementptr inbounds [4 x i8], ptr @__const.sqlite3WhereCodeOneLoopStart.aMoveOp, i64 0, i64 %.pn
  %.0750.in = load i8, ptr %.0750.in.in, align 1, !tbaa !52
  %.0750 = zext i8 %.0750.in to i32
  %240 = call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef %.0750, i32 noundef %25, i32 noundef %47, i32 noundef %.0749) #5
  call void @sqlite3ExprCacheAffinityChange(ptr noundef nonnull %7, i32 noundef %.0749, i32 noundef 1) #5
  %241 = load i32, ptr %4, align 4, !tbaa !71
  call void @sqlite3ReleaseTempReg(ptr noundef nonnull %7, i32 noundef %241) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  br label %245

242:                                              ; preds = %224
  %243 = select i1 %.not860, i32 58, i32 53
  %244 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef %243, i32 noundef %25, i32 noundef %72) #5
  br label %245

245:                                              ; preds = %242, %239
  %.not863 = icmp eq ptr %spec.select, null
  br i1 %.not863, label %267, label %246

246:                                              ; preds = %245
  %247 = load ptr, ptr %spec.select, align 8, !tbaa !48
  %248 = getelementptr inbounds i8, ptr %7, i64 56
  %249 = load i32, ptr %248, align 8, !tbaa !35
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %248, align 8, !tbaa !35
  %251 = getelementptr inbounds i8, ptr %247, i64 24
  %252 = load ptr, ptr %251, align 8, !tbaa !49
  call void @codeExprOrVector(ptr noundef nonnull %7, ptr noundef %252, i32 noundef %250, i32 noundef 1)
  %253 = load ptr, ptr %251, align 8, !tbaa !49
  %254 = call i32 @sqlite3ExprIsVector(ptr noundef %253) #5
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %260

256:                                              ; preds = %246
  %257 = load i8, ptr %247, align 8, !tbaa !72
  switch i8 %257, label %260 [
    i8 40, label %258
    i8 38, label %258
  ]

258:                                              ; preds = %256, %256
  %259 = select i1 %.not860, i32 41, i32 39
  br label %262

260:                                              ; preds = %256, %246
  %261 = select i1 %.not860, i32 38, i32 40
  br label %262

262:                                              ; preds = %260, %258
  %.0741 = phi i32 [ %259, %258 ], [ %261, %260 ]
  %263 = load ptr, ptr %251, align 8, !tbaa !49
  %264 = call i32 @sqlite3ExprIsVector(ptr noundef %263) #5
  %265 = icmp eq i32 %264, 0
  br i1 %265, label %266, label %267

266:                                              ; preds = %262
  call void @disableTerm(ptr noundef nonnull %14, ptr noundef nonnull %spec.select)
  br label %267

267:                                              ; preds = %262, %266, %245
  %.0743 = phi i32 [ 0, %245 ], [ %250, %266 ], [ %250, %262 ]
  %.1742 = phi i32 [ 162, %245 ], [ %.0741, %266 ], [ %.0741, %262 ]
  %268 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  %269 = trunc nuw nsw i32 %36 to i8
  %270 = xor i8 %269, 7
  %271 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 %270, ptr %271, align 1, !tbaa !42
  %272 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %25, ptr %272, align 8, !tbaa !53
  %273 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 %268, ptr %273, align 4, !tbaa !41
  %.not864 = icmp eq i32 %.1742, 162
  br i1 %.not864, label %.critedge895, label %274

274:                                              ; preds = %267
  %275 = getelementptr inbounds i8, ptr %7, i64 56
  %276 = load i32, ptr %275, align 8, !tbaa !35
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %275, align 8, !tbaa !35
  %278 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 123, i32 noundef %25, i32 noundef %277) #5
  call void @sqlite3ExprCacheStore(ptr noundef nonnull %7, i32 noundef %25, i32 noundef -1, i32 noundef %277) #5
  %279 = call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef %.1742, i32 noundef %.0743, i32 noundef %47, i32 noundef %277) #5
  call void @sqlite3VdbeChangeP5(ptr noundef %9, i16 noundef zeroext 83) #5
  br label %.critedge895

280:                                              ; preds = %209
  %281 = and i32 %86, 512
  %.not819 = icmp eq i32 %281, 0
  br i1 %.not819, label %553, label %282

282:                                              ; preds = %280
  %283 = getelementptr inbounds i8, ptr %16, i64 24
  %284 = load i16, ptr %283, align 8, !tbaa !52
  %285 = getelementptr inbounds i8, ptr %16, i64 26
  %286 = load i16, ptr %285, align 2, !tbaa !52
  %287 = getelementptr inbounds i8, ptr %16, i64 28
  %288 = load i16, ptr %287, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  %289 = getelementptr inbounds i8, ptr %16, i64 32
  %290 = load ptr, ptr %289, align 8, !tbaa !52
  %291 = getelementptr inbounds i8, ptr %14, i64 8
  %292 = load i32, ptr %291, align 8, !tbaa !73
  %293 = getelementptr inbounds i8, ptr %0, i64 56
  %294 = load i16, ptr %293, align 8, !tbaa !30
  %295 = and i16 %294, 1
  %.not838 = icmp eq i16 %295, 0
  br i1 %.not838, label %304, label %296

296:                                              ; preds = %282
  %297 = getelementptr inbounds i8, ptr %0, i64 59
  %298 = load i8, ptr %297, align 1, !tbaa !74
  %299 = icmp sgt i8 %298, 0
  br i1 %299, label %300, label %304

300:                                              ; preds = %296
  %301 = getelementptr inbounds i8, ptr %290, i64 94
  %302 = load i16, ptr %301, align 2, !tbaa !75
  %303 = icmp ugt i16 %302, %284
  %spec.select890 = zext i1 %303 to i8
  %spec.select891 = zext i1 %303 to i32
  br label %304

304:                                              ; preds = %300, %296, %282
  %.0785 = phi i8 [ 0, %296 ], [ 0, %282 ], [ %spec.select890, %300 ]
  %.0781 = phi i32 [ 0, %296 ], [ 0, %282 ], [ %spec.select891, %300 ]
  %305 = zext i16 %284 to i32
  %306 = and i32 %86, 32
  %.not839 = icmp eq i32 %306, 0
  br i1 %.not839, label %316, label %307

307:                                              ; preds = %304
  %308 = getelementptr inbounds i8, ptr %16, i64 56
  %309 = load ptr, ptr %308, align 8, !tbaa !44
  %310 = add nuw nsw i32 %305, 1
  %311 = zext i16 %284 to i64
  %312 = getelementptr inbounds ptr, ptr %309, i64 %311
  %313 = load ptr, ptr %312, align 8, !tbaa !45
  %314 = zext i16 %286 to i32
  %315 = icmp ugt i32 %.0781, %314
  %. = select i1 %315, i32 1, i32 %314
  br label %316

316:                                              ; preds = %307, %304
  %.1782 = phi i32 [ %., %307 ], [ %.0781, %304 ]
  %.0762 = phi ptr [ %313, %307 ], [ null, %304 ]
  %.4 = phi i32 [ %310, %307 ], [ %305, %304 ]
  %317 = and i32 %86, 16
  %.not840 = icmp eq i32 %317, 0
  br i1 %.not840, label %367, label %318

318:                                              ; preds = %316
  %319 = getelementptr inbounds i8, ptr %16, i64 56
  %320 = load ptr, ptr %319, align 8, !tbaa !44
  %321 = zext nneg i32 %.4 to i64
  %322 = getelementptr inbounds ptr, ptr %320, i64 %321
  %323 = load ptr, ptr %322, align 8, !tbaa !45
  %324 = zext i16 %288 to i32
  %.1782. = tail call i32 @llvm.umax.i32(i32 %.1782, i32 %324)
  %325 = getelementptr inbounds i8, ptr %323, i64 18
  %326 = load i16, ptr %325, align 2, !tbaa !77
  %327 = and i16 %326, 256
  %.not841 = icmp eq i16 %327, 0
  br i1 %.not841, label %347, label %328

328:                                              ; preds = %318
  %329 = getelementptr inbounds i8, ptr %7, i64 56
  %330 = load i32, ptr %329, align 8, !tbaa !35
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %329, align 8, !tbaa !35
  %332 = getelementptr inbounds i8, ptr %14, i64 36
  store i32 %331, ptr %332, align 4, !tbaa !78
  %333 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef 1, i32 noundef %331) #5
  %334 = tail call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  %335 = getelementptr inbounds i8, ptr %14, i64 40
  store i32 %334, ptr %335, align 8, !tbaa !79
  %336 = load i32, ptr %332, align 4, !tbaa !78
  %337 = shl i32 %336, 1
  store i32 %337, ptr %332, align 4, !tbaa !78
  %338 = getelementptr inbounds i8, ptr %290, i64 56
  %339 = load ptr, ptr %338, align 8, !tbaa !80
  %340 = zext i16 %284 to i64
  %341 = getelementptr inbounds i8, ptr %339, i64 %340
  %342 = load i8, ptr %341, align 1, !tbaa !52
  %343 = icmp eq i8 %342, 1
  %344 = zext i1 %343 to i32
  %345 = xor i32 %36, %344
  %346 = or disjoint i32 %345, %337
  store i32 %346, ptr %332, align 4, !tbaa !78
  br label %347

347:                                              ; preds = %328, %318
  %348 = icmp eq ptr %.0762, null
  br i1 %348, label %349, label %367

349:                                              ; preds = %347
  %350 = getelementptr inbounds i8, ptr %290, i64 8
  %351 = load ptr, ptr %350, align 8, !tbaa !81
  %352 = zext i16 %284 to i64
  %353 = getelementptr inbounds i16, ptr %351, i64 %352
  %354 = load i16, ptr %353, align 2, !tbaa !82
  %355 = icmp sgt i16 %354, -1
  br i1 %355, label %356, label %365

356:                                              ; preds = %349
  %357 = getelementptr inbounds i8, ptr %290, i64 24
  %358 = load ptr, ptr %357, align 8, !tbaa !83
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load ptr, ptr %359, align 8, !tbaa !84
  %361 = zext nneg i16 %354 to i64
  %362 = getelementptr inbounds %struct.Column, ptr %360, i64 %361, i32 3
  %363 = load i8, ptr %362, align 8, !tbaa !86
  %364 = icmp eq i8 %363, 0
  br i1 %364, label %366, label %367

365:                                              ; preds = %349
  %.old2 = icmp eq i16 %354, -2
  br i1 %.old2, label %366, label %367

366:                                              ; preds = %365, %356
  br label %367

367:                                              ; preds = %347, %356, %366, %365, %316
  %.1786 = phi i8 [ 1, %366 ], [ %.0785, %356 ], [ %.0785, %365 ], [ %.0785, %347 ], [ %.0785, %316 ]
  %.2783 = phi i32 [ %.1782., %366 ], [ %.1782., %356 ], [ %.1782., %365 ], [ %.1782., %347 ], [ %.1782, %316 ]
  %.0767 = phi ptr [ %323, %366 ], [ %323, %356 ], [ %323, %365 ], [ %323, %347 ], [ null, %316 ]
  %368 = getelementptr inbounds i8, ptr %290, i64 94
  %369 = load i16, ptr %368, align 2, !tbaa !75
  %370 = icmp ult i16 %284, %369
  br i1 %370, label %371, label %380

371:                                              ; preds = %367
  %372 = getelementptr inbounds i8, ptr %290, i64 56
  %373 = load ptr, ptr %372, align 8, !tbaa !80
  %374 = zext i16 %284 to i64
  %375 = getelementptr inbounds i8, ptr %373, i64 %374
  %376 = load i8, ptr %375, align 1, !tbaa !52
  %377 = trunc i64 %34 to i1
  %378 = icmp ne i8 %376, 0
  %379 = xor i1 %378, %377
  br i1 %379, label %382, label %380

380:                                              ; preds = %371, %367
  %.not842 = icmp ne i32 %36, 0
  %381 = icmp eq i16 %369, %284
  %or.cond909 = select i1 %.not842, i1 %381, i1 false
  br i1 %or.cond909, label %382, label %384

382:                                              ; preds = %380, %371
  %383 = and i16 %286, 255
  br label %384

384:                                              ; preds = %382, %380
  %.0789 = phi i8 [ %.1786, %382 ], [ 0, %380 ]
  %.2787 = phi i8 [ 0, %382 ], [ %.1786, %380 ]
  %.1768 = phi ptr [ %.0762, %382 ], [ %.0767, %380 ]
  %.1763 = phi ptr [ %.0767, %382 ], [ %.0762, %380 ]
  %.0761 = phi i16 [ %383, %382 ], [ %288, %380 ]
  %.0755 = phi i16 [ %288, %382 ], [ %286, %380 ]
  %385 = call i32 @codeAllEqualityTerms(ptr noundef nonnull %7, ptr noundef nonnull %14, i32 noundef %36, i32 noundef %.2783, ptr noundef nonnull %5)
  %386 = load ptr, ptr %5, align 8, !tbaa !45
  %387 = icmp ne ptr %386, null
  %388 = zext i16 %.0761 to i32
  %389 = icmp ne i16 %.0761, 0
  %or.cond6 = select i1 %387, i1 %389, i1 false
  br i1 %or.cond6, label %390, label %394

390:                                              ; preds = %384
  %391 = zext i16 %284 to i64
  %392 = getelementptr inbounds i8, ptr %386, i64 %391
  %393 = call ptr @sqlite3DbStrDup(ptr noundef %11, ptr noundef nonnull %392) #5
  br label %394

394:                                              ; preds = %390, %384
  %.0784 = phi ptr [ %393, %390 ], [ null, %384 ]
  %395 = load i32, ptr %48, align 8, !tbaa !31
  %.not910 = icmp eq ptr %.1763, null
  br i1 %.not910, label %401, label %396

396:                                              ; preds = %394
  %397 = getelementptr inbounds i8, ptr %.1763, i64 20
  %398 = load i16, ptr %397, align 4, !tbaa !46
  %399 = and i16 %398, 40
  %400 = icmp ne i16 %399, 0
  br label %401

401:                                              ; preds = %396, %394
  %402 = phi i1 [ true, %394 ], [ %400, %396 ]
  %.not843 = icmp eq ptr %.1768, null
  br i1 %.not843, label %408, label %403

403:                                              ; preds = %401
  %404 = getelementptr inbounds i8, ptr %.1768, i64 20
  %405 = load i16, ptr %404, align 4, !tbaa !46
  %406 = and i16 %405, 40
  %407 = icmp ne i16 %406, 0
  br label %408

408:                                              ; preds = %403, %401
  %409 = phi i1 [ true, %401 ], [ %407, %403 ]
  br i1 %.not910, label %429, label %410

410:                                              ; preds = %408
  %411 = load ptr, ptr %.1763, align 8, !tbaa !48
  %412 = getelementptr inbounds i8, ptr %411, i64 24
  %413 = load ptr, ptr %412, align 8, !tbaa !49
  %414 = add nsw i32 %385, %305
  %415 = zext i16 %.0755 to i32
  call void @codeExprOrVector(ptr noundef nonnull %7, ptr noundef %413, i32 noundef %414, i32 noundef %415)
  call void @whereLikeOptimizationStringFixup(ptr noundef %9, ptr noundef nonnull %14, ptr noundef nonnull %.1763)
  %416 = call i32 @sqlite3ExprCanBeNull(ptr noundef %413) #5
  %.not845 = icmp eq i32 %416, 0
  br i1 %.not845, label %419, label %417

417:                                              ; preds = %410
  %418 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 34, i32 noundef %414, i32 noundef %395) #5
  br label %419

419:                                              ; preds = %417, %410
  %420 = load ptr, ptr %5, align 8, !tbaa !45
  %.not846 = icmp eq ptr %420, null
  br i1 %.not846, label %424, label %421

421:                                              ; preds = %419
  %422 = zext i16 %284 to i64
  %423 = getelementptr inbounds i8, ptr %420, i64 %422
  call void @updateRangeAffinityStr(ptr noundef %413, i32 noundef %415, ptr noundef nonnull %423)
  br label %424

424:                                              ; preds = %421, %419
  %425 = add nuw nsw i32 %415, %305
  %426 = call i32 @sqlite3ExprIsVector(ptr noundef %413) #5
  %427 = icmp eq i32 %426, 0
  br i1 %427, label %428, label %435

428:                                              ; preds = %424
  call void @disableTerm(ptr noundef nonnull %14, ptr noundef nonnull %.1763)
  br label %435

429:                                              ; preds = %408
  %430 = icmp ne i16 %284, 0
  %.not844 = icmp eq i8 %.2787, 0
  br i1 %.not844, label %435, label %431

431:                                              ; preds = %429
  %432 = add nsw i32 %385, %305
  %433 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 80, i32 noundef 0, i32 noundef %432) #5
  %434 = add nuw nsw i32 %305, 1
  br label %435

435:                                              ; preds = %428, %424, %429, %431
  %.3788.neg = phi i32 [ -1, %431 ], [ 0, %429 ], [ 0, %424 ], [ 0, %428 ]
  %.0779 = phi i32 [ %434, %431 ], [ %305, %429 ], [ %425, %424 ], [ %425, %428 ]
  %.0778.shrunk = phi i1 [ true, %431 ], [ %430, %429 ], [ true, %424 ], [ true, %428 ]
  %.1770.shrunk = phi i1 [ false, %431 ], [ %402, %429 ], [ true, %424 ], [ %402, %428 ]
  %436 = add nsw i32 %.0779, %.3788.neg
  %437 = load ptr, ptr %5, align 8, !tbaa !45
  call void @codeApplyAffinity(ptr noundef nonnull %7, i32 noundef %385, i32 noundef %436, ptr noundef %437)
  %438 = getelementptr inbounds i8, ptr %16, i64 46
  %439 = load i16, ptr %438, align 2, !tbaa !88
  %.not847 = icmp ne i16 %439, 0
  %440 = zext i16 %439 to i32
  %441 = icmp eq i32 %.0779, %440
  %or.cond893 = and i1 %.not847, %441
  br i1 %or.cond893, label %452, label %442

442:                                              ; preds = %435
  %443 = select i1 %.0778.shrunk, i32 4, i32 0
  %444 = select i1 %.1770.shrunk, i32 2, i32 0
  %445 = or disjoint i32 %443, %444
  %446 = or disjoint i32 %445, %36
  %447 = zext nneg i32 %446 to i64
  %448 = getelementptr inbounds [8 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStartOp, i64 0, i64 %447
  %449 = load i8, ptr %448, align 1, !tbaa !52
  %450 = zext i8 %449 to i32
  %451 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef %450, i32 noundef %292, i32 noundef %395, i32 noundef %385, i32 noundef %.0779) #5
  br label %452

452:                                              ; preds = %435, %442
  br i1 %.not843, label %468, label %453

453:                                              ; preds = %452
  %454 = load ptr, ptr %.1768, align 8, !tbaa !48
  %455 = getelementptr inbounds i8, ptr %454, i64 24
  %456 = load ptr, ptr %455, align 8, !tbaa !49
  %457 = add nsw i32 %385, %305
  call void @sqlite3ExprCacheRemove(ptr noundef nonnull %7, i32 noundef %457, i32 noundef 1) #5
  call void @codeExprOrVector(ptr noundef nonnull %7, ptr noundef %456, i32 noundef %457, i32 noundef %388)
  call void @whereLikeOptimizationStringFixup(ptr noundef %9, ptr noundef nonnull %14, ptr noundef nonnull %.1768)
  %458 = call i32 @sqlite3ExprCanBeNull(ptr noundef %456) #5
  %.not849 = icmp eq i32 %458, 0
  br i1 %.not849, label %461, label %459

459:                                              ; preds = %453
  %460 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 34, i32 noundef %457, i32 noundef %395) #5
  br label %461

461:                                              ; preds = %459, %453
  %.not850 = icmp eq ptr %.0784, null
  br i1 %.not850, label %463, label %462

462:                                              ; preds = %461
  call void @updateRangeAffinityStr(ptr noundef %456, i32 noundef %388, ptr noundef nonnull %.0784)
  call void @codeApplyAffinity(ptr noundef nonnull %7, i32 noundef %457, i32 noundef %388, ptr noundef nonnull %.0784)
  br label %463

463:                                              ; preds = %461, %462
  %464 = add nuw nsw i32 %388, %305
  %465 = call i32 @sqlite3ExprIsVector(ptr noundef %456) #5
  %466 = icmp eq i32 %465, 0
  br i1 %466, label %467, label %473

467:                                              ; preds = %463
  call void @disableTerm(ptr noundef nonnull %14, ptr noundef nonnull %.1768)
  br label %473

468:                                              ; preds = %452
  %.not848 = icmp eq i8 %.0789, 0
  br i1 %.not848, label %473, label %469

469:                                              ; preds = %468
  %470 = add nsw i32 %385, %305
  %471 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 80, i32 noundef 0, i32 noundef %470) #5
  %472 = add nuw nsw i32 %305, 1
  br label %473

473:                                              ; preds = %467, %463, %468, %469
  %.1780 = phi i32 [ %472, %469 ], [ %305, %468 ], [ %464, %463 ], [ %464, %467 ]
  %.1777.shrunk = phi i1 [ false, %469 ], [ %409, %468 ], [ true, %463 ], [ %409, %467 ]
  %474 = load ptr, ptr %5, align 8, !tbaa !45
  call void @sqlite3DbFree(ptr noundef %11, ptr noundef %474) #5
  call void @sqlite3DbFree(ptr noundef %11, ptr noundef %.0784) #5
  %475 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  %476 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 %475, ptr %476, align 4, !tbaa !41
  %.not851 = icmp eq i32 %.1780, 0
  br i1 %.not851, label %485, label %477

477:                                              ; preds = %473
  %.1777 = zext i1 %.1777.shrunk to i32
  %478 = shl nuw nsw i32 %36, 1
  %479 = or disjoint i32 %478, %.1777
  %480 = zext nneg i32 %479 to i64
  %481 = getelementptr inbounds [4 x i8], ptr @sqlite3WhereCodeOneLoopStart.aEndOp, i64 0, i64 %480
  %482 = load i8, ptr %481, align 1, !tbaa !52
  %483 = zext i8 %482 to i32
  %484 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef %483, i32 noundef %292, i32 noundef %395, i32 noundef %385, i32 noundef %.1780) #5
  br label %485

485:                                              ; preds = %477, %473
  br i1 %46, label %533, label %486

486:                                              ; preds = %485
  %487 = getelementptr inbounds i8, ptr %290, i64 24
  %488 = load ptr, ptr %487, align 8, !tbaa !83
  %489 = getelementptr inbounds i8, ptr %488, i64 64
  %490 = load i32, ptr %489, align 8, !tbaa !89
  %491 = and i32 %490, 32
  %492 = icmp eq i32 %491, 0
  br i1 %492, label %493, label %510

493:                                              ; preds = %486
  %494 = load i16, ptr %293, align 8, !tbaa !30
  %495 = zext i16 %494 to i32
  %496 = and i32 %495, 1024
  %.not853 = icmp eq i32 %496, 0
  br i1 %.not853, label %497, label %503

497:                                              ; preds = %493
  %498 = and i32 %495, 4096
  %.not854 = icmp eq i32 %498, 0
  br i1 %.not854, label %509, label %499

499:                                              ; preds = %497
  %500 = getelementptr inbounds i8, ptr %0, i64 61
  %501 = load i8, ptr %500, align 1, !tbaa !54
  %502 = icmp eq i8 %501, 1
  br i1 %502, label %503, label %509

503:                                              ; preds = %499, %493
  %504 = getelementptr inbounds i8, ptr %7, i64 56
  %505 = load i32, ptr %504, align 8, !tbaa !35
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr %504, align 8, !tbaa !35
  %507 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 129, i32 noundef %292, i32 noundef %506) #5
  call void @sqlite3ExprCacheStore(ptr noundef nonnull %7, i32 noundef %25, i32 noundef -1, i32 noundef %506) #5
  %508 = call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef 33, i32 noundef %25, i32 noundef 0, i32 noundef %506) #5
  br label %533

509:                                              ; preds = %499, %497
  call void @codeDeferredSeek(ptr noundef nonnull %0, ptr noundef nonnull %290, i32 noundef %25, i32 noundef %292)
  br label %533

510:                                              ; preds = %486
  %.not852 = icmp eq i32 %25, %292
  br i1 %.not852, label %533, label %511

511:                                              ; preds = %510
  %512 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %488) #5
  %513 = getelementptr inbounds i8, ptr %512, i64 94
  %514 = load i16, ptr %513, align 2, !tbaa !75
  %515 = zext i16 %514 to i32
  %516 = call i32 @sqlite3GetTempRange(ptr noundef nonnull %7, i32 noundef %515) #5
  %517 = load i16, ptr %513, align 2, !tbaa !75
  %.not968 = icmp eq i16 %517, 0
  br i1 %.not968, label %._crit_edge929, label %.lr.ph928

.lr.ph928:                                        ; preds = %511
  %518 = getelementptr inbounds i8, ptr %512, i64 8
  br label %519

519:                                              ; preds = %.lr.ph928, %519
  %indvars.iv975 = phi i64 [ 0, %.lr.ph928 ], [ %indvars.iv.next976, %519 ]
  %520 = load ptr, ptr %518, align 8, !tbaa !81
  %521 = getelementptr inbounds i16, ptr %520, i64 %indvars.iv975
  %522 = load i16, ptr %521, align 2, !tbaa !82
  %523 = call signext i16 @sqlite3ColumnOfIndex(ptr noundef %290, i16 noundef signext %522) #5
  %524 = sext i16 %523 to i32
  %525 = trunc i64 %indvars.iv975 to i32
  %526 = add i32 %516, %525
  %527 = call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef 98, i32 noundef %292, i32 noundef %524, i32 noundef %526) #5
  %indvars.iv.next976 = add nuw nsw i64 %indvars.iv975, 1
  %528 = load i16, ptr %513, align 2, !tbaa !75
  %529 = zext i16 %528 to i64
  %530 = icmp ult i64 %indvars.iv.next976, %529
  br i1 %530, label %519, label %._crit_edge929.loopexit, !llvm.loop !90

._crit_edge929.loopexit:                          ; preds = %519
  %531 = zext i16 %528 to i32
  br label %._crit_edge929

._crit_edge929:                                   ; preds = %._crit_edge929.loopexit, %511
  %.lcssa.in = phi i32 [ 0, %511 ], [ %531, %._crit_edge929.loopexit ]
  %532 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef 30, i32 noundef %25, i32 noundef %50, i32 noundef %516, i32 noundef %.lcssa.in) #5
  br label %533

533:                                              ; preds = %509, %503, %._crit_edge929, %510, %485
  %534 = load i32, ptr %37, align 8, !tbaa !28
  %535 = and i32 %534, 4096
  %.not855 = icmp eq i32 %535, 0
  br i1 %.not855, label %538, label %536

536:                                              ; preds = %533
  %537 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 -94, ptr %537, align 1, !tbaa !42
  br label %542

538:                                              ; preds = %533
  %.not856 = icmp eq i32 %36, 0
  %539 = getelementptr inbounds i8, ptr %14, i64 45
  br i1 %.not856, label %541, label %540

540:                                              ; preds = %538
  store i8 6, ptr %539, align 1, !tbaa !42
  br label %542

541:                                              ; preds = %538
  store i8 7, ptr %539, align 1, !tbaa !42
  br label %542

542:                                              ; preds = %540, %541, %536
  %543 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %292, ptr %543, align 8, !tbaa !53
  %544 = lshr i32 %534, 16
  %545 = trunc i32 %544 to i8
  %546 = and i8 %545, 1
  %547 = getelementptr inbounds i8, ptr %14, i64 46
  store i8 %546, ptr %547, align 2, !tbaa !91
  %548 = and i32 %534, 15
  %549 = icmp eq i32 %548, 0
  br i1 %549, label %550, label %552

550:                                              ; preds = %542
  %551 = getelementptr inbounds i8, ptr %14, i64 47
  store i8 1, ptr %551, align 1, !tbaa !92
  br label %552

552:                                              ; preds = %542, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  br label %.critedge895

553:                                              ; preds = %280
  %554 = and i32 %86, 8192
  %.not820 = icmp eq i32 %554, 0
  br i1 %.not820, label %784, label %555

555:                                              ; preds = %553
  %556 = getelementptr inbounds i8, ptr %7, i64 52
  %557 = load i32, ptr %556, align 4, !tbaa !93
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %556, align 4, !tbaa !93
  %559 = getelementptr inbounds i8, ptr %7, i64 56
  %560 = load i32, ptr %559, align 8, !tbaa !35
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %559, align 8, !tbaa !35
  %562 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %9) #5
  %563 = getelementptr inbounds i8, ptr %23, i64 32
  %564 = load ptr, ptr %563, align 8, !tbaa !94
  %565 = getelementptr inbounds i8, ptr %16, i64 56
  %566 = load ptr, ptr %565, align 8, !tbaa !44
  %567 = load ptr, ptr %566, align 8, !tbaa !45
  %568 = getelementptr inbounds i8, ptr %567, i64 40
  %569 = load ptr, ptr %568, align 8, !tbaa !52
  %570 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 73, ptr %570, align 1, !tbaa !42
  %571 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %561, ptr %571, align 8, !tbaa !53
  %572 = getelementptr inbounds i8, ptr %0, i64 58
  %573 = load i8, ptr %572, align 2, !tbaa !95
  %574 = icmp ugt i8 %573, 1
  br i1 %574, label %575, label %601

575:                                              ; preds = %555
  %576 = zext i8 %573 to i32
  %577 = sub nsw i32 %576, %1
  %578 = add nsw i32 %577, -1
  %579 = sext i32 %578 to i64
  %580 = mul nsw i64 %579, 112
  %581 = add nsw i64 %580, 120
  %582 = tail call ptr @sqlite3DbMallocRaw(ptr noundef %11, i64 noundef %581) #5
  %.not823 = icmp eq ptr %582, null
  br i1 %.not823, label %.critedge897, label %583

583:                                              ; preds = %575
  %584 = and i32 %577, 255
  %585 = getelementptr inbounds i8, ptr %582, i64 4
  store i32 %584, ptr %585, align 4, !tbaa !96
  store i32 %584, ptr %582, align 8, !tbaa !98
  %586 = getelementptr inbounds i8, ptr %582, i64 8
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %586, ptr noundef nonnull align 8 dereferenceable(112) %23, i64 112, i1 false)
  %587 = load ptr, ptr %17, align 8, !tbaa !21
  %588 = getelementptr inbounds i8, ptr %587, i64 8
  %.not822.not931 = icmp sgt i32 %577, 1
  br i1 %.not822.not931, label %.lr.ph934.preheader, label %.loopexit911

.lr.ph934.preheader:                              ; preds = %583
  %wide.trip.count981 = zext nneg i32 %577 to i64
  %589 = add nsw i64 %wide.trip.count981, -1
  %xtraiter = and i64 %589, 1
  %590 = icmp eq i32 %577, 2
  br i1 %590, label %.loopexit911.loopexit.unr-lcssa, label %.lr.ph934.preheader.new

.lr.ph934.preheader.new:                          ; preds = %.lr.ph934.preheader
  %unroll_iter = and i64 %589, -2
  br label %.lr.ph934

.lr.ph934:                                        ; preds = %.lr.ph934, %.lr.ph934.preheader.new
  %indvars.iv978 = phi i64 [ 1, %.lr.ph934.preheader.new ], [ %indvars.iv.next979.1, %.lr.ph934 ]
  %niter = phi i64 [ 0, %.lr.ph934.preheader.new ], [ %niter.next.1, %.lr.ph934 ]
  %591 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %586, i64 0, i64 %indvars.iv978
  %592 = getelementptr inbounds %struct.WhereLevel, ptr %14, i64 %indvars.iv978, i32 11
  %593 = load i8, ptr %592, align 4, !tbaa !22
  %594 = zext i8 %593 to i64
  %595 = getelementptr inbounds %struct.SrcList_item, ptr %588, i64 %594
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %591, ptr noundef nonnull align 8 dereferenceable(112) %595, i64 112, i1 false)
  %indvars.iv.next979 = add nuw nsw i64 %indvars.iv978, 1
  %596 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %586, i64 0, i64 %indvars.iv.next979
  %597 = getelementptr inbounds %struct.WhereLevel, ptr %14, i64 %indvars.iv.next979, i32 11
  %598 = load i8, ptr %597, align 4, !tbaa !22
  %599 = zext i8 %598 to i64
  %600 = getelementptr inbounds %struct.SrcList_item, ptr %588, i64 %599
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %596, ptr noundef nonnull align 8 dereferenceable(112) %600, i64 112, i1 false)
  %indvars.iv.next979.1 = add nuw nsw i64 %indvars.iv978, 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 %.loopexit911.loopexit.unr-lcssa, label %.lr.ph934, !llvm.loop !99

601:                                              ; preds = %555
  %602 = load ptr, ptr %17, align 8, !tbaa !21
  br label %.loopexit911

.loopexit911.loopexit.unr-lcssa:                  ; preds = %.lr.ph934, %.lr.ph934.preheader
  %indvars.iv978.unr = phi i64 [ 1, %.lr.ph934.preheader ], [ %indvars.iv.next979.1, %.lr.ph934 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit911, label %.lr.ph934.epil

.lr.ph934.epil:                                   ; preds = %.loopexit911.loopexit.unr-lcssa
  %603 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %586, i64 0, i64 %indvars.iv978.unr
  %604 = getelementptr inbounds %struct.WhereLevel, ptr %14, i64 %indvars.iv978.unr, i32 11
  %605 = load i8, ptr %604, align 4, !tbaa !22
  %606 = zext i8 %605 to i64
  %607 = getelementptr inbounds %struct.SrcList_item, ptr %588, i64 %606
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %603, ptr noundef nonnull align 8 dereferenceable(112) %607, i64 112, i1 false)
  br label %.loopexit911

.loopexit911:                                     ; preds = %.lr.ph934.epil, %.loopexit911.loopexit.unr-lcssa, %583, %601
  %.0775 = phi ptr [ %602, %601 ], [ %582, %583 ], [ %582, %.loopexit911.loopexit.unr-lcssa ], [ %582, %.lr.ph934.epil ]
  %608 = getelementptr inbounds i8, ptr %0, i64 56
  %609 = load i16, ptr %608, align 8, !tbaa !30
  %610 = and i16 %609, 16
  %611 = icmp eq i16 %610, 0
  br i1 %611, label %612, label %632

612:                                              ; preds = %.loopexit911
  %613 = getelementptr inbounds i8, ptr %564, i64 64
  %614 = load i32, ptr %613, align 8, !tbaa !89
  %615 = and i32 %614, 32
  %616 = icmp eq i32 %615, 0
  br i1 %616, label %617, label %621

617:                                              ; preds = %612
  %618 = load i32, ptr %559, align 8, !tbaa !35
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %559, align 8, !tbaa !35
  %620 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 80, i32 noundef 0, i32 noundef %619) #5
  br label %629

621:                                              ; preds = %612
  %622 = tail call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %564) #5
  %623 = load i32, ptr %556, align 4, !tbaa !93
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %556, align 4, !tbaa !93
  %625 = getelementptr inbounds i8, ptr %622, i64 94
  %626 = load i16, ptr %625, align 2, !tbaa !75
  %627 = zext i16 %626 to i32
  %628 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 108, i32 noundef %623, i32 noundef %627) #5
  tail call void @sqlite3VdbeSetP4KeyInfo(ptr noundef nonnull %7, ptr noundef %622) #5
  br label %629

629:                                              ; preds = %621, %617
  %.0765 = phi i32 [ %619, %617 ], [ %623, %621 ]
  %630 = load i32, ptr %559, align 8, !tbaa !35
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %559, align 8, !tbaa !35
  br label %632

632:                                              ; preds = %629, %.loopexit911
  %.1766 = phi i32 [ %.0765, %629 ], [ 0, %.loopexit911 ]
  %.0764 = phi i32 [ %631, %629 ], [ 0, %.loopexit911 ]
  %633 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef 0, i32 noundef %561) #5
  %634 = getelementptr inbounds i8, ptr %0, i64 116
  %635 = load i32, ptr %634, align 4, !tbaa !100
  %636 = icmp sgt i32 %635, 1
  br i1 %636, label %.lr.ph937, label %666

.lr.ph937:                                        ; preds = %632
  %637 = getelementptr inbounds i8, ptr %0, i64 128
  br label %638

638:                                              ; preds = %.lr.ph937, %660
  %639 = phi i32 [ %635, %.lr.ph937 ], [ %661, %660 ]
  %indvars.iv983 = phi i64 [ 0, %.lr.ph937 ], [ %indvars.iv.next984, %660 ]
  %.0751935 = phi ptr [ null, %.lr.ph937 ], [ %.1752, %660 ]
  %640 = load ptr, ptr %637, align 8, !tbaa !101
  %641 = getelementptr inbounds %struct.WhereTerm, ptr %640, i64 %indvars.iv983
  %642 = load ptr, ptr %641, align 8, !tbaa !48
  %643 = icmp eq ptr %641, %567
  br i1 %643, label %660, label %644

644:                                              ; preds = %638
  %645 = getelementptr inbounds i8, ptr %642, i64 4
  %646 = load i32, ptr %645, align 4, !tbaa !102
  %647 = and i32 %646, 1
  %.not836 = icmp eq i32 %647, 0
  br i1 %.not836, label %648, label %660

648:                                              ; preds = %644
  %649 = getelementptr inbounds i8, ptr %641, i64 18
  %650 = load i16, ptr %649, align 2, !tbaa !77
  %651 = and i16 %650, 6
  %.not837 = icmp eq i16 %651, 0
  br i1 %.not837, label %652, label %660

652:                                              ; preds = %648
  %653 = getelementptr inbounds i8, ptr %641, i64 20
  %654 = load i16, ptr %653, align 4, !tbaa !46
  %655 = and i16 %654, 8191
  %656 = icmp eq i16 %655, 0
  br i1 %656, label %660, label %657

657:                                              ; preds = %652
  %658 = tail call ptr @sqlite3ExprDup(ptr noundef %11, ptr noundef nonnull %642, i32 noundef 0) #5
  %659 = tail call ptr @sqlite3ExprAnd(ptr noundef %11, ptr noundef %.0751935, ptr noundef %658) #5
  %.pre994 = load i32, ptr %634, align 4, !tbaa !100
  br label %660

660:                                              ; preds = %652, %648, %644, %638, %657
  %661 = phi i32 [ %.pre994, %657 ], [ %639, %638 ], [ %639, %644 ], [ %639, %648 ], [ %639, %652 ]
  %.1752 = phi ptr [ %659, %657 ], [ %.0751935, %638 ], [ %.0751935, %644 ], [ %.0751935, %648 ], [ %.0751935, %652 ]
  %indvars.iv.next984 = add nuw nsw i64 %indvars.iv983, 1
  %662 = sext i32 %661 to i64
  %663 = icmp slt i64 %indvars.iv.next984, %662
  br i1 %663, label %638, label %._crit_edge938, !llvm.loop !103

._crit_edge938:                                   ; preds = %660
  %.not824 = icmp eq ptr %.1752, null
  br i1 %.not824, label %666, label %664

664:                                              ; preds = %._crit_edge938
  %665 = tail call ptr @sqlite3PExpr(ptr noundef nonnull %7, i32 noundef 284, ptr noundef null, ptr noundef nonnull %.1752) #5
  br label %666

666:                                              ; preds = %._crit_edge938, %664, %632
  %.3754 = phi ptr [ null, %632 ], [ %665, %664 ], [ null, %._crit_edge938 ]
  %667 = load i16, ptr %608, align 8, !tbaa !30
  %668 = and i16 %667, 1024
  %669 = or disjoint i16 %668, 32
  %670 = getelementptr inbounds i8, ptr %569, i64 20
  %671 = load i32, ptr %670, align 4, !tbaa !100
  %672 = icmp sgt i32 %671, 0
  br i1 %672, label %.lr.ph949, label %._crit_edge950.thread

._crit_edge950.thread:                            ; preds = %666
  %673 = getelementptr inbounds i8, ptr %14, i64 56
  store ptr null, ptr %673, align 8, !tbaa !52
  br label %772

.lr.ph949:                                        ; preds = %666
  %674 = getelementptr inbounds i8, ptr %569, i64 32
  %.not829 = icmp eq ptr %.3754, null
  %675 = getelementptr inbounds i8, ptr %.3754, i64 16
  %676 = getelementptr inbounds i8, ptr %564, i64 64
  br label %677

677:                                              ; preds = %.lr.ph949, %765
  %indvars.iv991 = phi i64 [ 0, %.lr.ph949 ], [ %indvars.iv.next992, %765 ]
  %.0757945 = phi i32 [ 0, %.lr.ph949 ], [ %.3760, %765 ]
  %.0771944 = phi ptr [ null, %.lr.ph949 ], [ %.3774, %765 ]
  %678 = load ptr, ptr %674, align 8, !tbaa !101
  %679 = getelementptr inbounds %struct.WhereTerm, ptr %678, i64 %indvars.iv991
  %680 = getelementptr inbounds i8, ptr %679, i64 28
  %681 = load i32, ptr %680, align 4, !tbaa !104
  %682 = icmp eq i32 %681, %25
  br i1 %682, label %687, label %683

683:                                              ; preds = %677
  %684 = getelementptr inbounds i8, ptr %679, i64 20
  %685 = load i16, ptr %684, align 4, !tbaa !46
  %686 = and i16 %685, 1024
  %.not828 = icmp eq i16 %686, 0
  br i1 %.not828, label %765, label %687

687:                                              ; preds = %683, %677
  %688 = load ptr, ptr %679, align 8, !tbaa !48
  br i1 %.not829, label %694, label %689

689:                                              ; preds = %687
  %690 = getelementptr inbounds i8, ptr %688, i64 4
  %691 = load i32, ptr %690, align 4, !tbaa !102
  %692 = and i32 %691, 1
  %.not830 = icmp eq i32 %692, 0
  br i1 %.not830, label %693, label %694

693:                                              ; preds = %689
  store ptr %688, ptr %675, align 8, !tbaa !68
  br label %694

694:                                              ; preds = %693, %689, %687
  %.0740 = phi ptr [ %688, %689 ], [ %.3754, %693 ], [ %688, %687 ]
  %695 = tail call ptr @sqlite3WhereBegin(ptr noundef nonnull %7, ptr noundef %.0775, ptr noundef %.0740, ptr noundef null, ptr noundef null, i16 noundef zeroext %669, i32 noundef %557) #5
  %.not831 = icmp eq ptr %695, null
  br i1 %.not831, label %765, label %696

696:                                              ; preds = %694
  %697 = getelementptr inbounds i8, ptr %695, i64 912
  %698 = load i8, ptr %20, align 4, !tbaa !22
  %699 = zext i8 %698 to i32
  %700 = tail call i32 @sqlite3WhereExplainOneScan(ptr noundef nonnull %7, ptr noundef %.0775, ptr noundef nonnull %697, i32 noundef %1, i32 noundef %699, i16 noundef zeroext 0)
  %701 = load i16, ptr %608, align 8, !tbaa !30
  %702 = and i16 %701, 16
  %703 = icmp eq i16 %702, 0
  br i1 %703, label %705, label %.thread903

.thread903:                                       ; preds = %696
  %704 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 14, i32 noundef %561, i32 noundef %562) #5
  br label %742

705:                                              ; preds = %696
  %706 = load i32, ptr %670, align 4, !tbaa !100
  %707 = add nsw i32 %706, -1
  %708 = zext i32 %707 to i64
  %709 = icmp eq i64 %indvars.iv991, %708
  %710 = trunc nuw nsw i64 %indvars.iv991 to i32
  %711 = select i1 %709, i32 -1, i32 %710
  %712 = load i32, ptr %676, align 8, !tbaa !89
  %713 = and i32 %712, 32
  %714 = icmp eq i32 %713, 0
  br i1 %714, label %715, label %718

715:                                              ; preds = %705
  %716 = tail call i32 @sqlite3ExprCodeGetColumn(ptr noundef nonnull %7, ptr noundef nonnull %564, i32 noundef -1, i32 noundef %25, i32 noundef %.0764, i8 noundef zeroext 0) #5
  %717 = tail call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef 64, i32 noundef %.1766, i32 noundef 0, i32 noundef %716, i32 noundef %711) #5
  br label %739

718:                                              ; preds = %705
  %719 = tail call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %564) #5
  %720 = getelementptr inbounds i8, ptr %719, i64 94
  %721 = load i16, ptr %720, align 2, !tbaa !75
  %722 = zext i16 %721 to i32
  %723 = tail call i32 @sqlite3GetTempRange(ptr noundef nonnull %7, i32 noundef %722) #5
  %.not969 = icmp eq i16 %721, 0
  br i1 %.not969, label %._crit_edge943, label %.lr.ph942

.lr.ph942:                                        ; preds = %718
  %724 = getelementptr inbounds i8, ptr %719, i64 8
  %wide.trip.count989 = zext i16 %721 to i64
  br label %725

725:                                              ; preds = %.lr.ph942, %725
  %indvars.iv986 = phi i64 [ 0, %.lr.ph942 ], [ %indvars.iv.next987, %725 ]
  %726 = load ptr, ptr %724, align 8, !tbaa !81
  %727 = getelementptr inbounds i16, ptr %726, i64 %indvars.iv986
  %728 = load i16, ptr %727, align 2, !tbaa !82
  %729 = sext i16 %728 to i32
  %730 = trunc i64 %indvars.iv986 to i32
  %731 = add i32 %723, %730
  tail call void @sqlite3ExprCodeGetColumnToReg(ptr noundef nonnull %7, ptr noundef %564, i32 noundef %729, i32 noundef %25, i32 noundef %731) #5
  %indvars.iv.next987 = add nuw nsw i64 %indvars.iv986, 1
  %exitcond990.not = icmp eq i64 %indvars.iv.next987, %wide.trip.count989
  br i1 %exitcond990.not, label %._crit_edge943, label %725, !llvm.loop !105

._crit_edge943:                                   ; preds = %725, %718
  %.not832 = icmp eq i32 %711, 0
  br i1 %.not832, label %.thread, label %732

732:                                              ; preds = %._crit_edge943
  %733 = tail call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef 31, i32 noundef %.1766, i32 noundef 0, i32 noundef %723, i32 noundef %722) #5
  %734 = icmp sgt i32 %711, -1
  br i1 %734, label %.thread, label %738

.thread:                                          ; preds = %._crit_edge943, %732
  %.0737902 = phi i32 [ %733, %732 ], [ 0, %._crit_edge943 ]
  %735 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %9, i32 noundef 100, i32 noundef %723, i32 noundef %722, i32 noundef %.0764) #5
  %736 = tail call i32 @sqlite3VdbeAddOp4Int(ptr noundef %9, i32 noundef 126, i32 noundef %.1766, i32 noundef %.0764, i32 noundef %723, i32 noundef %722) #5
  br i1 %.not832, label %738, label %737

737:                                              ; preds = %.thread
  tail call void @sqlite3VdbeChangeP5(ptr noundef %9, i16 noundef zeroext 16) #5
  br label %738

738:                                              ; preds = %.thread, %737, %732
  %.0737901 = phi i32 [ %.0737902, %.thread ], [ %.0737902, %737 ], [ %733, %732 ]
  tail call void @sqlite3ReleaseTempRange(ptr noundef nonnull %7, i32 noundef %723, i32 noundef %722) #5
  br label %739

739:                                              ; preds = %715, %738
  %.2739 = phi i32 [ %717, %715 ], [ %.0737901, %738 ]
  %740 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 14, i32 noundef %561, i32 noundef %562) #5
  %.not833 = icmp eq i32 %.2739, 0
  br i1 %.not833, label %742, label %741

741:                                              ; preds = %739
  tail call void @sqlite3VdbeJumpHere(ptr noundef %9, i32 noundef %.2739) #5
  br label %742

742:                                              ; preds = %.thread903, %741, %739
  %743 = getelementptr inbounds i8, ptr %695, i64 62
  %744 = load i8, ptr %743, align 2, !tbaa !106
  %.not834 = icmp eq i8 %744, 0
  %spec.select896 = select i1 %.not834, i32 %.0757945, i32 1
  %745 = getelementptr inbounds i8, ptr %695, i64 984
  %746 = load ptr, ptr %745, align 8, !tbaa !19
  %747 = getelementptr inbounds i8, ptr %746, i64 40
  %748 = load i32, ptr %747, align 8, !tbaa !28
  %749 = and i32 %748, 512
  %.not835 = icmp eq i32 %749, 0
  br i1 %.not835, label %._crit_edge995, label %750

750:                                              ; preds = %742
  %751 = icmp eq i64 %indvars.iv991, 0
  br i1 %751, label %756, label %752

752:                                              ; preds = %750
  %753 = getelementptr inbounds i8, ptr %746, i64 32
  %754 = load ptr, ptr %753, align 8, !tbaa !52
  %755 = icmp eq ptr %754, %.0771944
  br i1 %755, label %756, label %._crit_edge995

756:                                              ; preds = %752, %750
  %757 = load i32, ptr %676, align 8, !tbaa !89
  %758 = and i32 %757, 32
  %759 = icmp eq i32 %758, 0
  %.phi.trans.insert = getelementptr inbounds i8, ptr %746, i64 32
  %.pre996 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !52
  br i1 %759, label %._crit_edge995, label %760

760:                                              ; preds = %756
  %761 = getelementptr inbounds i8, ptr %.pre996, i64 99
  %762 = load i8, ptr %761, align 1
  %763 = and i8 %762, 3
  %764 = icmp eq i8 %763, 2
  %spec.select1004 = select i1 %764, ptr null, ptr %.pre996
  br label %._crit_edge995

._crit_edge995:                                   ; preds = %760, %756, %742, %752
  %.1772 = phi ptr [ null, %752 ], [ null, %742 ], [ %.pre996, %756 ], [ %spec.select1004, %760 ]
  tail call void @sqlite3WhereEnd(ptr noundef nonnull %695) #5
  br label %765

765:                                              ; preds = %694, %._crit_edge995, %683
  %.3774 = phi ptr [ %.0771944, %683 ], [ %.1772, %._crit_edge995 ], [ %.0771944, %694 ]
  %.3760 = phi i32 [ %.0757945, %683 ], [ %spec.select896, %._crit_edge995 ], [ %.0757945, %694 ]
  %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1
  %766 = load i32, ptr %670, align 4, !tbaa !100
  %767 = sext i32 %766 to i64
  %768 = icmp slt i64 %indvars.iv.next992, %767
  br i1 %768, label %677, label %._crit_edge950, !llvm.loop !107

._crit_edge950:                                   ; preds = %765
  %769 = getelementptr inbounds i8, ptr %14, i64 56
  store ptr %.3774, ptr %769, align 8, !tbaa !52
  %.not825 = icmp eq ptr %.3774, null
  br i1 %.not825, label %772, label %770

770:                                              ; preds = %._crit_edge950
  %771 = getelementptr inbounds i8, ptr %14, i64 8
  store i32 %557, ptr %771, align 8, !tbaa !73
  br label %772

772:                                              ; preds = %._crit_edge950.thread, %770, %._crit_edge950
  %.0757.lcssa1002 = phi i32 [ 0, %._crit_edge950.thread ], [ %.3760, %770 ], [ %.3760, %._crit_edge950 ]
  %.not826 = icmp eq ptr %.3754, null
  br i1 %.not826, label %775, label %773

773:                                              ; preds = %772
  %774 = getelementptr inbounds i8, ptr %.3754, i64 16
  store ptr null, ptr %774, align 8, !tbaa !68
  tail call void @sqlite3ExprDelete(ptr noundef %11, ptr noundef nonnull %.3754) #5
  br label %775

775:                                              ; preds = %773, %772
  %776 = tail call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  tail call void @sqlite3VdbeChangeP1(ptr noundef %9, i32 noundef %633, i32 noundef %776) #5
  %777 = load i32, ptr %49, align 4, !tbaa !32
  %778 = tail call i32 @sqlite3VdbeGoto(ptr noundef %9, i32 noundef %777) #5
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %9, i32 noundef %562) #5
  %779 = load i8, ptr %572, align 2, !tbaa !95
  %780 = icmp ugt i8 %779, 1
  br i1 %780, label %781, label %782

781:                                              ; preds = %775
  tail call void @sqlite3DbFree(ptr noundef %11, ptr noundef %.0775) #5
  br label %782

782:                                              ; preds = %781, %775
  %.not827 = icmp eq i32 %.0757.lcssa1002, 0
  br i1 %.not827, label %783, label %.critedge895

783:                                              ; preds = %782
  tail call void @disableTerm(ptr noundef nonnull %14, ptr noundef %567)
  br label %.critedge895

784:                                              ; preds = %553
  %785 = and i8 %74, 32
  %.not821 = icmp eq i8 %785, 0
  br i1 %.not821, label %788, label %786

786:                                              ; preds = %784
  %787 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 -94, ptr %787, align 1, !tbaa !42
  br label %.critedge895

788:                                              ; preds = %784
  %789 = and i64 %34, 1
  %790 = getelementptr inbounds [2 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStep, i64 0, i64 %789
  %791 = load i8, ptr %790, align 1, !tbaa !52
  %792 = getelementptr inbounds i8, ptr %14, i64 45
  store i8 %791, ptr %792, align 1, !tbaa !42
  %793 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %25, ptr %793, align 8, !tbaa !53
  %794 = getelementptr inbounds [2 x i8], ptr @sqlite3WhereCodeOneLoopStart.aStart, i64 0, i64 %789
  %795 = load i8, ptr %794, align 1, !tbaa !52
  %796 = zext i8 %795 to i32
  %797 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef %796, i32 noundef %25, i32 noundef %72) #5
  %798 = add nsw i32 %797, 1
  %799 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 %798, ptr %799, align 4, !tbaa !41
  %800 = getelementptr inbounds i8, ptr %14, i64 47
  store i8 1, ptr %800, align 1, !tbaa !92
  br label %.critedge895

.critedge895:                                     ; preds = %783, %782, %267, %274, %._crit_edge925, %788, %786, %552, %205, %76
  %801 = getelementptr inbounds i8, ptr %0, i64 128
  %802 = getelementptr inbounds i8, ptr %0, i64 116
  %803 = load i32, ptr %802, align 4, !tbaa !100
  %804 = icmp sgt i32 %803, 0
  br i1 %804, label %.lr.ph955, label %._crit_edge961

.lr.ph955:                                        ; preds = %.critedge895
  %805 = load ptr, ptr %801, align 8, !tbaa !101
  %806 = getelementptr inbounds i8, ptr %0, i64 62
  %807 = getelementptr inbounds i8, ptr %14, i64 36
  br label %808

808:                                              ; preds = %.lr.ph955, %837
  %.6954 = phi i32 [ %803, %.lr.ph955 ], [ %838, %837 ]
  %.0725953 = phi ptr [ %805, %.lr.ph955 ], [ %839, %837 ]
  %809 = getelementptr inbounds i8, ptr %.0725953, i64 18
  %810 = load i16, ptr %809, align 2, !tbaa !77
  %811 = and i16 %810, 6
  %.not881 = icmp eq i16 %811, 0
  br i1 %.not881, label %812, label %837

812:                                              ; preds = %808
  %813 = getelementptr inbounds i8, ptr %.0725953, i64 56
  %814 = load i64, ptr %813, align 8, !tbaa !108
  %815 = load i64, ptr %30, align 8, !tbaa !26
  %816 = and i64 %815, %814
  %.not882 = icmp eq i64 %816, 0
  br i1 %.not882, label %818, label %817

817:                                              ; preds = %812
  store i8 1, ptr %806, align 2, !tbaa !106
  br label %837

818:                                              ; preds = %812
  %819 = load ptr, ptr %.0725953, align 8, !tbaa !48
  %820 = load i32, ptr %14, align 8, !tbaa !36
  %.not883 = icmp eq i32 %820, 0
  br i1 %.not883, label %825, label %821

821:                                              ; preds = %818
  %822 = getelementptr inbounds i8, ptr %819, i64 4
  %823 = load i32, ptr %822, align 4, !tbaa !102
  %824 = and i32 %823, 1
  %.not884 = icmp eq i32 %824, 0
  br i1 %.not884, label %837, label %825

825:                                              ; preds = %821, %818
  %826 = and i16 %810, 512
  %.not885 = icmp eq i16 %826, 0
  br i1 %.not885, label %.thread906, label %827

.thread906:                                       ; preds = %825
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %7, ptr noundef %819, i32 noundef %50, i32 noundef 16) #5
  br label %834

827:                                              ; preds = %825
  %828 = load i32, ptr %807, align 4, !tbaa !78
  %829 = and i32 %828, 1
  %.not886 = icmp eq i32 %829, 0
  %830 = select i1 %.not886, i32 21, i32 22
  %831 = lshr i32 %828, 1
  %832 = call i32 @sqlite3VdbeAddOp1(ptr noundef %9, i32 noundef %830, i32 noundef %831) #5
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %7, ptr noundef %819, i32 noundef %50, i32 noundef 16) #5
  %.not887 = icmp eq i32 %832, 0
  br i1 %.not887, label %834, label %833

833:                                              ; preds = %827
  call void @sqlite3VdbeJumpHere(ptr noundef %9, i32 noundef %832) #5
  br label %834

834:                                              ; preds = %.thread906, %833, %827
  %835 = load i16, ptr %809, align 2, !tbaa !77
  %836 = or i16 %835, 4
  store i16 %836, ptr %809, align 2, !tbaa !77
  br label %837

837:                                              ; preds = %821, %808, %834, %817
  %838 = add nsw i32 %.6954, -1
  %839 = getelementptr inbounds i8, ptr %.0725953, i64 64
  %840 = icmp sgt i32 %.6954, 1
  br i1 %840, label %808, label %._crit_edge956, !llvm.loop !109

._crit_edge956:                                   ; preds = %837
  %.pre997 = load i32, ptr %802, align 4, !tbaa !100
  %841 = icmp sgt i32 %.pre997, 0
  br i1 %841, label %.lr.ph960, label %._crit_edge961

.lr.ph960:                                        ; preds = %._crit_edge956
  %842 = load ptr, ptr %801, align 8, !tbaa !101
  %843 = getelementptr inbounds i8, ptr %6, i64 16
  br label %844

844:                                              ; preds = %.lr.ph960, %875
  %.7958 = phi i32 [ %.pre997, %.lr.ph960 ], [ %876, %875 ]
  %.1726957 = phi ptr [ %842, %.lr.ph960 ], [ %877, %875 ]
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6) #5
  %845 = getelementptr inbounds i8, ptr %.1726957, i64 18
  %846 = load i16, ptr %845, align 2, !tbaa !77
  %847 = and i16 %846, 6
  %.not877 = icmp eq i16 %847, 0
  br i1 %.not877, label %848, label %875

848:                                              ; preds = %844
  %849 = getelementptr inbounds i8, ptr %.1726957, i64 20
  %850 = load i16, ptr %849, align 4, !tbaa !46
  %851 = zext i16 %850 to i32
  %852 = and i32 %851, 130
  %853 = icmp eq i32 %852, 0
  %854 = and i32 %851, 2048
  %855 = icmp eq i32 %854, 0
  %or.cond899 = or i1 %853, %855
  br i1 %or.cond899, label %875, label %856

856:                                              ; preds = %848
  %857 = getelementptr inbounds i8, ptr %.1726957, i64 28
  %858 = load i32, ptr %857, align 4, !tbaa !104
  %.not878 = icmp eq i32 %858, %25
  br i1 %.not878, label %859, label %875

859:                                              ; preds = %856
  %860 = load i32, ptr %14, align 8, !tbaa !36
  %.not879 = icmp eq i32 %860, 0
  br i1 %.not879, label %861, label %875

861:                                              ; preds = %859
  %862 = load ptr, ptr %.1726957, align 8, !tbaa !48
  %863 = getelementptr inbounds i8, ptr %.1726957, i64 40
  %864 = load i32, ptr %863, align 8, !tbaa !52
  %865 = call ptr @sqlite3WhereFindTerm(ptr noundef nonnull %10, i32 noundef %25, i32 noundef %864, i64 noundef %2, i32 noundef 131, ptr noundef null) #5
  %866 = icmp eq ptr %865, null
  br i1 %866, label %875, label %867

867:                                              ; preds = %861
  %868 = getelementptr inbounds i8, ptr %865, i64 18
  %869 = load i16, ptr %868, align 2, !tbaa !77
  %870 = and i16 %869, 4
  %.not880 = icmp eq i16 %870, 0
  br i1 %.not880, label %871, label %875

871:                                              ; preds = %867
  %872 = load ptr, ptr %865, align 8, !tbaa !48
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %872, i64 72, i1 false), !tbaa.struct !110
  %873 = getelementptr inbounds i8, ptr %862, i64 16
  %874 = load ptr, ptr %873, align 8, !tbaa !68
  store ptr %874, ptr %843, align 8, !tbaa !68
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %7, ptr noundef nonnull %6, i32 noundef %50, i32 noundef 16) #5
  br label %875

875:                                              ; preds = %867, %861, %859, %856, %848, %844, %871
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #5
  %876 = add nsw i32 %.7958, -1
  %877 = getelementptr inbounds i8, ptr %.1726957, i64 64
  %878 = icmp sgt i32 %.7958, 1
  br i1 %878, label %844, label %._crit_edge961, !llvm.loop !111

._crit_edge961:                                   ; preds = %875, %.critedge895, %._crit_edge956
  %879 = load i32, ptr %14, align 8, !tbaa !36
  %.not874 = icmp eq i32 %879, 0
  br i1 %.not874, label %.loopexit, label %880

880:                                              ; preds = %._crit_edge961
  %881 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %9) #5
  %882 = getelementptr inbounds i8, ptr %14, i64 28
  store i32 %881, ptr %882, align 4, !tbaa !112
  %883 = load i32, ptr %14, align 8, !tbaa !36
  %884 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 77, i32 noundef 1, i32 noundef %883) #5
  call void @sqlite3ExprCacheClear(ptr noundef nonnull %7) #5
  %885 = load i32, ptr %802, align 4, !tbaa !100
  %886 = icmp sgt i32 %885, 0
  br i1 %886, label %.lr.ph965.preheader, label %.loopexit

.lr.ph965.preheader:                              ; preds = %880
  %887 = load ptr, ptr %801, align 8, !tbaa !101
  br label %.lr.ph965

.lr.ph965:                                        ; preds = %.lr.ph965.preheader, %901
  %888 = phi i32 [ %902, %901 ], [ %885, %.lr.ph965.preheader ]
  %.8963 = phi i32 [ %903, %901 ], [ 0, %.lr.ph965.preheader ]
  %.2727962 = phi ptr [ %904, %901 ], [ %887, %.lr.ph965.preheader ]
  %889 = getelementptr inbounds i8, ptr %.2727962, i64 18
  %890 = load i16, ptr %889, align 2, !tbaa !77
  %891 = and i16 %890, 6
  %.not875 = icmp eq i16 %891, 0
  br i1 %.not875, label %892, label %901

892:                                              ; preds = %.lr.ph965
  %893 = getelementptr inbounds i8, ptr %.2727962, i64 56
  %894 = load i64, ptr %893, align 8, !tbaa !108
  %895 = load i64, ptr %30, align 8, !tbaa !26
  %896 = and i64 %895, %894
  %.not876 = icmp eq i64 %896, 0
  br i1 %.not876, label %897, label %901

897:                                              ; preds = %892
  %898 = load ptr, ptr %.2727962, align 8, !tbaa !48
  call void @sqlite3ExprIfFalse(ptr noundef nonnull %7, ptr noundef %898, i32 noundef %50, i32 noundef 16) #5
  %899 = load i16, ptr %889, align 2, !tbaa !77
  %900 = or i16 %899, 4
  store i16 %900, ptr %889, align 2, !tbaa !77
  %.pre998 = load i32, ptr %802, align 4, !tbaa !100
  br label %901

901:                                              ; preds = %892, %.lr.ph965, %897
  %902 = phi i32 [ %888, %892 ], [ %888, %.lr.ph965 ], [ %.pre998, %897 ]
  %903 = add nuw nsw i32 %.8963, 1
  %904 = getelementptr inbounds i8, ptr %.2727962, i64 64
  %905 = icmp slt i32 %903, %902
  br i1 %905, label %.lr.ph965, label %.loopexit, !llvm.loop !113

.loopexit:                                        ; preds = %901, %880, %._crit_edge961
  %906 = load i64, ptr %30, align 8, !tbaa !26
  br label %.critedge897

.critedge897:                                     ; preds = %575, %.loopexit
  %.3 = phi i64 [ %906, %.loopexit ], [ %2, %575 ]
  ret i64 %.3
}

declare i64 @sqlite3WhereGetMask(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) local_unnamed_addr #2

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

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

declare void @sqlite3ExprCachePush(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare void @sqlite3ExprCachePop(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @sqlite3ExprIsVector(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3GetTempReg(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @sqlite3ExprCanBeNull(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare ptr @sqlite3PrimaryKeyIndex(ptr noundef) local_unnamed_addr #2

declare signext i16 @sqlite3ColumnOfIndex(ptr noundef, i16 noundef signext) local_unnamed_addr #2

declare ptr @sqlite3DbMallocRaw(ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

declare ptr @sqlite3ExprAnd(ptr noundef, ptr noundef, ptr noundef) 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 i32 @sqlite3ExprCodeGetColumn(ptr noundef, ptr noundef, i32 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 void @sqlite3ReleaseTempRange(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

declare void @sqlite3WhereEnd(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare ptr @sqlite3WhereFindTerm(ptr noundef, i32 noundef, i32 noundef, i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @sqlite3ExprCacheClear(ptr noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #4

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: readwrite) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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, !7, i64 0}
!6 = !{!"WhereInfo", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !8, i64 36, !11, i64 44, !11, i64 48, !11, i64 52, !10, i64 56, !8, i64 58, !8, i64 59, !8, i64 60, !8, i64 61, !8, i64 62, !8, i64 63, !8, i64 64, !11, i64 68, !7, i64 72, !12, i64 80, !10, i64 88, !13, i64 96, !14, i64 648, !8, i64 912}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long long", !8, i64 0}
!13 = !{!"WhereClause", !7, i64 0, !7, i64 8, !8, i64 16, !11, i64 20, !11, i64 24, !7, i64 32, !8, i64 40}
!14 = !{!"WhereMaskSet", !11, i64 0, !8, i64 4}
!15 = !{!16, !7, i64 16}
!16 = !{!"Parse", !7, i64 0, !7, i64 8, !7, i64 16, !11, 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, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !7, i64 88, !7, i64 96, !17, i64 104, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !8, i64 192, !8, i64 193, !8, i64 194, !8, i64 196, !8, i64 396, !17, i64 432, !17, i64 448, !10, i64 464, !8, i64 466, !8, i64 467, !8, i64 468, !11, i64 472, !11, i64 476, !11, i64 480, !11, i64 484, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !17, i64 536, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584}
!17 = !{!"Token", !7, i64 0, !11, i64 8}
!18 = !{!16, !7, i64 0}
!19 = !{!20, !7, i64 72}
!20 = !{!"WhereLevel", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !8, i64 44, !8, i64 45, !8, i64 46, !8, i64 47, !11, i64 48, !11, i64 52, !8, i64 56, !7, i64 72, !12, i64 80}
!21 = !{!6, !7, i64 8}
!22 = !{!20, !8, i64 44}
!23 = !{!24, !11, i64 68}
!24 = !{!"SrcList_item", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !11, i64 48, !11, i64 52, !11, i64 56, !25, i64 60, !8, i64 64, !11, i64 68, !7, i64 72, !7, i64 80, !12, i64 88, !8, i64 96, !7, i64 104}
!25 = !{!"", !8, i64 0, !11, i64 1, !11, i64 1, !11, i64 1, !11, i64 1, !11, i64 1, !11, i64 1}
!26 = !{!20, !12, i64 80}
!27 = !{!6, !12, i64 80}
!28 = !{!29, !11, i64 40}
!29 = !{!"WhereLoop", !12, i64 0, !12, i64 8, !8, i64 16, !8, i64 17, !10, i64 18, !10, i64 20, !10, i64 22, !8, i64 24, !11, i64 40, !10, i64 44, !10, i64 46, !10, i64 48, !7, i64 56, !7, i64 64, !8, i64 72}
!30 = !{!6, !10, i64 56}
!31 = !{!20, !11, i64 16}
!32 = !{!20, !11, i64 12}
!33 = !{!20, !11, i64 24}
!34 = !{!24, !8, i64 60}
!35 = !{!16, !11, i64 56}
!36 = !{!20, !11, i64 0}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!24, !11, i64 52}
!40 = !{!24, !11, i64 48}
!41 = !{!20, !11, i64 52}
!42 = !{!20, !8, i64 45}
!43 = !{!29, !10, i64 44}
!44 = !{!29, !7, i64 56}
!45 = !{!7, !7, i64 0}
!46 = !{!47, !10, i64 20}
!47 = !{!"WhereTerm", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 18, !10, i64 20, !8, i64 22, !8, i64 23, !11, i64 24, !11, i64 28, !11, i64 32, !8, i64 40, !12, i64 48, !12, i64 56}
!48 = !{!47, !7, i64 0}
!49 = !{!50, !7, i64 24}
!50 = !{!"Expr", !8, i64 0, !8, i64 1, !11, i64 4, !8, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !11, i64 40, !11, i64 44, !10, i64 48, !10, i64 50, !10, i64 52, !8, i64 54, !7, i64 56, !7, i64 64}
!51 = distinct !{!51, !38}
!52 = !{!8, !8, i64 0}
!53 = !{!20, !11, i64 48}
!54 = !{!6, !8, i64 61}
!55 = !{!56, !8, i64 85}
!56 = !{!"sqlite3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !11, i64 40, !11, i64 44, !12, i64 48, !12, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !10, 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, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !8, i64 112, !11, i64 160, !57, i64 164, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, 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, !58, i64 344, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !11, i64 432, !11, i64 436, !59, i64 440, !7, i64 464, !7, i64 472, !7, i64 480, !59, i64 488, !59, i64 512, !60, i64 536, !8, i64 560, !7, i64 624, !11, i64 632, !11, i64 636, !11, i64 640, !12, i64 648, !12, i64 656, !7, i64 664}
!57 = !{!"sqlite3InitInfo", !11, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7}
!58 = !{!"Lookaside", !11, i64 0, !10, i64 4, !8, i64 6, !11, i64 8, !11, i64 12, !8, i64 16, !7, i64 32, !7, i64 40, !7, i64 48}
!59 = !{!"Hash", !11, i64 0, !11, i64 4, !7, i64 8, !7, i64 16}
!60 = !{!"BusyHandler", !7, i64 0, !7, i64 8, !11, i64 16}
!61 = !{!62, !11, i64 4}
!62 = !{!"InLoop", !11, i64 0, !11, i64 4, !8, i64 8}
!63 = !{!64, !8, i64 0}
!64 = !{!"VdbeOp", !8, i64 0, !8, i64 1, !10, i64 2, !11, i64 4, !11, i64 8, !11, i64 12, !8, i64 16}
!65 = !{!64, !11, i64 4}
!66 = !{!64, !11, i64 8}
!67 = !{!64, !11, i64 12}
!68 = !{!50, !7, i64 16}
!69 = !{!50, !11, i64 44}
!70 = distinct !{!70, !38}
!71 = !{!11, !11, i64 0}
!72 = !{!50, !8, i64 0}
!73 = !{!20, !11, i64 8}
!74 = !{!6, !8, i64 59}
!75 = !{!76, !10, i64 94}
!76 = !{!"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, !11, i64 88, !10, i64 92, !10, i64 94, !10, i64 96, !8, i64 98, !11, i64 99, !11, i64 99, !11, i64 99, !11, i64 99, !11, i64 99, !11, i64 99, !11, i64 99}
!77 = !{!47, !10, i64 18}
!78 = !{!20, !11, i64 36}
!79 = !{!20, !11, i64 40}
!80 = !{!76, !7, i64 56}
!81 = !{!76, !7, i64 8}
!82 = !{!10, !10, i64 0}
!83 = !{!76, !7, i64 24}
!84 = !{!85, !7, i64 8}
!85 = !{!"Table", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !11, i64 56, !11, i64 60, !11, i64 64, !10, i64 68, !10, i64 70, !10, i64 72, !10, i64 74, !8, i64 76, !11, i64 80, !11, i64 84, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!86 = !{!87, !8, i64 24}
!87 = !{!"Column", !7, i64 0, !7, i64 8, !7, i64 16, !8, i64 24, !8, i64 25, !8, i64 26, !8, i64 27}
!88 = !{!29, !10, i64 46}
!89 = !{!85, !11, i64 64}
!90 = distinct !{!90, !38}
!91 = !{!20, !8, i64 46}
!92 = !{!20, !8, i64 47}
!93 = !{!16, !11, i64 52}
!94 = !{!24, !7, i64 32}
!95 = !{!6, !8, i64 58}
!96 = !{!97, !11, i64 4}
!97 = !{!"SrcList", !11, i64 0, !11, i64 4, !8, i64 8}
!98 = !{!97, !11, i64 0}
!99 = distinct !{!99, !38}
!100 = !{!13, !11, i64 20}
!101 = !{!13, !7, i64 32}
!102 = !{!50, !11, i64 4}
!103 = distinct !{!103, !38}
!104 = !{!47, !11, i64 28}
!105 = distinct !{!105, !38}
!106 = !{!6, !8, i64 62}
!107 = distinct !{!107, !38}
!108 = !{!47, !12, i64 56}
!109 = distinct !{!109, !38}
!110 = !{i64 0, i64 1, !52, i64 1, i64 1, !52, i64 4, i64 4, !71, i64 8, i64 8, !52, i64 16, i64 8, !45, i64 24, i64 8, !45, i64 32, i64 8, !52, i64 40, i64 4, !71, i64 44, i64 4, !71, i64 48, i64 2, !82, i64 50, i64 2, !82, i64 52, i64 2, !82, i64 54, i64 1, !52, i64 56, i64 8, !45, i64 64, i64 8, !45}
!111 = distinct !{!111, !38}
!112 = !{!20, !11, i64 28}
!113 = distinct !{!113, !38}


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