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

; 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, ptr, ptr, %union.anon.0, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon = type { ptr }
%union.anon.0 = type { 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.AggInfo = type { i8, i8, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, ptr, i32 }
%struct.AggInfo_col = type { ptr, i32, i32, i32, i32, ptr }
%struct.AggInfo_func = type { ptr, ptr, i32, i32 }
%struct.sqlite3 = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i64, i32, i32, i32, i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, [12 x i32], i32, %struct.sqlite3InitInfo, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %union.anon.2, %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.2 = 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.ExprList = type { i32, ptr }
%struct.FuncDef = type { i8, i16, ptr, ptr, ptr, ptr, ptr, %union.anon.5 }
%union.anon.5 = type { ptr }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.1 }
%union.anon.1 = type { i32 }
%struct.Select = type { ptr, i8, i16, i32, i32, i32, [2 x i32], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Table = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i16, i16, i16, i8, i32, i32, ptr, ptr, ptr, ptr, ptr }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }

@.str.3 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [50 x i8], align 1

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

declare signext i8 @sqlite3AffinityType(ptr noundef, ptr noundef) #1

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3ExprCollSeq(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsVector(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprVectorSize(ptr noundef) #2

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

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

; 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) #4

declare i32 @sqlite3Strlen30(ptr noundef) #1

declare ptr @sqlite3VListNumToName(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsConstant(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsConstantNotJoin(ptr noundef) #2

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3CodeSubselect(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3ExprCachePush(ptr noundef) #2

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

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3ExprCodeTarget(ptr noundef %0, ptr noundef %1, i32 noundef %2) #2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %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 i32, align 4
  %15 = alloca %struct.Expr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i8, align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %struct.Expr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.Parse, ptr %55, i32 0, i32 2
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  store ptr %57, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %58 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %58, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !9
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %62

61:                                               ; preds = %3
  store i32 0, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

62:                                               ; preds = %3
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = icmp eq ptr %63, null
  br i1 %64, label %65, label %66

65:                                               ; preds = %62
  store i32 101, ptr %9, align 4, !tbaa !9
  br label %71

66:                                               ; preds = %62
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.Expr, ptr %67, i32 0, i32 0
  %69 = load i8, ptr %68, align 8, !tbaa !15
  %70 = zext i8 %69 to i32
  store i32 %70, ptr %9, align 4, !tbaa !9
  br label %71

71:                                               ; preds = %66, %65
  %72 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %72, label %892 [
    i32 154, label %73
    i32 152, label %114
    i32 134, label %155
    i32 132, label %160
    i32 97, label %167
    i32 101, label %175
    i32 133, label %180
    i32 135, label %200
    i32 157, label %232
    i32 66, label %236
    i32 29, label %264
    i32 148, label %264
    i32 40, label %269
    i32 39, label %269
    i32 38, label %269
    i32 41, label %269
    i32 36, label %269
    i32 37, label %269
    i32 28, label %306
    i32 27, label %306
    i32 47, label %306
    i32 49, label %306
    i32 48, label %306
    i32 51, label %306
    i32 43, label %306
    i32 44, label %306
    i32 50, label %306
    i32 45, label %306
    i32 46, label %306
    i32 52, label %306
    i32 155, label %323
    i32 54, label %370
    i32 19, label %370
    i32 34, label %381
    i32 35, label %381
    i32 153, label %399
    i32 151, label %424
    i32 20, label %739
    i32 119, label %739
    i32 159, label %761
    i32 33, label %809
    i32 32, label %832
    i32 161, label %837
    i32 53, label %837
    i32 156, label %837
    i32 88, label %844
    i32 158, label %890
    i32 83, label %988
  ]

73:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.Expr, ptr %74, i32 0, i32 13
  %76 = load ptr, ptr %75, align 8, !tbaa !17
  store ptr %76, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %77 = load ptr, ptr %18, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.AggInfo, ptr %77, i32 0, i32 8
  %79 = load ptr, ptr %78, align 8, !tbaa !18
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.Expr, ptr %80, i32 0, i32 10
  %82 = load i16, ptr %81, align 2, !tbaa !20
  %83 = sext i16 %82 to i64
  %84 = getelementptr inbounds %struct.AggInfo_col, ptr %79, i64 %83
  store ptr %84, ptr %19, align 8, !tbaa !5
  %85 = load ptr, ptr %18, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.AggInfo, ptr %85, i32 0, i32 0
  %87 = load i8, ptr %86, align 8, !tbaa !21
  %88 = icmp ne i8 %87, 0
  br i1 %88, label %93, label %89

89:                                               ; preds = %73
  %90 = load ptr, ptr %19, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.AggInfo_col, ptr %90, i32 0, i32 4
  %92 = load i32, ptr %91, align 4, !tbaa !22
  store i32 %92, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %111

93:                                               ; preds = %73
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.AggInfo, ptr %94, i32 0, i32 1
  %96 = load i8, ptr %95, align 1, !tbaa !24
  %97 = icmp ne i8 %96, 0
  br i1 %97, label %98, label %109

98:                                               ; preds = %93
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = load ptr, ptr %18, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.AggInfo, ptr %100, i32 0, i32 3
  %102 = load i32, ptr %101, align 8, !tbaa !25
  %103 = load ptr, ptr %19, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.AggInfo_col, ptr %103, i32 0, i32 3
  %105 = load i32, ptr %104, align 8, !tbaa !26
  %106 = load i32, ptr %7, align 4, !tbaa !9
  %107 = call i32 @sqlite3VdbeAddOp3(ptr noundef %99, i32 noundef 98, i32 noundef %102, i32 noundef %105, i32 noundef %106)
  %108 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %108, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %111

109:                                              ; preds = %93
  br label %110

110:                                              ; preds = %109
  store i32 0, ptr %17, align 4
  br label %111

111:                                              ; preds = %110, %98, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  %112 = load i32, ptr %17, align 4
  switch i32 %112, label %1031 [
    i32 0, label %113
  ]

113:                                              ; preds = %111
  br label %114

114:                                              ; preds = %113, %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.Expr, ptr %115, i32 0, i32 8
  %117 = load i32, ptr %116, align 4, !tbaa !27
  store i32 %117, ptr %20, align 4, !tbaa !9
  %118 = load i32, ptr %20, align 4, !tbaa !9
  %119 = icmp slt i32 %118, 0
  br i1 %119, label %120, label %139

120:                                              ; preds = %114
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.Parse, ptr %121, i32 0, i32 21
  %123 = load i32, ptr %122, align 4, !tbaa !28
  %124 = icmp sgt i32 %123, 0
  br i1 %124, label %125, label %134

125:                                              ; preds = %120
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.Expr, ptr %126, i32 0, i32 9
  %128 = load i16, ptr %127, align 8, !tbaa !29
  %129 = sext i16 %128 to i32
  %130 = load ptr, ptr %5, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.Parse, ptr %130, i32 0, i32 21
  %132 = load i32, ptr %131, align 4, !tbaa !28
  %133 = add nsw i32 %129, %132
  store i32 %133, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %154

134:                                              ; preds = %120
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.Parse, ptr %135, i32 0, i32 22
  %137 = load i32, ptr %136, align 8, !tbaa !30
  store i32 %137, ptr %20, align 4, !tbaa !9
  br label %138

138:                                              ; preds = %134
  br label %139

139:                                              ; preds = %138, %114
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.Expr, ptr %141, i32 0, i32 14
  %143 = load ptr, ptr %142, align 8, !tbaa !31
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.Expr, ptr %144, i32 0, i32 9
  %146 = load i16, ptr %145, align 8, !tbaa !29
  %147 = sext i16 %146 to i32
  %148 = load i32, ptr %20, align 4, !tbaa !9
  %149 = load i32, ptr %7, align 4, !tbaa !9
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.Expr, ptr %150, i32 0, i32 12
  %152 = load i8, ptr %151, align 2, !tbaa !32
  %153 = call i32 @sqlite3ExprCodeGetColumn(ptr noundef %140, ptr noundef %143, i32 noundef %147, i32 noundef %148, i32 noundef %149, i8 noundef zeroext %152)
  store i32 %153, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %154

154:                                              ; preds = %139, %125
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %1031

155:                                              ; preds = %71
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = load i32, ptr %7, align 4, !tbaa !9
  call void @codeInteger(ptr noundef %156, ptr noundef %157, i32 noundef 0, i32 noundef %158)
  %159 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %159, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

160:                                              ; preds = %71
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = load ptr, ptr %6, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.Expr, ptr %162, i32 0, i32 3
  %164 = load ptr, ptr %163, align 8, !tbaa !33
  %165 = load i32, ptr %7, align 4, !tbaa !9
  call void @codeReal(ptr noundef %161, ptr noundef %164, i32 noundef 0, i32 noundef %165)
  %166 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %166, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

167:                                              ; preds = %71
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = load i32, ptr %7, align 4, !tbaa !9
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.Expr, ptr %170, i32 0, i32 3
  %172 = load ptr, ptr %171, align 8, !tbaa !33
  %173 = call i32 @sqlite3VdbeLoadString(ptr noundef %168, i32 noundef %169, ptr noundef %172)
  %174 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %174, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

175:                                              ; preds = %71
  %176 = load ptr, ptr %8, align 8, !tbaa !5
  %177 = load i32, ptr %7, align 4, !tbaa !9
  %178 = call i32 @sqlite3VdbeAddOp2(ptr noundef %176, i32 noundef 80, i32 noundef 0, i32 noundef %177)
  %179 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %179, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

180:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.Expr, ptr %181, i32 0, i32 3
  %183 = load ptr, ptr %182, align 8, !tbaa !33
  %184 = getelementptr inbounds i8, ptr %183, i64 2
  store ptr %184, ptr %22, align 8, !tbaa !5
  %185 = load ptr, ptr %22, align 8, !tbaa !5
  %186 = call i32 @sqlite3Strlen30(ptr noundef %185)
  %187 = sub nsw i32 %186, 1
  store i32 %187, ptr %21, align 4, !tbaa !9
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = call ptr @sqlite3VdbeDb(ptr noundef %188)
  %190 = load ptr, ptr %22, align 8, !tbaa !5
  %191 = load i32, ptr %21, align 4, !tbaa !9
  %192 = call ptr @sqlite3HexToBlob(ptr noundef %189, ptr noundef %190, i32 noundef %191)
  store ptr %192, ptr %23, align 8, !tbaa !5
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = load i32, ptr %21, align 4, !tbaa !9
  %195 = sdiv i32 %194, 2
  %196 = load i32, ptr %7, align 4, !tbaa !9
  %197 = load ptr, ptr %23, align 8, !tbaa !5
  %198 = call i32 @sqlite3VdbeAddOp4(ptr noundef %193, i32 noundef 82, i32 noundef %195, i32 noundef %196, i32 noundef 0, ptr noundef %197, i32 noundef -1)
  %199 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %199, ptr %4, align 4
  store i32 1, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %1031

200:                                              ; preds = %71
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.Expr, ptr %202, i32 0, i32 9
  %204 = load i16, ptr %203, align 8, !tbaa !29
  %205 = sext i16 %204 to i32
  %206 = load i32, ptr %7, align 4, !tbaa !9
  %207 = call i32 @sqlite3VdbeAddOp2(ptr noundef %201, i32 noundef 83, i32 noundef %205, i32 noundef %206)
  %208 = load ptr, ptr %6, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.Expr, ptr %208, i32 0, i32 3
  %210 = load ptr, ptr %209, align 8, !tbaa !33
  %211 = getelementptr inbounds i8, ptr %210, i64 1
  %212 = load i8, ptr %211, align 1, !tbaa !33
  %213 = sext i8 %212 to i32
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %230

215:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.Parse, ptr %216, i32 0, i32 58
  %218 = load ptr, ptr %217, align 8, !tbaa !34
  %219 = load ptr, ptr %6, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.Expr, ptr %219, i32 0, i32 9
  %221 = load i16, ptr %220, align 8, !tbaa !29
  %222 = sext i16 %221 to i32
  %223 = call ptr @sqlite3VListNumToName(ptr noundef %218, i32 noundef %222)
  store ptr %223, ptr %24, align 8, !tbaa !5
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.Parse, ptr %224, i32 0, i32 58
  %226 = load ptr, ptr %225, align 8, !tbaa !34
  %227 = getelementptr inbounds i32, ptr %226, i64 0
  store i32 0, ptr %227, align 4, !tbaa !9
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = load ptr, ptr %24, align 8, !tbaa !5
  call void @sqlite3VdbeAppendP4(ptr noundef %228, ptr noundef %229, i32 noundef -2)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  br label %230

230:                                              ; preds = %215, %200
  %231 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %231, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

232:                                              ; preds = %71
  %233 = load ptr, ptr %6, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.Expr, ptr %233, i32 0, i32 8
  %235 = load i32, ptr %234, align 4, !tbaa !27
  store i32 %235, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

236:                                              ; preds = %71
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.Expr, ptr %238, i32 0, i32 4
  %240 = load ptr, ptr %239, align 8, !tbaa !35
  %241 = load i32, ptr %7, align 4, !tbaa !9
  %242 = call i32 @sqlite3ExprCodeTarget(ptr noundef %237, ptr noundef %240, i32 noundef %241)
  store i32 %242, ptr %10, align 4, !tbaa !9
  %243 = load i32, ptr %10, align 4, !tbaa !9
  %244 = load i32, ptr %7, align 4, !tbaa !9
  %245 = icmp ne i32 %243, %244
  br i1 %245, label %246, label %252

246:                                              ; preds = %236
  %247 = load ptr, ptr %8, align 8, !tbaa !5
  %248 = load i32, ptr %10, align 4, !tbaa !9
  %249 = load i32, ptr %7, align 4, !tbaa !9
  %250 = call i32 @sqlite3VdbeAddOp2(ptr noundef %247, i32 noundef 86, i32 noundef %248, i32 noundef %249)
  %251 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %251, ptr %10, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %246, %236
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = load i32, ptr %7, align 4, !tbaa !9
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.Expr, ptr %255, i32 0, i32 3
  %257 = load ptr, ptr %256, align 8, !tbaa !33
  %258 = call signext i8 @sqlite3AffinityType(ptr noundef %257, ptr noundef null)
  %259 = sext i8 %258 to i32
  %260 = call i32 @sqlite3VdbeAddOp2(ptr noundef %253, i32 noundef 94, i32 noundef %254, i32 noundef %259)
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = load i32, ptr %10, align 4, !tbaa !9
  call void @sqlite3ExprCacheAffinityChange(ptr noundef %261, i32 noundef %262, i32 noundef 1)
  %263 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %263, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

264:                                              ; preds = %71, %71
  %265 = load i32, ptr %9, align 4, !tbaa !9
  %266 = icmp eq i32 %265, 29
  %267 = zext i1 %266 to i64
  %268 = select i1 %266, i32 37, i32 36
  store i32 %268, ptr %9, align 4, !tbaa !9
  store i32 128, ptr %16, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %264, %71, %71, %71, %71, %71, %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %270 = load ptr, ptr %6, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.Expr, ptr %270, i32 0, i32 4
  %272 = load ptr, ptr %271, align 8, !tbaa !35
  store ptr %272, ptr %25, align 8, !tbaa !5
  %273 = load ptr, ptr %25, align 8, !tbaa !5
  %274 = call i32 @sqlite3ExprIsVector(ptr noundef %273)
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %284

276:                                              ; preds = %269
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  %279 = load i32, ptr %7, align 4, !tbaa !9
  %280 = load i32, ptr %9, align 4, !tbaa !9
  %281 = trunc i32 %280 to i8
  %282 = load i32, ptr %16, align 4, !tbaa !9
  %283 = trunc i32 %282 to i8
  call void @codeVectorCompare(ptr noundef %277, ptr noundef %278, i32 noundef %279, i8 noundef zeroext %281, i8 noundef zeroext %283)
  br label %305

284:                                              ; preds = %269
  %285 = load ptr, ptr %5, align 8, !tbaa !5
  %286 = load ptr, ptr %25, align 8, !tbaa !5
  %287 = call i32 @sqlite3ExprCodeTemp(ptr noundef %285, ptr noundef %286, ptr noundef %11)
  store i32 %287, ptr %13, align 4, !tbaa !9
  %288 = load ptr, ptr %5, align 8, !tbaa !5
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.Expr, ptr %289, i32 0, i32 5
  %291 = load ptr, ptr %290, align 8, !tbaa !36
  %292 = call i32 @sqlite3ExprCodeTemp(ptr noundef %288, ptr noundef %291, ptr noundef %12)
  store i32 %292, ptr %14, align 4, !tbaa !9
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  %294 = load ptr, ptr %25, align 8, !tbaa !5
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.Expr, ptr %295, i32 0, i32 5
  %297 = load ptr, ptr %296, align 8, !tbaa !36
  %298 = load i32, ptr %9, align 4, !tbaa !9
  %299 = load i32, ptr %13, align 4, !tbaa !9
  %300 = load i32, ptr %14, align 4, !tbaa !9
  %301 = load i32, ptr %10, align 4, !tbaa !9
  %302 = load i32, ptr %16, align 4, !tbaa !9
  %303 = or i32 32, %302
  %304 = call i32 @codeCompare(ptr noundef %293, ptr noundef %294, ptr noundef %297, i32 noundef %298, i32 noundef %299, i32 noundef %300, i32 noundef %301, i32 noundef %303)
  br label %305

305:                                              ; preds = %284, %276
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  br label %1025

306:                                              ; preds = %71, %71, %71, %71, %71, %71, %71, %71, %71, %71, %71, %71
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  %308 = load ptr, ptr %6, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.Expr, ptr %308, i32 0, i32 4
  %310 = load ptr, ptr %309, align 8, !tbaa !35
  %311 = call i32 @sqlite3ExprCodeTemp(ptr noundef %307, ptr noundef %310, ptr noundef %11)
  store i32 %311, ptr %13, align 4, !tbaa !9
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.Expr, ptr %313, i32 0, i32 5
  %315 = load ptr, ptr %314, align 8, !tbaa !36
  %316 = call i32 @sqlite3ExprCodeTemp(ptr noundef %312, ptr noundef %315, ptr noundef %12)
  store i32 %316, ptr %14, align 4, !tbaa !9
  %317 = load ptr, ptr %8, align 8, !tbaa !5
  %318 = load i32, ptr %9, align 4, !tbaa !9
  %319 = load i32, ptr %14, align 4, !tbaa !9
  %320 = load i32, ptr %13, align 4, !tbaa !9
  %321 = load i32, ptr %7, align 4, !tbaa !9
  %322 = call i32 @sqlite3VdbeAddOp3(ptr noundef %317, i32 noundef %318, i32 noundef %319, i32 noundef %320, i32 noundef %321)
  br label %1025

323:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.Expr, ptr %324, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !35
  store ptr %326, ptr %26, align 8, !tbaa !5
  %327 = load ptr, ptr %26, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.Expr, ptr %327, i32 0, i32 0
  %329 = load i8, ptr %328, align 8, !tbaa !15
  %330 = zext i8 %329 to i32
  %331 = icmp eq i32 %330, 134
  br i1 %331, label %332, label %337

332:                                              ; preds = %323
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = load ptr, ptr %26, align 8, !tbaa !5
  %335 = load i32, ptr %7, align 4, !tbaa !9
  call void @codeInteger(ptr noundef %333, ptr noundef %334, i32 noundef 1, i32 noundef %335)
  %336 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %336, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %368

337:                                              ; preds = %323
  %338 = load ptr, ptr %26, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.Expr, ptr %338, i32 0, i32 0
  %340 = load i8, ptr %339, align 8, !tbaa !15
  %341 = zext i8 %340 to i32
  %342 = icmp eq i32 %341, 132
  br i1 %342, label %343, label %350

343:                                              ; preds = %337
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = load ptr, ptr %26, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.Expr, ptr %345, i32 0, i32 3
  %347 = load ptr, ptr %346, align 8, !tbaa !33
  %348 = load i32, ptr %7, align 4, !tbaa !9
  call void @codeReal(ptr noundef %344, ptr noundef %347, i32 noundef 1, i32 noundef %348)
  %349 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %349, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %368

350:                                              ; preds = %337
  %351 = getelementptr inbounds %struct.Expr, ptr %15, i32 0, i32 0
  store i8 -122, ptr %351, align 8, !tbaa !15
  %352 = getelementptr inbounds %struct.Expr, ptr %15, i32 0, i32 2
  store i32 17408, ptr %352, align 4, !tbaa !37
  %353 = getelementptr inbounds %struct.Expr, ptr %15, i32 0, i32 3
  store i32 0, ptr %353, align 8, !tbaa !33
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = call i32 @sqlite3ExprCodeTemp(ptr noundef %354, ptr noundef %15, ptr noundef %11)
  store i32 %355, ptr %13, align 4, !tbaa !9
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.Expr, ptr %357, i32 0, i32 4
  %359 = load ptr, ptr %358, align 8, !tbaa !35
  %360 = call i32 @sqlite3ExprCodeTemp(ptr noundef %356, ptr noundef %359, ptr noundef %12)
  store i32 %360, ptr %14, align 4, !tbaa !9
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = load i32, ptr %14, align 4, !tbaa !9
  %363 = load i32, ptr %13, align 4, !tbaa !9
  %364 = load i32, ptr %7, align 4, !tbaa !9
  %365 = call i32 @sqlite3VdbeAddOp3(ptr noundef %361, i32 noundef 48, i32 noundef %362, i32 noundef %363, i32 noundef %364)
  br label %366

366:                                              ; preds = %350
  br label %367

367:                                              ; preds = %366
  store i32 2, ptr %17, align 4
  br label %368

368:                                              ; preds = %367, %343, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  %369 = load i32, ptr %17, align 4
  switch i32 %369, label %1031 [
    i32 2, label %1025
  ]

370:                                              ; preds = %71, %71
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.Expr, ptr %372, i32 0, i32 4
  %374 = load ptr, ptr %373, align 8, !tbaa !35
  %375 = call i32 @sqlite3ExprCodeTemp(ptr noundef %371, ptr noundef %374, ptr noundef %11)
  store i32 %375, ptr %13, align 4, !tbaa !9
  %376 = load ptr, ptr %8, align 8, !tbaa !5
  %377 = load i32, ptr %9, align 4, !tbaa !9
  %378 = load i32, ptr %13, align 4, !tbaa !9
  %379 = load i32, ptr %10, align 4, !tbaa !9
  %380 = call i32 @sqlite3VdbeAddOp2(ptr noundef %376, i32 noundef %377, i32 noundef %378, i32 noundef %379)
  br label %1025

381:                                              ; preds = %71, %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %382 = load ptr, ptr %8, align 8, !tbaa !5
  %383 = load i32, ptr %7, align 4, !tbaa !9
  %384 = call i32 @sqlite3VdbeAddOp2(ptr noundef %382, i32 noundef 77, i32 noundef 1, i32 noundef %383)
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = load ptr, ptr %6, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.Expr, ptr %386, i32 0, i32 4
  %388 = load ptr, ptr %387, align 8, !tbaa !35
  %389 = call i32 @sqlite3ExprCodeTemp(ptr noundef %385, ptr noundef %388, ptr noundef %11)
  store i32 %389, ptr %13, align 4, !tbaa !9
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = load i32, ptr %9, align 4, !tbaa !9
  %392 = load i32, ptr %13, align 4, !tbaa !9
  %393 = call i32 @sqlite3VdbeAddOp1(ptr noundef %390, i32 noundef %391, i32 noundef %392)
  store i32 %393, ptr %27, align 4, !tbaa !9
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = load i32, ptr %7, align 4, !tbaa !9
  %396 = call i32 @sqlite3VdbeAddOp2(ptr noundef %394, i32 noundef 77, i32 noundef 0, i32 noundef %395)
  %397 = load ptr, ptr %8, align 8, !tbaa !5
  %398 = load i32, ptr %27, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %397, i32 noundef %398)
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %1025

399:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %400 = load ptr, ptr %6, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.Expr, ptr %400, i32 0, i32 13
  %402 = load ptr, ptr %401, align 8, !tbaa !17
  store ptr %402, ptr %28, align 8, !tbaa !5
  %403 = load ptr, ptr %28, align 8, !tbaa !5
  %404 = icmp eq ptr %403, null
  br i1 %404, label %405, label %410

405:                                              ; preds = %399
  %406 = load ptr, ptr %5, align 8, !tbaa !5
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.Expr, ptr %407, i32 0, i32 3
  %409 = load ptr, ptr %408, align 8, !tbaa !33
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %406, ptr noundef @.str.16, ptr noundef %409)
  br label %421

410:                                              ; preds = %399
  %411 = load ptr, ptr %28, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.AggInfo, ptr %411, i32 0, i32 11
  %413 = load ptr, ptr %412, align 8, !tbaa !38
  %414 = load ptr, ptr %6, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.Expr, ptr %414, i32 0, i32 10
  %416 = load i16, ptr %415, align 2, !tbaa !20
  %417 = sext i16 %416 to i64
  %418 = getelementptr inbounds %struct.AggInfo_func, ptr %413, i64 %417
  %419 = getelementptr inbounds %struct.AggInfo_func, ptr %418, i32 0, i32 2
  %420 = load i32, ptr %419, align 8, !tbaa !39
  store i32 %420, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %422

421:                                              ; preds = %405
  store i32 2, ptr %17, align 4
  br label %422

422:                                              ; preds = %421, %410
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  %423 = load i32, ptr %17, align 4
  switch i32 %423, label %1031 [
    i32 2, label %1025
  ]

424:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.Parse, ptr %425, i32 0, i32 0
  %427 = load ptr, ptr %426, align 8, !tbaa !41
  store ptr %427, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  %428 = load ptr, ptr %35, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.sqlite3, ptr %428, i32 0, i32 14
  %430 = load i8, ptr %429, align 2, !tbaa !42
  store i8 %430, ptr %36, align 1, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  store ptr null, ptr %37, align 8, !tbaa !5
  %431 = load ptr, ptr %5, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.Parse, ptr %431, i32 0, i32 11
  %433 = load i8, ptr %432, align 1, !tbaa !49
  %434 = zext i8 %433 to i32
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %436, label %444

436:                                              ; preds = %424
  %437 = load ptr, ptr %6, align 8, !tbaa !5
  %438 = call i32 @sqlite3ExprIsConstantNotJoin(ptr noundef %437)
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %444

440:                                              ; preds = %436
  %441 = load ptr, ptr %5, align 8, !tbaa !5
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = call i32 @sqlite3ExprCodeAtInit(ptr noundef %441, ptr noundef %442, i32 noundef -1)
  store i32 %443, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %737

444:                                              ; preds = %436, %424
  %445 = load ptr, ptr %6, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.Expr, ptr %445, i32 0, i32 2
  %447 = load i32, ptr %446, align 4, !tbaa !37
  %448 = and i32 %447, 16384
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %450, label %451

450:                                              ; preds = %444
  store ptr null, ptr %29, align 8, !tbaa !5
  br label %455

451:                                              ; preds = %444
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.Expr, ptr %452, i32 0, i32 6
  %454 = load ptr, ptr %453, align 8, !tbaa !33
  store ptr %454, ptr %29, align 8, !tbaa !5
  br label %455

455:                                              ; preds = %451, %450
  %456 = load ptr, ptr %29, align 8, !tbaa !5
  %457 = icmp ne ptr %456, null
  br i1 %457, label %458, label %462

458:                                              ; preds = %455
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.ExprList, ptr %459, i32 0, i32 0
  %461 = load i32, ptr %460, align 8, !tbaa !50
  br label %463

462:                                              ; preds = %455
  br label %463

463:                                              ; preds = %462, %458
  %464 = phi i32 [ %461, %458 ], [ 0, %462 ]
  store i32 %464, ptr %30, align 4, !tbaa !9
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.Expr, ptr %465, i32 0, i32 3
  %467 = load ptr, ptr %466, align 8, !tbaa !33
  store ptr %467, ptr %32, align 8, !tbaa !5
  %468 = load ptr, ptr %35, align 8, !tbaa !5
  %469 = load ptr, ptr %32, align 8, !tbaa !5
  %470 = load i32, ptr %30, align 4, !tbaa !9
  %471 = load i8, ptr %36, align 1, !tbaa !33
  %472 = call ptr @sqlite3FindFunction(ptr noundef %468, ptr noundef %469, i32 noundef %470, i8 noundef zeroext %471, i8 noundef zeroext 0)
  store ptr %472, ptr %31, align 8, !tbaa !5
  %473 = load ptr, ptr %31, align 8, !tbaa !5
  %474 = icmp eq ptr %473, null
  br i1 %474, label %480, label %475

475:                                              ; preds = %463
  %476 = load ptr, ptr %31, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.FuncDef, ptr %476, i32 0, i32 5
  %478 = load ptr, ptr %477, align 8, !tbaa !52
  %479 = icmp ne ptr %478, null
  br i1 %479, label %480, label %483

480:                                              ; preds = %475, %463
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = load ptr, ptr %32, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %481, ptr noundef @.str.17, ptr noundef %482)
  store i32 2, ptr %17, align 4
  br label %737

483:                                              ; preds = %475
  %484 = load ptr, ptr %31, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.FuncDef, ptr %484, i32 0, i32 1
  %486 = load i16, ptr %485, align 2, !tbaa !54
  %487 = zext i16 %486 to i32
  %488 = and i32 %487, 512
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %530

490:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %491 = load ptr, ptr %8, align 8, !tbaa !5
  %492 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %491)
  store i32 %492, ptr %38, align 4, !tbaa !9
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = load ptr, ptr %29, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ExprList, ptr %494, i32 0, i32 1
  %496 = load ptr, ptr %495, align 8, !tbaa !55
  %497 = getelementptr inbounds %struct.ExprList_item, ptr %496, i64 0
  %498 = getelementptr inbounds %struct.ExprList_item, ptr %497, i32 0, i32 0
  %499 = load ptr, ptr %498, align 8, !tbaa !56
  %500 = load i32, ptr %7, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %493, ptr noundef %499, i32 noundef %500)
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %501

501:                                              ; preds = %524, %490
  %502 = load i32, ptr %34, align 4, !tbaa !9
  %503 = load i32, ptr %30, align 4, !tbaa !9
  %504 = icmp slt i32 %502, %503
  br i1 %504, label %505, label %527

505:                                              ; preds = %501
  %506 = load ptr, ptr %8, align 8, !tbaa !5
  %507 = load i32, ptr %7, align 4, !tbaa !9
  %508 = load i32, ptr %38, align 4, !tbaa !9
  %509 = call i32 @sqlite3VdbeAddOp2(ptr noundef %506, i32 noundef 35, i32 noundef %507, i32 noundef %508)
  %510 = load ptr, ptr %5, align 8, !tbaa !5
  %511 = load i32, ptr %7, align 4, !tbaa !9
  call void @sqlite3ExprCacheRemove(ptr noundef %510, i32 noundef %511, i32 noundef 1)
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePush(ptr noundef %512)
  %513 = load ptr, ptr %5, align 8, !tbaa !5
  %514 = load ptr, ptr %29, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ExprList, ptr %514, i32 0, i32 1
  %516 = load ptr, ptr %515, align 8, !tbaa !55
  %517 = load i32, ptr %34, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.ExprList_item, ptr %516, i64 %518
  %520 = getelementptr inbounds %struct.ExprList_item, ptr %519, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !56
  %522 = load i32, ptr %7, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %513, ptr noundef %521, i32 noundef %522)
  %523 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePop(ptr noundef %523)
  br label %524

524:                                              ; preds = %505
  %525 = load i32, ptr %34, align 4, !tbaa !9
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %34, align 4, !tbaa !9
  br label %501, !llvm.loop !58

527:                                              ; preds = %501
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = load i32, ptr %38, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %528, i32 noundef %529)
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  br label %737

530:                                              ; preds = %483
  %531 = load ptr, ptr %31, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.FuncDef, ptr %531, i32 0, i32 1
  %533 = load i16, ptr %532, align 2, !tbaa !54
  %534 = zext i16 %533 to i32
  %535 = and i32 %534, 1024
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %547

537:                                              ; preds = %530
  %538 = load ptr, ptr %5, align 8, !tbaa !5
  %539 = load ptr, ptr %29, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ExprList, ptr %539, i32 0, i32 1
  %541 = load ptr, ptr %540, align 8, !tbaa !55
  %542 = getelementptr inbounds %struct.ExprList_item, ptr %541, i64 0
  %543 = getelementptr inbounds %struct.ExprList_item, ptr %542, i32 0, i32 0
  %544 = load ptr, ptr %543, align 8, !tbaa !56
  %545 = load i32, ptr %7, align 4, !tbaa !9
  %546 = call i32 @sqlite3ExprCodeTarget(ptr noundef %538, ptr noundef %544, i32 noundef %545)
  store i32 %546, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %737

547:                                              ; preds = %530
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %548

548:                                              ; preds = %593, %547
  %549 = load i32, ptr %34, align 4, !tbaa !9
  %550 = load i32, ptr %30, align 4, !tbaa !9
  %551 = icmp slt i32 %549, %550
  br i1 %551, label %552, label %596

552:                                              ; preds = %548
  %553 = load i32, ptr %34, align 4, !tbaa !9
  %554 = icmp slt i32 %553, 32
  br i1 %554, label %555, label %571

555:                                              ; preds = %552
  %556 = load ptr, ptr %29, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ExprList, ptr %556, i32 0, i32 1
  %558 = load ptr, ptr %557, align 8, !tbaa !55
  %559 = load i32, ptr %34, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds %struct.ExprList_item, ptr %558, i64 %560
  %562 = getelementptr inbounds %struct.ExprList_item, ptr %561, i32 0, i32 0
  %563 = load ptr, ptr %562, align 8, !tbaa !56
  %564 = call i32 @sqlite3ExprIsConstant(ptr noundef %563)
  %565 = icmp ne i32 %564, 0
  br i1 %565, label %566, label %571

566:                                              ; preds = %555
  %567 = load i32, ptr %34, align 4, !tbaa !9
  %568 = shl i32 1, %567
  %569 = load i32, ptr %33, align 4, !tbaa !9
  %570 = or i32 %569, %568
  store i32 %570, ptr %33, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %566, %555, %552
  %572 = load ptr, ptr %31, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.FuncDef, ptr %572, i32 0, i32 1
  %574 = load i16, ptr %573, align 2, !tbaa !54
  %575 = zext i16 %574 to i32
  %576 = and i32 %575, 32
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %578, label %592

578:                                              ; preds = %571
  %579 = load ptr, ptr %37, align 8, !tbaa !5
  %580 = icmp ne ptr %579, null
  br i1 %580, label %592, label %581

581:                                              ; preds = %578
  %582 = load ptr, ptr %5, align 8, !tbaa !5
  %583 = load ptr, ptr %29, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.ExprList, ptr %583, i32 0, i32 1
  %585 = load ptr, ptr %584, align 8, !tbaa !55
  %586 = load i32, ptr %34, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.ExprList_item, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct.ExprList_item, ptr %588, i32 0, i32 0
  %590 = load ptr, ptr %589, align 8, !tbaa !56
  %591 = call ptr @sqlite3ExprCollSeq(ptr noundef %582, ptr noundef %590)
  store ptr %591, ptr %37, align 8, !tbaa !5
  br label %592

592:                                              ; preds = %581, %578, %571
  br label %593

593:                                              ; preds = %592
  %594 = load i32, ptr %34, align 4, !tbaa !9
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %34, align 4, !tbaa !9
  br label %548, !llvm.loop !60

596:                                              ; preds = %548
  %597 = load ptr, ptr %29, align 8, !tbaa !5
  %598 = icmp ne ptr %597, null
  br i1 %598, label %599, label %661

599:                                              ; preds = %596
  %600 = load i32, ptr %33, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %612

602:                                              ; preds = %599
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.Parse, ptr %603, i32 0, i32 18
  %605 = load i32, ptr %604, align 8, !tbaa !61
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr %13, align 4, !tbaa !9
  %607 = load i32, ptr %30, align 4, !tbaa !9
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.Parse, ptr %608, i32 0, i32 18
  %610 = load i32, ptr %609, align 8, !tbaa !61
  %611 = add nsw i32 %610, %607
  store i32 %611, ptr %609, align 8, !tbaa !61
  br label %616

612:                                              ; preds = %599
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = load i32, ptr %30, align 4, !tbaa !9
  %615 = call i32 @sqlite3GetTempRange(ptr noundef %613, i32 noundef %614)
  store i32 %615, ptr %13, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %612, %602
  %617 = load ptr, ptr %31, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.FuncDef, ptr %617, i32 0, i32 1
  %619 = load i16, ptr %618, align 2, !tbaa !54
  %620 = zext i16 %619 to i32
  %621 = and i32 %620, 192
  %622 = icmp ne i32 %621, 0
  br i1 %622, label %623, label %654

623:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #5
  %624 = load ptr, ptr %29, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.ExprList, ptr %624, i32 0, i32 1
  %626 = load ptr, ptr %625, align 8, !tbaa !55
  %627 = getelementptr inbounds %struct.ExprList_item, ptr %626, i64 0
  %628 = getelementptr inbounds %struct.ExprList_item, ptr %627, i32 0, i32 0
  %629 = load ptr, ptr %628, align 8, !tbaa !56
  %630 = getelementptr inbounds %struct.Expr, ptr %629, i32 0, i32 0
  %631 = load i8, ptr %630, align 8, !tbaa !15
  store i8 %631, ptr %39, align 1, !tbaa !33
  %632 = load i8, ptr %39, align 1, !tbaa !33
  %633 = zext i8 %632 to i32
  %634 = icmp eq i32 %633, 152
  br i1 %634, label %639, label %635

635:                                              ; preds = %623
  %636 = load i8, ptr %39, align 1, !tbaa !33
  %637 = zext i8 %636 to i32
  %638 = icmp eq i32 %637, 154
  br i1 %638, label %639, label %653

639:                                              ; preds = %635, %623
  %640 = load ptr, ptr %31, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.FuncDef, ptr %640, i32 0, i32 1
  %642 = load i16, ptr %641, align 2, !tbaa !54
  %643 = zext i16 %642 to i32
  %644 = and i32 %643, 192
  %645 = trunc i32 %644 to i8
  %646 = load ptr, ptr %29, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.ExprList, ptr %646, i32 0, i32 1
  %648 = load ptr, ptr %647, align 8, !tbaa !55
  %649 = getelementptr inbounds %struct.ExprList_item, ptr %648, i64 0
  %650 = getelementptr inbounds %struct.ExprList_item, ptr %649, i32 0, i32 0
  %651 = load ptr, ptr %650, align 8, !tbaa !56
  %652 = getelementptr inbounds %struct.Expr, ptr %651, i32 0, i32 12
  store i8 %645, ptr %652, align 2, !tbaa !32
  br label %653

653:                                              ; preds = %639, %635
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  br label %654

654:                                              ; preds = %653, %616
  %655 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePush(ptr noundef %655)
  %656 = load ptr, ptr %5, align 8, !tbaa !5
  %657 = load ptr, ptr %29, align 8, !tbaa !5
  %658 = load i32, ptr %13, align 4, !tbaa !9
  %659 = call i32 @sqlite3ExprCodeExprList(ptr noundef %656, ptr noundef %657, i32 noundef %658, i32 noundef 0, i8 noundef zeroext 3)
  %660 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePop(ptr noundef %660)
  br label %662

661:                                              ; preds = %596
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %662

662:                                              ; preds = %661, %654
  %663 = load i32, ptr %30, align 4, !tbaa !9
  %664 = icmp sge i32 %663, 2
  br i1 %664, label %665, label %682

665:                                              ; preds = %662
  %666 = load ptr, ptr %6, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.Expr, ptr %666, i32 0, i32 2
  %668 = load i32, ptr %667, align 4, !tbaa !37
  %669 = and i32 %668, 128
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %682

671:                                              ; preds = %665
  %672 = load ptr, ptr %35, align 8, !tbaa !5
  %673 = load ptr, ptr %31, align 8, !tbaa !5
  %674 = load i32, ptr %30, align 4, !tbaa !9
  %675 = load ptr, ptr %29, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ExprList, ptr %675, i32 0, i32 1
  %677 = load ptr, ptr %676, align 8, !tbaa !55
  %678 = getelementptr inbounds %struct.ExprList_item, ptr %677, i64 1
  %679 = getelementptr inbounds %struct.ExprList_item, ptr %678, i32 0, i32 0
  %680 = load ptr, ptr %679, align 8, !tbaa !56
  %681 = call ptr @sqlite3VtabOverloadFunction(ptr noundef %672, ptr noundef %673, i32 noundef %674, ptr noundef %680)
  store ptr %681, ptr %31, align 8, !tbaa !5
  br label %697

682:                                              ; preds = %665, %662
  %683 = load i32, ptr %30, align 4, !tbaa !9
  %684 = icmp sgt i32 %683, 0
  br i1 %684, label %685, label %696

685:                                              ; preds = %682
  %686 = load ptr, ptr %35, align 8, !tbaa !5
  %687 = load ptr, ptr %31, align 8, !tbaa !5
  %688 = load i32, ptr %30, align 4, !tbaa !9
  %689 = load ptr, ptr %29, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ExprList, ptr %689, i32 0, i32 1
  %691 = load ptr, ptr %690, align 8, !tbaa !55
  %692 = getelementptr inbounds %struct.ExprList_item, ptr %691, i64 0
  %693 = getelementptr inbounds %struct.ExprList_item, ptr %692, i32 0, i32 0
  %694 = load ptr, ptr %693, align 8, !tbaa !56
  %695 = call ptr @sqlite3VtabOverloadFunction(ptr noundef %686, ptr noundef %687, i32 noundef %688, ptr noundef %694)
  store ptr %695, ptr %31, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %685, %682
  br label %697

697:                                              ; preds = %696, %671
  %698 = load ptr, ptr %31, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.FuncDef, ptr %698, i32 0, i32 1
  %700 = load i16, ptr %699, align 2, !tbaa !54
  %701 = zext i16 %700 to i32
  %702 = and i32 %701, 32
  %703 = icmp ne i32 %702, 0
  br i1 %703, label %704, label %715

704:                                              ; preds = %697
  %705 = load ptr, ptr %37, align 8, !tbaa !5
  %706 = icmp ne ptr %705, null
  br i1 %706, label %711, label %707

707:                                              ; preds = %704
  %708 = load ptr, ptr %35, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.sqlite3, ptr %708, i32 0, i32 2
  %710 = load ptr, ptr %709, align 8, !tbaa !62
  store ptr %710, ptr %37, align 8, !tbaa !5
  br label %711

711:                                              ; preds = %707, %704
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = load ptr, ptr %37, align 8, !tbaa !5
  %714 = call i32 @sqlite3VdbeAddOp4(ptr noundef %712, i32 noundef 89, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef %713, i32 noundef -3)
  br label %715

715:                                              ; preds = %711, %697
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = load i32, ptr %33, align 4, !tbaa !9
  %718 = load i32, ptr %13, align 4, !tbaa !9
  %719 = load i32, ptr %7, align 4, !tbaa !9
  %720 = load ptr, ptr %31, align 8, !tbaa !5
  %721 = call i32 @sqlite3VdbeAddOp4(ptr noundef %716, i32 noundef 90, i32 noundef %717, i32 noundef %718, i32 noundef %719, ptr noundef %720, i32 noundef -4)
  %722 = load ptr, ptr %8, align 8, !tbaa !5
  %723 = load i32, ptr %30, align 4, !tbaa !9
  %724 = trunc i32 %723 to i8
  %725 = zext i8 %724 to i16
  call void @sqlite3VdbeChangeP5(ptr noundef %722, i16 noundef zeroext %725)
  %726 = load i32, ptr %30, align 4, !tbaa !9
  %727 = icmp ne i32 %726, 0
  br i1 %727, label %728, label %735

728:                                              ; preds = %715
  %729 = load i32, ptr %33, align 4, !tbaa !9
  %730 = icmp eq i32 %729, 0
  br i1 %730, label %731, label %735

731:                                              ; preds = %728
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = load i32, ptr %13, align 4, !tbaa !9
  %734 = load i32, ptr %30, align 4, !tbaa !9
  call void @sqlite3ReleaseTempRange(ptr noundef %732, i32 noundef %733, i32 noundef %734)
  br label %735

735:                                              ; preds = %731, %728, %715
  %736 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %736, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %737

737:                                              ; preds = %735, %537, %527, %480, %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  %738 = load i32, ptr %17, align 4
  switch i32 %738, label %1031 [
    i32 2, label %1025
  ]

739:                                              ; preds = %71, %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  %740 = load i32, ptr %9, align 4, !tbaa !9
  %741 = icmp eq i32 %740, 119
  br i1 %741, label %742, label %754

742:                                              ; preds = %739
  %743 = load ptr, ptr %6, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.Expr, ptr %743, i32 0, i32 6
  %745 = load ptr, ptr %744, align 8, !tbaa !33
  %746 = getelementptr inbounds %struct.Select, ptr %745, i32 0, i32 0
  %747 = load ptr, ptr %746, align 8, !tbaa !63
  %748 = getelementptr inbounds %struct.ExprList, ptr %747, i32 0, i32 0
  %749 = load i32, ptr %748, align 8, !tbaa !50
  store i32 %749, ptr %40, align 4, !tbaa !9
  %750 = icmp ne i32 %749, 1
  br i1 %750, label %751, label %754

751:                                              ; preds = %742
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = load i32, ptr %40, align 4, !tbaa !9
  call void @sqlite3SubselectError(ptr noundef %752, i32 noundef %753, i32 noundef 1)
  br label %758

754:                                              ; preds = %742, %739
  %755 = load ptr, ptr %5, align 8, !tbaa !5
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  %757 = call i32 @sqlite3CodeSubselect(ptr noundef %755, ptr noundef %756, i32 noundef 0, i32 noundef 0)
  store i32 %757, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %759

758:                                              ; preds = %751
  store i32 2, ptr %17, align 4
  br label %759

759:                                              ; preds = %758, %754
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  %760 = load i32, ptr %17, align 4
  switch i32 %760, label %1031 [
    i32 2, label %1025
  ]

761:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  %762 = load ptr, ptr %6, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.Expr, ptr %762, i32 0, i32 4
  %764 = load ptr, ptr %763, align 8, !tbaa !35
  %765 = getelementptr inbounds %struct.Expr, ptr %764, i32 0, i32 8
  %766 = load i32, ptr %765, align 4, !tbaa !27
  %767 = icmp eq i32 %766, 0
  br i1 %767, label %768, label %778

768:                                              ; preds = %761
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = load ptr, ptr %6, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.Expr, ptr %770, i32 0, i32 4
  %772 = load ptr, ptr %771, align 8, !tbaa !35
  %773 = call i32 @sqlite3CodeSubselect(ptr noundef %769, ptr noundef %772, i32 noundef 0, i32 noundef 0)
  %774 = load ptr, ptr %6, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.Expr, ptr %774, i32 0, i32 4
  %776 = load ptr, ptr %775, align 8, !tbaa !35
  %777 = getelementptr inbounds %struct.Expr, ptr %776, i32 0, i32 8
  store i32 %773, ptr %777, align 4, !tbaa !27
  br label %778

778:                                              ; preds = %768, %761
  %779 = load ptr, ptr %6, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.Expr, ptr %779, i32 0, i32 8
  %781 = load i32, ptr %780, align 4, !tbaa !27
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %798

783:                                              ; preds = %778
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.Expr, ptr %784, i32 0, i32 8
  %786 = load i32, ptr %785, align 4, !tbaa !27
  %787 = load ptr, ptr %6, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.Expr, ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !35
  %790 = call i32 @sqlite3ExprVectorSize(ptr noundef %789)
  store i32 %790, ptr %41, align 4, !tbaa !9
  %791 = icmp ne i32 %786, %790
  br i1 %791, label %792, label %798

792:                                              ; preds = %783
  %793 = load ptr, ptr %5, align 8, !tbaa !5
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.Expr, ptr %794, i32 0, i32 8
  %796 = load i32, ptr %795, align 4, !tbaa !27
  %797 = load i32, ptr %41, align 4, !tbaa !9
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %793, ptr noundef @.str.3, i32 noundef %796, i32 noundef %797)
  br label %798

798:                                              ; preds = %792, %783, %778
  %799 = load ptr, ptr %6, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.Expr, ptr %799, i32 0, i32 4
  %801 = load ptr, ptr %800, align 8, !tbaa !35
  %802 = getelementptr inbounds %struct.Expr, ptr %801, i32 0, i32 8
  %803 = load i32, ptr %802, align 4, !tbaa !27
  %804 = load ptr, ptr %6, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.Expr, ptr %804, i32 0, i32 9
  %806 = load i16, ptr %805, align 8, !tbaa !29
  %807 = sext i16 %806 to i32
  %808 = add nsw i32 %803, %807
  store i32 %808, ptr %4, align 4
  store i32 1, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  br label %1031

809:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  %810 = load ptr, ptr %8, align 8, !tbaa !5
  %811 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %810)
  store i32 %811, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  %812 = load ptr, ptr %8, align 8, !tbaa !5
  %813 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %812)
  store i32 %813, ptr %43, align 4, !tbaa !9
  %814 = load ptr, ptr %8, align 8, !tbaa !5
  %815 = load i32, ptr %7, align 4, !tbaa !9
  %816 = call i32 @sqlite3VdbeAddOp2(ptr noundef %814, i32 noundef 80, i32 noundef 0, i32 noundef %815)
  %817 = load ptr, ptr %5, align 8, !tbaa !5
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = load i32, ptr %42, align 4, !tbaa !9
  %820 = load i32, ptr %43, align 4, !tbaa !9
  call void @sqlite3ExprCodeIN(ptr noundef %817, ptr noundef %818, i32 noundef %819, i32 noundef %820)
  %821 = load ptr, ptr %8, align 8, !tbaa !5
  %822 = load i32, ptr %7, align 4, !tbaa !9
  %823 = call i32 @sqlite3VdbeAddOp2(ptr noundef %821, i32 noundef 77, i32 noundef 1, i32 noundef %822)
  %824 = load ptr, ptr %8, align 8, !tbaa !5
  %825 = load i32, ptr %42, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %824, i32 noundef %825)
  %826 = load ptr, ptr %8, align 8, !tbaa !5
  %827 = load i32, ptr %7, align 4, !tbaa !9
  %828 = call i32 @sqlite3VdbeAddOp2(ptr noundef %826, i32 noundef 92, i32 noundef %827, i32 noundef 0)
  %829 = load ptr, ptr %8, align 8, !tbaa !5
  %830 = load i32, ptr %43, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %829, i32 noundef %830)
  %831 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %831, ptr %4, align 4
  store i32 1, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  br label %1031

832:                                              ; preds = %71
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = load i32, ptr %7, align 4, !tbaa !9
  call void @exprCodeBetween(ptr noundef %833, ptr noundef %834, i32 noundef %835, ptr noundef null, i32 noundef 0)
  %836 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %836, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

837:                                              ; preds = %71, %71, %71
  %838 = load ptr, ptr %5, align 8, !tbaa !5
  %839 = load ptr, ptr %6, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.Expr, ptr %839, i32 0, i32 4
  %841 = load ptr, ptr %840, align 8, !tbaa !35
  %842 = load i32, ptr %7, align 4, !tbaa !9
  %843 = call i32 @sqlite3ExprCodeTarget(ptr noundef %838, ptr noundef %841, i32 noundef %842)
  store i32 %843, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

844:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %845 = load ptr, ptr %6, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.Expr, ptr %845, i32 0, i32 14
  %847 = load ptr, ptr %846, align 8, !tbaa !31
  store ptr %847, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #5
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.Expr, ptr %848, i32 0, i32 8
  %850 = load i32, ptr %849, align 4, !tbaa !27
  %851 = load ptr, ptr %44, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.Table, ptr %851, i32 0, i32 11
  %853 = load i16, ptr %852, align 2, !tbaa !65
  %854 = sext i16 %853 to i32
  %855 = add nsw i32 %854, 1
  %856 = mul nsw i32 %850, %855
  %857 = add nsw i32 %856, 1
  %858 = load ptr, ptr %6, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.Expr, ptr %858, i32 0, i32 9
  %860 = load i16, ptr %859, align 8, !tbaa !29
  %861 = sext i16 %860 to i32
  %862 = add nsw i32 %857, %861
  store i32 %862, ptr %45, align 4, !tbaa !9
  %863 = load ptr, ptr %8, align 8, !tbaa !5
  %864 = load i32, ptr %45, align 4, !tbaa !9
  %865 = load i32, ptr %7, align 4, !tbaa !9
  %866 = call i32 @sqlite3VdbeAddOp2(ptr noundef %863, i32 noundef 144, i32 noundef %864, i32 noundef %865)
  %867 = load ptr, ptr %6, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.Expr, ptr %867, i32 0, i32 9
  %869 = load i16, ptr %868, align 8, !tbaa !29
  %870 = sext i16 %869 to i32
  %871 = icmp sge i32 %870, 0
  br i1 %871, label %872, label %889

872:                                              ; preds = %844
  %873 = load ptr, ptr %44, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.Table, ptr %873, i32 0, i32 1
  %875 = load ptr, ptr %874, align 8, !tbaa !67
  %876 = load ptr, ptr %6, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.Expr, ptr %876, i32 0, i32 9
  %878 = load i16, ptr %877, align 8, !tbaa !29
  %879 = sext i16 %878 to i64
  %880 = getelementptr inbounds %struct.Column, ptr %875, i64 %879
  %881 = getelementptr inbounds %struct.Column, ptr %880, i32 0, i32 4
  %882 = load i8, ptr %881, align 1, !tbaa !68
  %883 = sext i8 %882 to i32
  %884 = icmp eq i32 %883, 69
  br i1 %884, label %885, label %889

885:                                              ; preds = %872
  %886 = load ptr, ptr %8, align 8, !tbaa !5
  %887 = load i32, ptr %7, align 4, !tbaa !9
  %888 = call i32 @sqlite3VdbeAddOp1(ptr noundef %886, i32 noundef 93, i32 noundef %887)
  br label %889

889:                                              ; preds = %885, %872, %844
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %1025

890:                                              ; preds = %71
  %891 = load ptr, ptr %5, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %891, ptr noundef @.str.10)
  br label %1025

892:                                              ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  store ptr null, ptr %54, align 8, !tbaa !5
  %893 = load ptr, ptr %6, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.Expr, ptr %893, i32 0, i32 6
  %895 = load ptr, ptr %894, align 8, !tbaa !33
  store ptr %895, ptr %50, align 8, !tbaa !5
  %896 = load ptr, ptr %50, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.ExprList, ptr %896, i32 0, i32 1
  %898 = load ptr, ptr %897, align 8, !tbaa !55
  store ptr %898, ptr %51, align 8, !tbaa !5
  %899 = load ptr, ptr %50, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.ExprList, ptr %899, i32 0, i32 0
  %901 = load i32, ptr %900, align 8, !tbaa !50
  store i32 %901, ptr %48, align 4, !tbaa !9
  %902 = load ptr, ptr %8, align 8, !tbaa !5
  %903 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %902)
  store i32 %903, ptr %46, align 4, !tbaa !9
  %904 = load ptr, ptr %6, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.Expr, ptr %904, i32 0, i32 4
  %906 = load ptr, ptr %905, align 8, !tbaa !35
  store ptr %906, ptr %53, align 8, !tbaa !5
  %907 = icmp ne ptr %906, null
  br i1 %907, label %908, label %914

908:                                              ; preds = %892
  %909 = load ptr, ptr %53, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %909, i64 72, i1 false), !tbaa.struct !70
  %910 = load ptr, ptr %5, align 8, !tbaa !5
  %911 = call i32 @exprCodeVector(ptr noundef %910, ptr noundef %15, ptr noundef %11)
  call void @exprToRegister(ptr noundef %15, i32 noundef %911)
  call void @llvm.memset.p0.i64(ptr align 8 %52, i8 0, i64 72, i1 false)
  %912 = getelementptr inbounds %struct.Expr, ptr %52, i32 0, i32 0
  store i8 37, ptr %912, align 8, !tbaa !15
  %913 = getelementptr inbounds %struct.Expr, ptr %52, i32 0, i32 4
  store ptr %15, ptr %913, align 8, !tbaa !35
  store ptr %52, ptr %54, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %914

914:                                              ; preds = %908, %892
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %915

915:                                              ; preds = %960, %914
  %916 = load i32, ptr %49, align 4, !tbaa !9
  %917 = load i32, ptr %48, align 4, !tbaa !9
  %918 = sub nsw i32 %917, 1
  %919 = icmp slt i32 %916, %918
  br i1 %919, label %920, label %963

920:                                              ; preds = %915
  %921 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePush(ptr noundef %921)
  %922 = load ptr, ptr %53, align 8, !tbaa !5
  %923 = icmp ne ptr %922, null
  br i1 %923, label %924, label %932

924:                                              ; preds = %920
  %925 = load ptr, ptr %51, align 8, !tbaa !5
  %926 = load i32, ptr %49, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.ExprList_item, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.ExprList_item, ptr %928, i32 0, i32 0
  %930 = load ptr, ptr %929, align 8, !tbaa !56
  %931 = getelementptr inbounds %struct.Expr, ptr %52, i32 0, i32 5
  store ptr %930, ptr %931, align 8, !tbaa !36
  br label %939

932:                                              ; preds = %920
  %933 = load ptr, ptr %51, align 8, !tbaa !5
  %934 = load i32, ptr %49, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds %struct.ExprList_item, ptr %933, i64 %935
  %937 = getelementptr inbounds %struct.ExprList_item, ptr %936, i32 0, i32 0
  %938 = load ptr, ptr %937, align 8, !tbaa !56
  store ptr %938, ptr %54, align 8, !tbaa !5
  br label %939

939:                                              ; preds = %932, %924
  %940 = load ptr, ptr %8, align 8, !tbaa !5
  %941 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %940)
  store i32 %941, ptr %47, align 4, !tbaa !9
  %942 = load ptr, ptr %5, align 8, !tbaa !5
  %943 = load ptr, ptr %54, align 8, !tbaa !5
  %944 = load i32, ptr %47, align 4, !tbaa !9
  call void @sqlite3ExprIfFalse(ptr noundef %942, ptr noundef %943, i32 noundef %944, i32 noundef 16)
  %945 = load ptr, ptr %5, align 8, !tbaa !5
  %946 = load ptr, ptr %51, align 8, !tbaa !5
  %947 = load i32, ptr %49, align 4, !tbaa !9
  %948 = add nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds %struct.ExprList_item, ptr %946, i64 %949
  %951 = getelementptr inbounds %struct.ExprList_item, ptr %950, i32 0, i32 0
  %952 = load ptr, ptr %951, align 8, !tbaa !56
  %953 = load i32, ptr %7, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %945, ptr noundef %952, i32 noundef %953)
  %954 = load ptr, ptr %8, align 8, !tbaa !5
  %955 = load i32, ptr %46, align 4, !tbaa !9
  %956 = call i32 @sqlite3VdbeGoto(ptr noundef %954, i32 noundef %955)
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePop(ptr noundef %957)
  %958 = load ptr, ptr %8, align 8, !tbaa !5
  %959 = load i32, ptr %47, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %958, i32 noundef %959)
  br label %960

960:                                              ; preds = %939
  %961 = load i32, ptr %49, align 4, !tbaa !9
  %962 = add nsw i32 %961, 2
  store i32 %962, ptr %49, align 4, !tbaa !9
  br label %915, !llvm.loop !72

963:                                              ; preds = %915
  %964 = load i32, ptr %48, align 4, !tbaa !9
  %965 = and i32 %964, 1
  %966 = icmp ne i32 %965, 0
  br i1 %966, label %967, label %981

967:                                              ; preds = %963
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePush(ptr noundef %968)
  %969 = load ptr, ptr %5, align 8, !tbaa !5
  %970 = load ptr, ptr %50, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.ExprList, ptr %970, i32 0, i32 1
  %972 = load ptr, ptr %971, align 8, !tbaa !55
  %973 = load i32, ptr %48, align 4, !tbaa !9
  %974 = sub nsw i32 %973, 1
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds %struct.ExprList_item, ptr %972, i64 %975
  %977 = getelementptr inbounds %struct.ExprList_item, ptr %976, i32 0, i32 0
  %978 = load ptr, ptr %977, align 8, !tbaa !56
  %979 = load i32, ptr %7, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %969, ptr noundef %978, i32 noundef %979)
  %980 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3ExprCachePop(ptr noundef %980)
  br label %985

981:                                              ; preds = %963
  %982 = load ptr, ptr %8, align 8, !tbaa !5
  %983 = load i32, ptr %7, align 4, !tbaa !9
  %984 = call i32 @sqlite3VdbeAddOp2(ptr noundef %982, i32 noundef 80, i32 noundef 0, i32 noundef %983)
  br label %985

985:                                              ; preds = %981, %967
  %986 = load ptr, ptr %8, align 8, !tbaa !5
  %987 = load i32, ptr %46, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %986, i32 noundef %987)
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  br label %1025

988:                                              ; preds = %71
  %989 = load ptr, ptr %5, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.Parse, ptr %989, i32 0, i32 38
  %991 = load ptr, ptr %990, align 8, !tbaa !73
  %992 = icmp ne ptr %991, null
  br i1 %992, label %995, label %993

993:                                              ; preds = %988
  %994 = load ptr, ptr %5, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %994, ptr noundef @.str.18)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

995:                                              ; preds = %988
  %996 = load ptr, ptr %6, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.Expr, ptr %996, i32 0, i32 1
  %998 = load i8, ptr %997, align 1, !tbaa !74
  %999 = sext i8 %998 to i32
  %1000 = icmp eq i32 %999, 2
  br i1 %1000, label %1001, label %1003

1001:                                             ; preds = %995
  %1002 = load ptr, ptr %5, align 8, !tbaa !5
  call void @sqlite3MayAbort(ptr noundef %1002)
  br label %1003

1003:                                             ; preds = %1001, %995
  %1004 = load ptr, ptr %6, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.Expr, ptr %1004, i32 0, i32 1
  %1006 = load i8, ptr %1005, align 1, !tbaa !74
  %1007 = sext i8 %1006 to i32
  %1008 = icmp eq i32 %1007, 4
  br i1 %1008, label %1009, label %1015

1009:                                             ; preds = %1003
  %1010 = load ptr, ptr %8, align 8, !tbaa !5
  %1011 = load ptr, ptr %6, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.Expr, ptr %1011, i32 0, i32 3
  %1013 = load ptr, ptr %1012, align 8, !tbaa !33
  %1014 = call i32 @sqlite3VdbeAddOp4(ptr noundef %1010, i32 noundef 76, i32 noundef 0, i32 noundef 4, i32 noundef 0, ptr noundef %1013, i32 noundef 0)
  br label %1024

1015:                                             ; preds = %1003
  %1016 = load ptr, ptr %5, align 8, !tbaa !5
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.Expr, ptr %1017, i32 0, i32 1
  %1019 = load i8, ptr %1018, align 1, !tbaa !74
  %1020 = sext i8 %1019 to i32
  %1021 = load ptr, ptr %6, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.Expr, ptr %1021, i32 0, i32 3
  %1023 = load ptr, ptr %1022, align 8, !tbaa !33
  call void @sqlite3HaltConstraint(ptr noundef %1016, i32 noundef 1811, i32 noundef %1020, ptr noundef %1023, i8 noundef signext 0, i8 noundef zeroext 0)
  br label %1024

1024:                                             ; preds = %1015, %1009
  br label %1025

1025:                                             ; preds = %1024, %985, %890, %889, %759, %737, %422, %381, %370, %368, %306, %305
  %1026 = load ptr, ptr %5, align 8, !tbaa !5
  %1027 = load i32, ptr %11, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %1026, i32 noundef %1027)
  %1028 = load ptr, ptr %5, align 8, !tbaa !5
  %1029 = load i32, ptr %12, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %1028, i32 noundef %1029)
  %1030 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1030, ptr %4, align 4
  store i32 1, ptr %17, align 4
  br label %1031

1031:                                             ; preds = %1025, %993, %837, %832, %809, %798, %759, %737, %422, %368, %252, %232, %230, %180, %175, %167, %160, %155, %154, %111, %61
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %1032 = load i32, ptr %4, align 4
  ret i32 %1032
}

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3ExprCachePop(ptr noundef) #2

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeGetColumn(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #2

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

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

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

declare i32 @sqlite3VdbeLoadString(ptr noundef, i32 noundef, ptr noundef) #1

declare ptr @sqlite3HexToBlob(ptr noundef, ptr noundef, i32 noundef) #1

declare ptr @sqlite3VdbeDb(ptr noundef) #1

declare void @sqlite3VdbeAppendP4(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @codeVectorCompare(ptr noundef, ptr noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeTemp(ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeAtInit(ptr noundef, ptr noundef, i32 noundef) #2

declare ptr @sqlite3FindFunction(ptr noundef, ptr noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) #1

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3GetTempRange(ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #2

declare ptr @sqlite3VtabOverloadFunction(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

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

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

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

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

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

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

declare void @sqlite3MayAbort(ptr noundef) #1

declare void @sqlite3HaltConstraint(ptr noundef, i32 noundef, i32 noundef, ptr noundef, i8 noundef signext, i8 noundef zeroext) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !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, !6, i64 16}
!12 = !{!"Parse", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 30, !7, i64 31, !7, i64 32, !7, i64 33, !7, i64 34, !7, i64 35, !7, i64 36, !7, i64 37, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !6, i64 88, !6, i64 96, !13, i64 104, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !7, i64 192, !7, i64 193, !7, i64 194, !7, i64 196, !7, i64 396, !13, i64 432, !13, i64 448, !14, i64 464, !7, i64 466, !7, i64 467, !7, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !13, i64 536, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584}
!13 = !{!"Token", !6, i64 0, !10, i64 8}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !7, i64 0}
!16 = !{!"Expr", !7, i64 0, !7, i64 1, !10, i64 4, !7, i64 8, !6, i64 16, !6, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !14, i64 48, !14, i64 50, !14, i64 52, !7, i64 54, !6, i64 56, !6, i64 64}
!17 = !{!16, !6, i64 56}
!18 = !{!19, !6, i64 32}
!19 = !{!"AggInfo", !7, i64 0, !7, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !6, i64 48, !10, i64 56}
!20 = !{!16, !14, i64 50}
!21 = !{!19, !7, i64 0}
!22 = !{!23, !10, i64 20}
!23 = !{!"AggInfo_col", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24}
!24 = !{!19, !7, i64 1}
!25 = !{!19, !10, i64 8}
!26 = !{!23, !10, i64 16}
!27 = !{!16, !10, i64 44}
!28 = !{!12, !10, i64 68}
!29 = !{!16, !14, i64 48}
!30 = !{!12, !10, i64 72}
!31 = !{!16, !6, i64 64}
!32 = !{!16, !7, i64 54}
!33 = !{!7, !7, i64 0}
!34 = !{!12, !6, i64 488}
!35 = !{!16, !6, i64 16}
!36 = !{!16, !6, i64 24}
!37 = !{!16, !10, i64 4}
!38 = !{!19, !6, i64 48}
!39 = !{!40, !10, i64 16}
!40 = !{!"AggInfo_func", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20}
!41 = !{!12, !6, i64 0}
!42 = !{!43, !7, i64 82}
!43 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !44, i64 48, !44, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !14, i64 80, !7, i64 82, !7, i64 83, !7, i64 84, !7, i64 85, !7, i64 86, !7, i64 87, !7, i64 88, !7, i64 89, !7, i64 90, !7, i64 91, !7, i64 92, !7, i64 93, !7, i64 94, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !7, i64 112, !10, i64 160, !45, 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, !46, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !47, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !47, i64 488, !47, i64 512, !48, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !44, i64 648, !44, i64 656, !6, i64 664}
!44 = !{!"long long", !7, i64 0}
!45 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!46 = !{!"Lookaside", !10, i64 0, !14, i64 4, !7, i64 6, !10, i64 8, !10, i64 12, !7, i64 16, !6, i64 32, !6, i64 40, !6, i64 48}
!47 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!48 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!49 = !{!12, !7, i64 35}
!50 = !{!51, !10, i64 0}
!51 = !{!"ExprList", !10, i64 0, !6, i64 8}
!52 = !{!53, !6, i64 32}
!53 = !{!"FuncDef", !7, i64 0, !14, i64 2, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48}
!54 = !{!53, !14, i64 2}
!55 = !{!51, !6, i64 8}
!56 = !{!57, !6, i64 0}
!57 = !{!"ExprList_item", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !10, i64 25, !10, i64 25, !10, i64 25, !7, i64 28}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.mustprogress"}
!60 = distinct !{!60, !59}
!61 = !{!12, !10, i64 56}
!62 = !{!43, !6, i64 16}
!63 = !{!64, !6, i64 0}
!64 = !{!"Select", !6, i64 0, !7, i64 8, !14, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104}
!65 = !{!66, !14, i64 70}
!66 = !{!"Table", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !14, i64 68, !14, i64 70, !14, i64 72, !14, i64 74, !7, i64 76, !10, i64 80, !10, i64 84, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!67 = !{!66, !6, i64 8}
!68 = !{!69, !7, i64 25}
!69 = !{!"Column", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!70 = !{i64 0, i64 1, !33, i64 1, i64 1, !33, i64 4, i64 4, !9, i64 8, i64 8, !33, i64 16, i64 8, !5, i64 24, i64 8, !5, i64 32, i64 8, !33, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 2, !71, i64 50, i64 2, !71, i64 52, i64 2, !71, i64 54, i64 1, !33, i64 56, i64 8, !5, i64 64, i64 8, !5}
!71 = !{!14, !14, i64 0}
!72 = distinct !{!72, !59}
!73 = !{!12, !6, i64 168}
!74 = !{!16, !7, i64 1}


; 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, ptr, ptr, %union.anon.0, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon = type { ptr }
%union.anon.0 = type { ptr }
%struct.AggInfo_col = type { ptr, i32, i32, i32, i32, ptr }
%struct.AggInfo_func = type { ptr, ptr, i32, i32 }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.1 }
%union.anon.1 = type { i32 }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }

@.str.3 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [50 x i8], align 1

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

declare signext i8 @sqlite3AffinityType(ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @sqlite3ExprCollSeq(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsVector(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprVectorSize(ptr noundef) local_unnamed_addr #2

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

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

; 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) #4

declare i32 @sqlite3Strlen30(ptr noundef) local_unnamed_addr #1

declare ptr @sqlite3VListNumToName(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsConstant(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprIsConstantNotJoin(ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3CodeSubselect(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3ExprCachePush(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3ExprCodeTarget(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #2 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %struct.Expr, align 8
  %7 = alloca %struct.Expr, align 8
  %8 = getelementptr inbounds i8, ptr %0, i64 16
  %9 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  store i32 0, ptr %4, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  store i32 0, ptr %5, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6) #5
  %10 = icmp eq ptr %9, null
  br i1 %10, label %.critedge, label %11

11:                                               ; preds = %3
  %12 = icmp eq ptr %1, null
  br i1 %12, label %.thread, label %13

13:                                               ; preds = %11
  %14 = load i8, ptr %1, align 8, !tbaa !14
  %15 = zext i8 %14 to i32
  switch i8 %14, label %381 [
    i8 -102, label %16
    i8 -104, label %38
    i8 -122, label %63
    i8 -124, label %64
    i8 97, label %67
    i8 101, label %.thread
    i8 -123, label %72
    i8 -121, label %82
    i8 -99, label %98
    i8 66, label %101
    i8 29, label %113
    i8 -108, label %113
    i8 40, label %116
    i8 39, label %116
    i8 38, label %116
    i8 41, label %116
    i8 36, label %116
    i8 37, label %116
    i8 28, label %131
    i8 27, label %131
    i8 47, label %131
    i8 49, label %131
    i8 48, label %131
    i8 51, label %131
    i8 43, label %131
    i8 44, label %131
    i8 50, label %131
    i8 45, label %131
    i8 46, label %131
    i8 52, label %131
    i8 -101, label %139
    i8 54, label %154
    i8 19, label %154
    i8 34, label %159
    i8 35, label %159
    i8 -103, label %166
    i8 -105, label %180
    i8 83, label %426
    i8 -98, label %380
    i8 -97, label %316
    i8 33, label %342
    i8 32, label %348
    i8 -95, label %349
    i8 53, label %349
    i8 -100, label %349
    i8 88, label %353
    i8 119, label %309
    i8 20, label %314
  ]

16:                                               ; preds = %13
  %17 = getelementptr inbounds i8, ptr %1, i64 56
  %18 = load ptr, ptr %17, align 8, !tbaa !16
  %19 = getelementptr inbounds i8, ptr %18, i64 32
  %20 = load ptr, ptr %19, align 8, !tbaa !17
  %21 = getelementptr inbounds i8, ptr %1, i64 50
  %22 = load i16, ptr %21, align 2, !tbaa !19
  %23 = sext i16 %22 to i64
  %24 = getelementptr inbounds %struct.AggInfo_col, ptr %20, i64 %23
  %25 = load i8, ptr %18, align 8, !tbaa !20
  %.not439 = icmp eq i8 %25, 0
  br i1 %.not439, label %26, label %29

26:                                               ; preds = %16
  %27 = getelementptr inbounds i8, ptr %24, i64 20
  %28 = load i32, ptr %27, align 4, !tbaa !21
  br label %.critedge

29:                                               ; preds = %16
  %30 = getelementptr inbounds i8, ptr %18, i64 1
  %31 = load i8, ptr %30, align 1, !tbaa !23
  %.not440 = icmp eq i8 %31, 0
  br i1 %.not440, label %38, label %32

32:                                               ; preds = %29
  %33 = getelementptr inbounds i8, ptr %18, i64 8
  %34 = load i32, ptr %33, align 8, !tbaa !24
  %35 = getelementptr inbounds i8, ptr %24, i64 16
  %36 = load i32, ptr %35, align 8, !tbaa !25
  %37 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef nonnull %9, i32 noundef 98, i32 noundef %34, i32 noundef %36, i32 noundef %2) #5
  br label %.critedge

38:                                               ; preds = %13, %29
  %39 = getelementptr inbounds i8, ptr %1, i64 44
  %40 = load i32, ptr %39, align 4, !tbaa !26
  %41 = icmp slt i32 %40, 0
  br i1 %41, label %42, label %54

42:                                               ; preds = %38
  %43 = getelementptr inbounds i8, ptr %0, i64 68
  %44 = load i32, ptr %43, align 4, !tbaa !27
  %45 = icmp sgt i32 %44, 0
  br i1 %45, label %46, label %51

46:                                               ; preds = %42
  %47 = getelementptr inbounds i8, ptr %1, i64 48
  %48 = load i16, ptr %47, align 8, !tbaa !28
  %49 = sext i16 %48 to i32
  %50 = add nsw i32 %44, %49
  br label %.critedge

51:                                               ; preds = %42
  %52 = getelementptr inbounds i8, ptr %0, i64 72
  %53 = load i32, ptr %52, align 8, !tbaa !29
  br label %54

54:                                               ; preds = %51, %38
  %.0392 = phi i32 [ %53, %51 ], [ %40, %38 ]
  %55 = getelementptr inbounds i8, ptr %1, i64 64
  %56 = load ptr, ptr %55, align 8, !tbaa !30
  %57 = getelementptr inbounds i8, ptr %1, i64 48
  %58 = load i16, ptr %57, align 8, !tbaa !28
  %59 = sext i16 %58 to i32
  %60 = getelementptr inbounds i8, ptr %1, i64 54
  %61 = load i8, ptr %60, align 2, !tbaa !31
  %62 = tail call i32 @sqlite3ExprCodeGetColumn(ptr noundef nonnull %0, ptr noundef %56, i32 noundef %59, i32 noundef %.0392, i32 noundef %2, i8 noundef zeroext %61)
  br label %.critedge

63:                                               ; preds = %13
  tail call void @codeInteger(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef 0, i32 noundef %2)
  br label %.critedge

64:                                               ; preds = %13
  %65 = getelementptr inbounds i8, ptr %1, i64 8
  %66 = load ptr, ptr %65, align 8, !tbaa !32
  tail call void @codeReal(ptr noundef nonnull %9, ptr noundef %66, i32 noundef 0, i32 noundef %2)
  br label %.critedge

67:                                               ; preds = %13
  %68 = getelementptr inbounds i8, ptr %1, i64 8
  %69 = load ptr, ptr %68, align 8, !tbaa !32
  %70 = tail call i32 @sqlite3VdbeLoadString(ptr noundef nonnull %9, i32 noundef %2, ptr noundef %69) #5
  br label %.critedge

.thread:                                          ; preds = %13, %11
  %71 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 80, i32 noundef 0, i32 noundef %2) #5
  br label %.critedge

72:                                               ; preds = %13
  %73 = getelementptr inbounds i8, ptr %1, i64 8
  %74 = load ptr, ptr %73, align 8, !tbaa !32
  %75 = getelementptr inbounds i8, ptr %74, i64 2
  %76 = tail call i32 @sqlite3Strlen30(ptr noundef nonnull %75) #5
  %77 = add nsw i32 %76, -1
  %78 = tail call ptr @sqlite3VdbeDb(ptr noundef nonnull %9) #5
  %79 = tail call ptr @sqlite3HexToBlob(ptr noundef %78, ptr noundef nonnull %75, i32 noundef %77) #5
  %80 = sdiv i32 %77, 2
  %81 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef nonnull %9, i32 noundef 82, i32 noundef %80, i32 noundef %2, i32 noundef 0, ptr noundef %79, i32 noundef -1) #5
  br label %.critedge

82:                                               ; preds = %13
  %83 = getelementptr inbounds i8, ptr %1, i64 48
  %84 = load i16, ptr %83, align 8, !tbaa !28
  %85 = sext i16 %84 to i32
  %86 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 83, i32 noundef %85, i32 noundef %2) #5
  %87 = getelementptr inbounds i8, ptr %1, i64 8
  %88 = load ptr, ptr %87, align 8, !tbaa !32
  %89 = getelementptr inbounds i8, ptr %88, i64 1
  %90 = load i8, ptr %89, align 1, !tbaa !32
  %.not438 = icmp eq i8 %90, 0
  br i1 %.not438, label %.critedge, label %91

91:                                               ; preds = %82
  %92 = getelementptr inbounds i8, ptr %0, i64 488
  %93 = load ptr, ptr %92, align 8, !tbaa !33
  %94 = load i16, ptr %83, align 8, !tbaa !28
  %95 = sext i16 %94 to i32
  %96 = tail call ptr @sqlite3VListNumToName(ptr noundef %93, i32 noundef %95) #5
  %97 = load ptr, ptr %92, align 8, !tbaa !33
  store i32 0, ptr %97, align 4, !tbaa !13
  tail call void @sqlite3VdbeAppendP4(ptr noundef nonnull %9, ptr noundef %96, i32 noundef -2) #5
  br label %.critedge

98:                                               ; preds = %13
  %99 = getelementptr inbounds i8, ptr %1, i64 44
  %100 = load i32, ptr %99, align 4, !tbaa !26
  br label %.critedge

101:                                              ; preds = %13
  %102 = getelementptr inbounds i8, ptr %1, i64 16
  %103 = load ptr, ptr %102, align 8, !tbaa !34
  %104 = tail call i32 @sqlite3ExprCodeTarget(ptr noundef nonnull %0, ptr noundef %103, i32 noundef %2)
  %.not437 = icmp eq i32 %104, %2
  br i1 %.not437, label %107, label %105

105:                                              ; preds = %101
  %106 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 86, i32 noundef %104, i32 noundef %2) #5
  br label %107

107:                                              ; preds = %105, %101
  %108 = getelementptr inbounds i8, ptr %1, i64 8
  %109 = load ptr, ptr %108, align 8, !tbaa !32
  %110 = tail call signext i8 @sqlite3AffinityType(ptr noundef %109, ptr noundef null) #5
  %111 = sext i8 %110 to i32
  %112 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 94, i32 noundef %2, i32 noundef %111) #5
  tail call void @sqlite3ExprCacheAffinityChange(ptr noundef nonnull %0, i32 noundef %2, i32 noundef 1)
  br label %.critedge

113:                                              ; preds = %13, %13
  %114 = icmp eq i8 %14, 29
  %115 = select i1 %114, i32 37, i32 36
  br label %116

116:                                              ; preds = %13, %13, %13, %13, %13, %13, %113
  %.0386 = phi i32 [ 0, %13 ], [ 0, %13 ], [ 0, %13 ], [ 0, %13 ], [ 0, %13 ], [ 0, %13 ], [ 128, %113 ]
  %.1381 = phi i32 [ %15, %13 ], [ %15, %13 ], [ %15, %13 ], [ %15, %13 ], [ %15, %13 ], [ %15, %13 ], [ %115, %113 ]
  %117 = getelementptr inbounds i8, ptr %1, i64 16
  %118 = load ptr, ptr %117, align 8, !tbaa !34
  %119 = tail call i32 @sqlite3ExprIsVector(ptr noundef %118)
  %.not436 = icmp eq i32 %119, 0
  br i1 %.not436, label %123, label %120

120:                                              ; preds = %116
  %121 = trunc nuw i32 %.1381 to i8
  %122 = trunc nuw i32 %.0386 to i8
  tail call void @codeVectorCompare(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %2, i8 noundef zeroext %121, i8 noundef zeroext %122)
  br label %446

123:                                              ; preds = %116
  %124 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %118, ptr noundef nonnull %4)
  %125 = getelementptr inbounds i8, ptr %1, i64 24
  %126 = load ptr, ptr %125, align 8, !tbaa !35
  %127 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %126, ptr noundef nonnull %5)
  %128 = load ptr, ptr %125, align 8, !tbaa !35
  %129 = or disjoint i32 %.0386, 32
  %130 = call i32 @codeCompare(ptr noundef nonnull %0, ptr noundef %118, ptr noundef %128, i32 noundef %.1381, i32 noundef %124, i32 noundef %127, i32 noundef %2, i32 noundef %129)
  br label %446

131:                                              ; preds = %13, %13, %13, %13, %13, %13, %13, %13, %13, %13, %13, %13
  %132 = getelementptr inbounds i8, ptr %1, i64 16
  %133 = load ptr, ptr %132, align 8, !tbaa !34
  %134 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %133, ptr noundef nonnull %4)
  %135 = getelementptr inbounds i8, ptr %1, i64 24
  %136 = load ptr, ptr %135, align 8, !tbaa !35
  %137 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %136, ptr noundef nonnull %5)
  %138 = call i32 @sqlite3VdbeAddOp3(ptr noundef nonnull %9, i32 noundef %15, i32 noundef %137, i32 noundef %134, i32 noundef %2) #5
  br label %446

139:                                              ; preds = %13
  %140 = getelementptr inbounds i8, ptr %1, i64 16
  %141 = load ptr, ptr %140, align 8, !tbaa !34
  %142 = load i8, ptr %141, align 8, !tbaa !14
  switch i8 %142, label %147 [
    i8 -122, label %143
    i8 -124, label %144
  ]

143:                                              ; preds = %139
  tail call void @codeInteger(ptr noundef nonnull %0, ptr noundef nonnull %141, i32 noundef 1, i32 noundef %2)
  br label %.critedge

144:                                              ; preds = %139
  %145 = getelementptr inbounds i8, ptr %141, i64 8
  %146 = load ptr, ptr %145, align 8, !tbaa !32
  tail call void @codeReal(ptr noundef nonnull %9, ptr noundef %146, i32 noundef 1, i32 noundef %2)
  br label %.critedge

147:                                              ; preds = %139
  store i8 -122, ptr %6, align 8, !tbaa !14
  %148 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 17408, ptr %148, align 4, !tbaa !36
  %149 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 0, ptr %149, align 8, !tbaa !32
  %150 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef nonnull %6, ptr noundef nonnull %4)
  %151 = load ptr, ptr %140, align 8, !tbaa !34
  %152 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %151, ptr noundef nonnull %5)
  %153 = call i32 @sqlite3VdbeAddOp3(ptr noundef nonnull %9, i32 noundef 48, i32 noundef %152, i32 noundef %150, i32 noundef %2) #5
  br label %446

154:                                              ; preds = %13, %13
  %155 = getelementptr inbounds i8, ptr %1, i64 16
  %156 = load ptr, ptr %155, align 8, !tbaa !34
  %157 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %156, ptr noundef nonnull %4)
  %158 = call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef %15, i32 noundef %157, i32 noundef %2) #5
  br label %446

159:                                              ; preds = %13, %13
  %160 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 77, i32 noundef 1, i32 noundef %2) #5
  %161 = getelementptr inbounds i8, ptr %1, i64 16
  %162 = load ptr, ptr %161, align 8, !tbaa !34
  %163 = call i32 @sqlite3ExprCodeTemp(ptr noundef nonnull %0, ptr noundef %162, ptr noundef nonnull %4)
  %164 = call i32 @sqlite3VdbeAddOp1(ptr noundef nonnull %9, i32 noundef %15, i32 noundef %163) #5
  %165 = call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 77, i32 noundef 0, i32 noundef %2) #5
  call void @sqlite3VdbeJumpHere(ptr noundef nonnull %9, i32 noundef %164) #5
  br label %446

166:                                              ; preds = %13
  %167 = getelementptr inbounds i8, ptr %1, i64 56
  %168 = load ptr, ptr %167, align 8, !tbaa !16
  %169 = icmp eq ptr %168, null
  br i1 %169, label %.thread448, label %172

.thread448:                                       ; preds = %166
  %170 = getelementptr inbounds i8, ptr %1, i64 8
  %171 = load ptr, ptr %170, align 8, !tbaa !32
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.16, ptr noundef %171) #5
  br label %446

172:                                              ; preds = %166
  %173 = getelementptr inbounds i8, ptr %168, i64 48
  %174 = load ptr, ptr %173, align 8, !tbaa !37
  %175 = getelementptr inbounds i8, ptr %1, i64 50
  %176 = load i16, ptr %175, align 2, !tbaa !19
  %177 = sext i16 %176 to i64
  %178 = getelementptr inbounds %struct.AggInfo_func, ptr %174, i64 %177, i32 2
  %179 = load i32, ptr %178, align 8, !tbaa !38
  br label %.critedge

180:                                              ; preds = %13
  %181 = load ptr, ptr %0, align 8, !tbaa !40
  %182 = getelementptr inbounds i8, ptr %181, i64 82
  %183 = load i8, ptr %182, align 2, !tbaa !41
  %184 = getelementptr inbounds i8, ptr %0, i64 35
  %185 = load i8, ptr %184, align 1, !tbaa !48
  %.not423 = icmp eq i8 %185, 0
  br i1 %.not423, label %190, label %186

186:                                              ; preds = %180
  %187 = tail call i32 @sqlite3ExprIsConstantNotJoin(ptr noundef nonnull %1)
  %.not424 = icmp eq i32 %187, 0
  br i1 %.not424, label %190, label %188

188:                                              ; preds = %186
  %189 = tail call i32 @sqlite3ExprCodeAtInit(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef -1)
  br label %.critedge

190:                                              ; preds = %186, %180
  %191 = getelementptr inbounds i8, ptr %1, i64 4
  %192 = load i32, ptr %191, align 4, !tbaa !36
  %193 = and i32 %192, 16384
  %.not425 = icmp eq i32 %193, 0
  br i1 %.not425, label %194, label %.thread450

194:                                              ; preds = %190
  %195 = getelementptr inbounds i8, ptr %1, i64 32
  %196 = load ptr, ptr %195, align 8, !tbaa !32
  %.not426 = icmp eq ptr %196, null
  br i1 %.not426, label %.thread450, label %197

197:                                              ; preds = %194
  %198 = load i32, ptr %196, align 8, !tbaa !49
  br label %.thread450

.thread450:                                       ; preds = %190, %194, %197
  %.not426454 = phi i1 [ false, %197 ], [ true, %194 ], [ true, %190 ]
  %.0393453 = phi ptr [ %196, %197 ], [ null, %194 ], [ null, %190 ]
  %199 = phi i32 [ %198, %197 ], [ 0, %194 ], [ 0, %190 ]
  %200 = getelementptr inbounds i8, ptr %1, i64 8
  %201 = load ptr, ptr %200, align 8, !tbaa !32
  %202 = tail call ptr @sqlite3FindFunction(ptr noundef nonnull %181, ptr noundef %201, i32 noundef %199, i8 noundef zeroext %183, i8 noundef zeroext 0) #5
  %203 = icmp eq ptr %202, null
  br i1 %203, label %207, label %204

204:                                              ; preds = %.thread450
  %205 = getelementptr inbounds i8, ptr %202, i64 32
  %206 = load ptr, ptr %205, align 8, !tbaa !51
  %.not427 = icmp eq ptr %206, null
  br i1 %.not427, label %208, label %207

207:                                              ; preds = %204, %.thread450
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.17, ptr noundef %201) #5
  br label %446

208:                                              ; preds = %204
  %209 = getelementptr inbounds i8, ptr %202, i64 2
  %210 = load i16, ptr %209, align 2, !tbaa !53
  %211 = zext i16 %210 to i32
  %212 = and i32 %211, 512
  %.not428 = icmp eq i32 %212, 0
  br i1 %.not428, label %223, label %213

213:                                              ; preds = %208
  %214 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef nonnull %9) #5
  %215 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %216 = load ptr, ptr %215, align 8, !tbaa !54
  %217 = load ptr, ptr %216, align 8, !tbaa !55
  tail call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %217, i32 noundef %2)
  %218 = icmp sgt i32 %199, 1
  br i1 %218, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %213
  %wide.trip.count = zext nneg i32 %199 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %219 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 35, i32 noundef %2, i32 noundef %214) #5
  tail call void @sqlite3ExprCacheRemove(ptr noundef nonnull %0, i32 noundef %2, i32 noundef 1)
  tail call void @sqlite3ExprCachePush(ptr noundef nonnull %0)
  %220 = load ptr, ptr %215, align 8, !tbaa !54
  %221 = getelementptr inbounds %struct.ExprList_item, ptr %220, i64 %indvars.iv
  %222 = load ptr, ptr %221, align 8, !tbaa !55
  tail call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %222, i32 noundef %2)
  tail call void @sqlite3ExprCachePop(ptr noundef nonnull %0)
  %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 %.lr.ph, !llvm.loop !57

._crit_edge:                                      ; preds = %.lr.ph, %213
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %9, i32 noundef %214) #5
  br label %446

223:                                              ; preds = %208
  %224 = and i32 %211, 1024
  %.not429 = icmp eq i32 %224, 0
  br i1 %.not429, label %.preheader, label %227

.preheader:                                       ; preds = %223
  %225 = icmp sgt i32 %199, 0
  br i1 %225, label %.lr.ph467, label %._crit_edge468.thread

.lr.ph467:                                        ; preds = %.preheader
  %226 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %wide.trip.count481 = zext nneg i32 %199 to i64
  br label %232

227:                                              ; preds = %223
  %228 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %229 = load ptr, ptr %228, align 8, !tbaa !54
  %230 = load ptr, ptr %229, align 8, !tbaa !55
  %231 = tail call i32 @sqlite3ExprCodeTarget(ptr noundef nonnull %0, ptr noundef %230, i32 noundef %2)
  br label %.critedge

232:                                              ; preds = %.lr.ph467, %253
  %indvars.iv478 = phi i64 [ 0, %.lr.ph467 ], [ %indvars.iv.next479, %253 ]
  %.0395466 = phi i32 [ 0, %.lr.ph467 ], [ %.1396, %253 ]
  %.0399464 = phi ptr [ null, %.lr.ph467 ], [ %.1400, %253 ]
  %233 = icmp ult i64 %indvars.iv478, 32
  br i1 %233, label %234, label %243

234:                                              ; preds = %232
  %235 = load ptr, ptr %226, align 8, !tbaa !54
  %236 = getelementptr inbounds %struct.ExprList_item, ptr %235, i64 %indvars.iv478
  %237 = load ptr, ptr %236, align 8, !tbaa !55
  %238 = tail call i32 @sqlite3ExprIsConstant(ptr noundef %237)
  %.not435 = icmp eq i32 %238, 0
  br i1 %.not435, label %243, label %239

239:                                              ; preds = %234
  %240 = trunc nuw nsw i64 %indvars.iv478 to i32
  %241 = shl nuw i32 1, %240
  %242 = or i32 %.0395466, %241
  br label %243

243:                                              ; preds = %239, %234, %232
  %.1396 = phi i32 [ %242, %239 ], [ %.0395466, %234 ], [ %.0395466, %232 ]
  %244 = load i16, ptr %209, align 2, !tbaa !53
  %245 = and i16 %244, 32
  %246 = icmp eq i16 %245, 0
  %247 = icmp ne ptr %.0399464, null
  %or.cond = select i1 %246, i1 true, i1 %247
  br i1 %or.cond, label %253, label %248

248:                                              ; preds = %243
  %249 = load ptr, ptr %226, align 8, !tbaa !54
  %250 = getelementptr inbounds %struct.ExprList_item, ptr %249, i64 %indvars.iv478
  %251 = load ptr, ptr %250, align 8, !tbaa !55
  %252 = tail call ptr @sqlite3ExprCollSeq(ptr noundef nonnull %0, ptr noundef %251)
  br label %253

253:                                              ; preds = %243, %248
  %.1400 = phi ptr [ %.0399464, %243 ], [ %252, %248 ]
  %indvars.iv.next479 = add nuw nsw i64 %indvars.iv478, 1
  %exitcond482.not = icmp eq i64 %indvars.iv.next479, %wide.trip.count481
  br i1 %exitcond482.not, label %._crit_edge468, label %232, !llvm.loop !59

._crit_edge468:                                   ; preds = %253
  br i1 %.not426454, label %275, label %254

._crit_edge468.thread:                            ; preds = %.preheader
  br i1 %.not426454, label %.thread520, label %.thread495

254:                                              ; preds = %._crit_edge468
  %.not430 = icmp eq i32 %.1396, 0
  br i1 %.not430, label %.thread495, label %255

255:                                              ; preds = %254
  %256 = getelementptr inbounds i8, ptr %0, i64 56
  %257 = load i32, ptr %256, align 8, !tbaa !60
  %258 = add nsw i32 %257, 1
  %259 = add nsw i32 %257, %199
  store i32 %259, ptr %256, align 8, !tbaa !60
  br label %261

.thread495:                                       ; preds = %._crit_edge468.thread, %254
  %.0399.lcssa491502 = phi ptr [ %.1400, %254 ], [ null, %._crit_edge468.thread ]
  %260 = tail call i32 @sqlite3GetTempRange(ptr noundef nonnull %0, i32 noundef %199)
  br label %261

261:                                              ; preds = %.thread495, %255
  %.0399.lcssa491501 = phi ptr [ %.1400, %255 ], [ %.0399.lcssa491502, %.thread495 ]
  %.0395.lcssa493499 = phi i32 [ %.1396, %255 ], [ 0, %.thread495 ]
  %.0384 = phi i32 [ %258, %255 ], [ %260, %.thread495 ]
  %262 = load i16, ptr %209, align 2, !tbaa !53
  %263 = and i16 %262, 192
  %.not431 = icmp eq i16 %263, 0
  br i1 %.not431, label %273, label %264

264:                                              ; preds = %261
  %265 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %266 = load ptr, ptr %265, align 8, !tbaa !54
  %267 = load ptr, ptr %266, align 8, !tbaa !55
  %268 = load i8, ptr %267, align 8, !tbaa !14
  %269 = and i8 %268, -3
  %or.cond8 = icmp eq i8 %269, -104
  br i1 %or.cond8, label %270, label %273

270:                                              ; preds = %264
  %271 = trunc nuw i16 %263 to i8
  %272 = getelementptr inbounds i8, ptr %267, i64 54
  store i8 %271, ptr %272, align 2, !tbaa !31
  br label %273

273:                                              ; preds = %270, %264, %261
  tail call void @sqlite3ExprCachePush(ptr noundef nonnull %0)
  %274 = tail call i32 @sqlite3ExprCodeExprList(ptr noundef nonnull %0, ptr noundef nonnull %.0393453, i32 noundef %.0384, i32 noundef 0, i8 noundef zeroext 3)
  tail call void @sqlite3ExprCachePop(ptr noundef nonnull %0)
  br label %275

275:                                              ; preds = %._crit_edge468, %273
  %.0395.lcssa494 = phi i32 [ %.0395.lcssa493499, %273 ], [ %.1396, %._crit_edge468 ]
  %.0399.lcssa492 = phi ptr [ %.0399.lcssa491501, %273 ], [ %.1400, %._crit_edge468 ]
  %.1385 = phi i32 [ %.0384, %273 ], [ 0, %._crit_edge468 ]
  %276 = icmp sgt i32 %199, 1
  br i1 %276, label %277, label %284

277:                                              ; preds = %275
  %278 = load i32, ptr %191, align 4, !tbaa !36
  %279 = and i32 %278, 128
  %.not432 = icmp eq i32 %279, 0
  br i1 %.not432, label %.thread455, label %280

280:                                              ; preds = %277
  %281 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %282 = load ptr, ptr %281, align 8, !tbaa !54
  %283 = getelementptr inbounds i8, ptr %282, i64 32
  br label %.sink.split

284:                                              ; preds = %275
  %285 = icmp eq i32 %199, 1
  br i1 %285, label %.thread455, label %290

.thread455:                                       ; preds = %277, %284
  %286 = getelementptr inbounds i8, ptr %.0393453, i64 8
  %287 = load ptr, ptr %286, align 8, !tbaa !54
  br label %.sink.split

.sink.split:                                      ; preds = %280, %.thread455
  %.sink551 = phi ptr [ %287, %.thread455 ], [ %283, %280 ]
  %288 = load ptr, ptr %.sink551, align 8, !tbaa !55
  %289 = tail call ptr @sqlite3VtabOverloadFunction(ptr noundef %181, ptr noundef nonnull %202, i32 noundef %199, ptr noundef %288) #5
  br label %290

290:                                              ; preds = %.sink.split, %284
  %.0394 = phi ptr [ %202, %284 ], [ %289, %.sink.split ]
  %291 = getelementptr inbounds i8, ptr %.0394, i64 2
  %292 = load i16, ptr %291, align 2, !tbaa !53
  %293 = and i16 %292, 32
  %.not433 = icmp eq i16 %293, 0
  br i1 %.not433, label %302, label %297

.thread520:                                       ; preds = %._crit_edge468.thread
  %294 = getelementptr inbounds i8, ptr %202, i64 2
  %295 = load i16, ptr %294, align 2, !tbaa !53
  %296 = and i16 %295, 32
  %.not433525 = icmp eq i16 %296, 0
  br i1 %.not433525, label %302, label %.thread533

297:                                              ; preds = %290
  %.not434 = icmp eq ptr %.0399.lcssa492, null
  br i1 %.not434, label %.thread533, label %300

.thread533:                                       ; preds = %.thread520, %297
  %.1385513526544 = phi i32 [ %.1385, %297 ], [ 0, %.thread520 ]
  %.0395.lcssa494507529542 = phi i32 [ %.0395.lcssa494, %297 ], [ 0, %.thread520 ]
  %.0394531540 = phi ptr [ %.0394, %297 ], [ %202, %.thread520 ]
  %298 = getelementptr inbounds i8, ptr %181, i64 16
  %299 = load ptr, ptr %298, align 8, !tbaa !61
  br label %300

300:                                              ; preds = %.thread533, %297
  %.1385513526543 = phi i32 [ %.1385, %297 ], [ %.1385513526544, %.thread533 ]
  %.0395.lcssa494507529541 = phi i32 [ %.0395.lcssa494, %297 ], [ %.0395.lcssa494507529542, %.thread533 ]
  %.0394531539 = phi ptr [ %.0394, %297 ], [ %.0394531540, %.thread533 ]
  %.2401 = phi ptr [ %.0399.lcssa492, %297 ], [ %299, %.thread533 ]
  %301 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef %9, i32 noundef 89, i32 noundef 0, i32 noundef 0, i32 noundef 0, ptr noundef %.2401, i32 noundef -3) #5
  br label %302

302:                                              ; preds = %.thread520, %300, %290
  %.0394532 = phi ptr [ %202, %.thread520 ], [ %.0394531539, %300 ], [ %.0394, %290 ]
  %.0395.lcssa494507530 = phi i32 [ 0, %.thread520 ], [ %.0395.lcssa494507529541, %300 ], [ %.0395.lcssa494, %290 ]
  %.1385513527 = phi i32 [ 0, %.thread520 ], [ %.1385513526543, %300 ], [ %.1385, %290 ]
  %303 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef %9, i32 noundef 90, i32 noundef %.0395.lcssa494507530, i32 noundef %.1385513527, i32 noundef %2, ptr noundef nonnull %.0394532, i32 noundef -4) #5
  %304 = trunc i32 %199 to i16
  %305 = and i16 %304, 255
  tail call void @sqlite3VdbeChangeP5(ptr noundef %9, i16 noundef zeroext %305) #5
  %306 = icmp ne i32 %199, 0
  %307 = icmp eq i32 %.0395.lcssa494507530, 0
  %or.cond10 = and i1 %306, %307
  br i1 %or.cond10, label %308, label %.critedge

308:                                              ; preds = %302
  tail call void @sqlite3ReleaseTempRange(ptr noundef nonnull %0, i32 noundef %.1385513527, i32 noundef %199)
  br label %.critedge

309:                                              ; preds = %13
  %310 = getelementptr inbounds i8, ptr %1, i64 32
  %311 = load ptr, ptr %310, align 8, !tbaa !32
  %312 = load ptr, ptr %311, align 8, !tbaa !62
  %313 = load i32, ptr %312, align 8, !tbaa !49
  %.not422 = icmp eq i32 %313, 1
  br i1 %.not422, label %314, label %.thread460

.thread460:                                       ; preds = %309
  tail call void @sqlite3SubselectError(ptr noundef nonnull %0, i32 noundef %313, i32 noundef 1)
  br label %446

314:                                              ; preds = %13, %309
  %315 = tail call i32 @sqlite3CodeSubselect(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0)
  br label %.critedge

316:                                              ; preds = %13
  %317 = getelementptr inbounds i8, ptr %1, i64 16
  %318 = load ptr, ptr %317, align 8, !tbaa !34
  %319 = getelementptr inbounds i8, ptr %318, i64 44
  %320 = load i32, ptr %319, align 4, !tbaa !26
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %322, label %326

322:                                              ; preds = %316
  %323 = tail call i32 @sqlite3CodeSubselect(ptr noundef nonnull %0, ptr noundef nonnull %318, i32 noundef 0, i32 noundef 0)
  %324 = load ptr, ptr %317, align 8, !tbaa !34
  %325 = getelementptr inbounds i8, ptr %324, i64 44
  store i32 %323, ptr %325, align 4, !tbaa !26
  br label %326

326:                                              ; preds = %322, %316
  %327 = phi ptr [ %324, %322 ], [ %318, %316 ]
  %328 = getelementptr inbounds i8, ptr %1, i64 44
  %329 = load i32, ptr %328, align 4, !tbaa !26
  %.not420 = icmp eq i32 %329, 0
  br i1 %.not420, label %334, label %330

330:                                              ; preds = %326
  %331 = tail call i32 @sqlite3ExprVectorSize(ptr noundef nonnull %327)
  %.not421 = icmp eq i32 %329, %331
  br i1 %.not421, label %334, label %332

332:                                              ; preds = %330
  %333 = load i32, ptr %328, align 4, !tbaa !26
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.3, i32 noundef %333, i32 noundef %331) #5
  br label %334

334:                                              ; preds = %332, %330, %326
  %335 = load ptr, ptr %317, align 8, !tbaa !34
  %336 = getelementptr inbounds i8, ptr %335, i64 44
  %337 = load i32, ptr %336, align 4, !tbaa !26
  %338 = getelementptr inbounds i8, ptr %1, i64 48
  %339 = load i16, ptr %338, align 8, !tbaa !28
  %340 = sext i16 %339 to i32
  %341 = add nsw i32 %337, %340
  br label %.critedge

342:                                              ; preds = %13
  %343 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef nonnull %9) #5
  %344 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef nonnull %9) #5
  %345 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 80, i32 noundef 0, i32 noundef %2) #5
  tail call void @sqlite3ExprCodeIN(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %343, i32 noundef %344)
  %346 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 77, i32 noundef 1, i32 noundef %2) #5
  tail call void @sqlite3VdbeResolveLabel(ptr noundef nonnull %9, i32 noundef %343) #5
  %347 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 92, i32 noundef %2, i32 noundef 0) #5
  tail call void @sqlite3VdbeResolveLabel(ptr noundef nonnull %9, i32 noundef %344) #5
  br label %.critedge

348:                                              ; preds = %13
  tail call void @exprCodeBetween(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %2, ptr noundef null, i32 noundef 0)
  br label %.critedge

349:                                              ; preds = %13, %13, %13
  %350 = getelementptr inbounds i8, ptr %1, i64 16
  %351 = load ptr, ptr %350, align 8, !tbaa !34
  %352 = tail call i32 @sqlite3ExprCodeTarget(ptr noundef nonnull %0, ptr noundef %351, i32 noundef %2)
  br label %.critedge

353:                                              ; preds = %13
  %354 = getelementptr inbounds i8, ptr %1, i64 64
  %355 = load ptr, ptr %354, align 8, !tbaa !30
  %356 = getelementptr inbounds i8, ptr %1, i64 44
  %357 = load i32, ptr %356, align 4, !tbaa !26
  %358 = getelementptr inbounds i8, ptr %355, i64 70
  %359 = load i16, ptr %358, align 2, !tbaa !64
  %360 = sext i16 %359 to i32
  %361 = add nsw i32 %360, 1
  %362 = mul nsw i32 %361, %357
  %363 = getelementptr inbounds i8, ptr %1, i64 48
  %364 = load i16, ptr %363, align 8, !tbaa !28
  %365 = sext i16 %364 to i32
  %366 = add nsw i32 %365, 1
  %367 = add i32 %366, %362
  %368 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %9, i32 noundef 144, i32 noundef %367, i32 noundef %2) #5
  %369 = load i16, ptr %363, align 8, !tbaa !28
  %370 = icmp sgt i16 %369, -1
  br i1 %370, label %371, label %446

371:                                              ; preds = %353
  %372 = getelementptr inbounds i8, ptr %355, i64 8
  %373 = load ptr, ptr %372, align 8, !tbaa !66
  %374 = zext nneg i16 %369 to i64
  %375 = getelementptr inbounds %struct.Column, ptr %373, i64 %374, i32 4
  %376 = load i8, ptr %375, align 1, !tbaa !67
  %377 = icmp eq i8 %376, 69
  br i1 %377, label %378, label %446

378:                                              ; preds = %371
  %379 = tail call i32 @sqlite3VdbeAddOp1(ptr noundef nonnull %9, i32 noundef 93, i32 noundef %2) #5
  br label %446

380:                                              ; preds = %13
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.10) #5
  br label %446

381:                                              ; preds = %13
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7) #5
  %382 = getelementptr inbounds i8, ptr %1, i64 32
  %383 = load ptr, ptr %382, align 8, !tbaa !32
  %384 = getelementptr inbounds i8, ptr %383, i64 8
  %385 = load ptr, ptr %384, align 8, !tbaa !54
  %386 = load i32, ptr %383, align 8, !tbaa !49
  %387 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef nonnull %9) #5
  %388 = getelementptr inbounds i8, ptr %1, i64 16
  %389 = load ptr, ptr %388, align 8, !tbaa !34
  %.not441 = icmp eq ptr %389, null
  br i1 %.not441, label %390, label %.thread545

390:                                              ; preds = %381
  %391 = add nsw i32 %386, -1
  %392 = icmp sgt i32 %386, 1
  br i1 %392, label %.lr.ph473.split.us, label %._crit_edge474

.thread545:                                       ; preds = %381
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %389, i64 72, i1 false), !tbaa.struct !69
  %393 = call i32 @exprCodeVector(ptr noundef nonnull %0, ptr noundef nonnull %6, ptr noundef nonnull %4)
  call void @exprToRegister(ptr noundef nonnull %6, i32 noundef %393)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %7, i8 0, i64 72, i1 false)
  store i8 37, ptr %7, align 8, !tbaa !14
  %394 = getelementptr inbounds i8, ptr %7, i64 16
  store ptr %6, ptr %394, align 8, !tbaa !34
  store i32 0, ptr %4, align 4, !tbaa !13
  %395 = add nsw i32 %386, -1
  %396 = icmp sgt i32 %386, 1
  br i1 %396, label %.lr.ph473.split.preheader, label %._crit_edge474

.lr.ph473.split.preheader:                        ; preds = %.thread545
  %397 = getelementptr inbounds i8, ptr %7, i64 24
  br label %.lr.ph473.split

.lr.ph473.split.us:                               ; preds = %390, %.lr.ph473.split.us
  %indvars.iv486 = phi i64 [ %indvars.iv.next487, %.lr.ph473.split.us ], [ 0, %390 ]
  tail call void @sqlite3ExprCachePush(ptr noundef %0)
  %398 = getelementptr inbounds %struct.ExprList_item, ptr %385, i64 %indvars.iv486
  %399 = load ptr, ptr %398, align 8, !tbaa !55
  %400 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %9) #5
  tail call void @sqlite3ExprIfFalse(ptr noundef %0, ptr noundef %399, i32 noundef %400, i32 noundef 16)
  %401 = or disjoint i64 %indvars.iv486, 1
  %402 = getelementptr inbounds %struct.ExprList_item, ptr %385, i64 %401
  %403 = load ptr, ptr %402, align 8, !tbaa !55
  tail call void @sqlite3ExprCode(ptr noundef %0, ptr noundef %403, i32 noundef %2)
  %404 = tail call i32 @sqlite3VdbeGoto(ptr noundef %9, i32 noundef %387) #5
  tail call void @sqlite3ExprCachePop(ptr noundef %0)
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %9, i32 noundef %400) #5
  %indvars.iv.next487 = add nuw nsw i64 %indvars.iv486, 2
  %405 = trunc nuw i64 %indvars.iv.next487 to i32
  %406 = icmp sgt i32 %391, %405
  br i1 %406, label %.lr.ph473.split.us, label %._crit_edge474, !llvm.loop !72

.lr.ph473.split:                                  ; preds = %.lr.ph473.split.preheader, %.lr.ph473.split
  %indvars.iv483 = phi i64 [ 0, %.lr.ph473.split.preheader ], [ %indvars.iv.next484, %.lr.ph473.split ]
  call void @sqlite3ExprCachePush(ptr noundef %0)
  %407 = getelementptr inbounds %struct.ExprList_item, ptr %385, i64 %indvars.iv483
  %408 = load ptr, ptr %407, align 8, !tbaa !55
  store ptr %408, ptr %397, align 8, !tbaa !35
  %409 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %9) #5
  call void @sqlite3ExprIfFalse(ptr noundef %0, ptr noundef nonnull %7, i32 noundef %409, i32 noundef 16)
  %410 = or disjoint i64 %indvars.iv483, 1
  %411 = getelementptr inbounds %struct.ExprList_item, ptr %385, i64 %410
  %412 = load ptr, ptr %411, align 8, !tbaa !55
  call void @sqlite3ExprCode(ptr noundef %0, ptr noundef %412, i32 noundef %2)
  %413 = call i32 @sqlite3VdbeGoto(ptr noundef %9, i32 noundef %387) #5
  call void @sqlite3ExprCachePop(ptr noundef %0)
  call void @sqlite3VdbeResolveLabel(ptr noundef %9, i32 noundef %409) #5
  %indvars.iv.next484 = add nuw nsw i64 %indvars.iv483, 2
  %414 = trunc nuw i64 %indvars.iv.next484 to i32
  %415 = icmp sgt i32 %395, %414
  br i1 %415, label %.lr.ph473.split, label %._crit_edge474, !llvm.loop !72

._crit_edge474:                                   ; preds = %.lr.ph473.split, %.lr.ph473.split.us, %.thread545, %390
  %416 = phi i32 [ %395, %.thread545 ], [ %391, %390 ], [ %391, %.lr.ph473.split.us ], [ %395, %.lr.ph473.split ]
  %417 = and i32 %386, 1
  %.not442 = icmp eq i32 %417, 0
  br i1 %.not442, label %423, label %418

418:                                              ; preds = %._crit_edge474
  call void @sqlite3ExprCachePush(ptr noundef %0)
  %419 = load ptr, ptr %384, align 8, !tbaa !54
  %420 = sext i32 %416 to i64
  %421 = getelementptr inbounds %struct.ExprList_item, ptr %419, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !55
  call void @sqlite3ExprCode(ptr noundef %0, ptr noundef %422, i32 noundef %2)
  call void @sqlite3ExprCachePop(ptr noundef %0)
  br label %425

423:                                              ; preds = %._crit_edge474
  %424 = call i32 @sqlite3VdbeAddOp2(ptr noundef %9, i32 noundef 80, i32 noundef 0, i32 noundef %2) #5
  br label %425

425:                                              ; preds = %423, %418
  call void @sqlite3VdbeResolveLabel(ptr noundef %9, i32 noundef %387) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) #5
  br label %446

426:                                              ; preds = %13
  %427 = getelementptr inbounds i8, ptr %0, i64 168
  %428 = load ptr, ptr %427, align 8, !tbaa !73
  %.not = icmp eq ptr %428, null
  br i1 %.not, label %429, label %430

429:                                              ; preds = %426
  tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.18) #5
  br label %.critedge

430:                                              ; preds = %426
  %431 = getelementptr inbounds i8, ptr %1, i64 1
  %432 = load i8, ptr %431, align 1, !tbaa !74
  %433 = icmp eq i8 %432, 2
  br i1 %433, label %434, label %435

434:                                              ; preds = %430
  tail call void @sqlite3MayAbort(ptr noundef nonnull %0) #5
  %.pr = load i8, ptr %431, align 1, !tbaa !74
  br label %435

435:                                              ; preds = %434, %430
  %436 = phi i8 [ %.pr, %434 ], [ %432, %430 ]
  %437 = icmp eq i8 %436, 4
  br i1 %437, label %438, label %442

438:                                              ; preds = %435
  %439 = getelementptr inbounds i8, ptr %1, i64 8
  %440 = load ptr, ptr %439, align 8, !tbaa !32
  %441 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef nonnull %9, i32 noundef 76, i32 noundef 0, i32 noundef 4, i32 noundef 0, ptr noundef %440, i32 noundef 0) #5
  br label %446

442:                                              ; preds = %435
  %443 = sext i8 %436 to i32
  %444 = getelementptr inbounds i8, ptr %1, i64 8
  %445 = load ptr, ptr %444, align 8, !tbaa !32
  tail call void @sqlite3HaltConstraint(ptr noundef nonnull %0, i32 noundef 1811, i32 noundef %443, ptr noundef %445, i8 noundef signext 0, i8 noundef zeroext 0) #5
  br label %446

446:                                              ; preds = %.thread460, %207, %._crit_edge, %.thread448, %353, %371, %378, %147, %120, %123, %438, %442, %425, %380, %159, %154, %131
  %447 = load i32, ptr %4, align 4, !tbaa !13
  call void @sqlite3ReleaseTempReg(ptr noundef %0, i32 noundef %447)
  %448 = load i32, ptr %5, align 4, !tbaa !13
  call void @sqlite3ReleaseTempReg(ptr noundef %0, i32 noundef %448)
  br label %.critedge

.critedge:                                        ; preds = %302, %308, %227, %188, %26, %32, %314, %172, %143, %144, %82, %91, %46, %54, %3, %446, %429, %349, %348, %342, %334, %107, %98, %72, %.thread, %67, %64, %63
  %.6 = phi i32 [ %2, %446 ], [ 0, %429 ], [ %352, %349 ], [ %2, %348 ], [ %2, %342 ], [ %341, %334 ], [ %315, %314 ], [ %179, %172 ], [ %2, %107 ], [ %100, %98 ], [ %2, %72 ], [ %2, %.thread ], [ %2, %67 ], [ %2, %64 ], [ %2, %63 ], [ 0, %3 ], [ %50, %46 ], [ %62, %54 ], [ %2, %91 ], [ %2, %82 ], [ %2, %144 ], [ %2, %143 ], [ %28, %26 ], [ %2, %32 ], [ %2, %302 ], [ %2, %308 ], [ %231, %227 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  ret i32 %.6
}

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @sqlite3ExprCachePop(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeGetColumn(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #2

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

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

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

declare i32 @sqlite3VdbeLoadString(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @sqlite3HexToBlob(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare ptr @sqlite3VdbeDb(ptr noundef) local_unnamed_addr #1

declare void @sqlite3VdbeAppendP4(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden void @codeVectorCompare(ptr noundef, ptr noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeTemp(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeAtInit(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @sqlite3FindFunction(ptr noundef, ptr noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #1

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3GetTempRange(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @sqlite3ExprCodeExprList(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #2

declare ptr @sqlite3VtabOverloadFunction(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

declare void @sqlite3MayAbort(ptr noundef) local_unnamed_addr #1

declare void @sqlite3HaltConstraint(ptr noundef, i32 noundef, i32 noundef, ptr noundef, i8 noundef signext, i8 noundef zeroext) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 16}
!6 = !{!"Parse", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !8, i64 28, !8, i64 29, !8, i64 30, !8, i64 31, !8, i64 32, !8, i64 33, !8, i64 34, !8, i64 35, !8, i64 36, !8, i64 37, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !7, i64 88, !7, i64 96, !11, i64 104, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !8, i64 192, !8, i64 193, !8, i64 194, !8, i64 196, !8, i64 396, !11, i64 432, !11, i64 448, !12, i64 464, !8, i64 466, !8, i64 467, !8, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !11, i64 536, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"Token", !7, i64 0, !10, i64 8}
!12 = !{!"short", !8, i64 0}
!13 = !{!10, !10, i64 0}
!14 = !{!15, !8, i64 0}
!15 = !{!"Expr", !8, i64 0, !8, i64 1, !10, i64 4, !8, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !12, i64 50, !12, i64 52, !8, i64 54, !7, i64 56, !7, i64 64}
!16 = !{!15, !7, i64 56}
!17 = !{!18, !7, i64 32}
!18 = !{!"AggInfo", !8, i64 0, !8, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !7, i64 48, !10, i64 56}
!19 = !{!15, !12, i64 50}
!20 = !{!18, !8, i64 0}
!21 = !{!22, !10, i64 20}
!22 = !{!"AggInfo_col", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24}
!23 = !{!18, !8, i64 1}
!24 = !{!18, !10, i64 8}
!25 = !{!22, !10, i64 16}
!26 = !{!15, !10, i64 44}
!27 = !{!6, !10, i64 68}
!28 = !{!15, !12, i64 48}
!29 = !{!6, !10, i64 72}
!30 = !{!15, !7, i64 64}
!31 = !{!15, !8, i64 54}
!32 = !{!8, !8, i64 0}
!33 = !{!6, !7, i64 488}
!34 = !{!15, !7, i64 16}
!35 = !{!15, !7, i64 24}
!36 = !{!15, !10, i64 4}
!37 = !{!18, !7, i64 48}
!38 = !{!39, !10, i64 16}
!39 = !{!"AggInfo_func", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20}
!40 = !{!6, !7, i64 0}
!41 = !{!42, !8, i64 82}
!42 = !{!"sqlite3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !43, i64 48, !43, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !12, i64 80, !8, i64 82, !8, i64 83, !8, i64 84, !8, i64 85, !8, i64 86, !8, i64 87, !8, i64 88, !8, i64 89, !8, i64 90, !8, i64 91, !8, i64 92, !8, i64 93, !8, i64 94, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !8, i64 112, !10, i64 160, !44, i64 164, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, i64 328, !8, i64 336, !45, i64 344, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !10, i64 432, !10, i64 436, !46, i64 440, !7, i64 464, !7, i64 472, !7, i64 480, !46, i64 488, !46, i64 512, !47, i64 536, !8, i64 560, !7, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !43, i64 648, !43, i64 656, !7, i64 664}
!43 = !{!"long long", !8, i64 0}
!44 = !{!"sqlite3InitInfo", !10, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7}
!45 = !{!"Lookaside", !10, i64 0, !12, i64 4, !8, i64 6, !10, i64 8, !10, i64 12, !8, i64 16, !7, i64 32, !7, i64 40, !7, i64 48}
!46 = !{!"Hash", !10, i64 0, !10, i64 4, !7, i64 8, !7, i64 16}
!47 = !{!"BusyHandler", !7, i64 0, !7, i64 8, !10, i64 16}
!48 = !{!6, !8, i64 35}
!49 = !{!50, !10, i64 0}
!50 = !{!"ExprList", !10, i64 0, !7, i64 8}
!51 = !{!52, !7, i64 32}
!52 = !{!"FuncDef", !8, i64 0, !12, i64 2, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !8, i64 48}
!53 = !{!52, !12, i64 2}
!54 = !{!50, !7, i64 8}
!55 = !{!56, !7, i64 0}
!56 = !{!"ExprList_item", !7, i64 0, !7, i64 8, !7, i64 16, !8, i64 24, !10, i64 25, !10, i64 25, !10, i64 25, !8, i64 28}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = distinct !{!59, !58}
!60 = !{!6, !10, i64 56}
!61 = !{!42, !7, i64 16}
!62 = !{!63, !7, i64 0}
!63 = !{!"Select", !7, i64 0, !8, i64 8, !12, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104}
!64 = !{!65, !12, i64 70}
!65 = !{!"Table", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !12, i64 68, !12, i64 70, !12, i64 72, !12, i64 74, !8, i64 76, !10, i64 80, !10, i64 84, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!66 = !{!65, !7, i64 8}
!67 = !{!68, !8, i64 25}
!68 = !{!"Column", !7, i64 0, !7, i64 8, !7, i64 16, !8, i64 24, !8, i64 25, !8, i64 26, !8, i64 27}
!69 = !{i64 0, i64 1, !32, i64 1, i64 1, !32, i64 4, i64 4, !13, i64 8, i64 8, !32, i64 16, i64 8, !70, i64 24, i64 8, !70, i64 32, i64 8, !32, i64 40, i64 4, !13, i64 44, i64 4, !13, i64 48, i64 2, !71, i64 50, i64 2, !71, i64 52, i64 2, !71, i64 54, i64 1, !32, i64 56, i64 8, !70, i64 64, i64 8, !70}
!70 = !{!7, !7, i64 0}
!71 = !{!12, !12, i64 0}
!72 = distinct !{!72, !58}
!73 = !{!6, !7, i64 168}
!74 = !{!15, !8, i64 1}


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