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

; 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.SelectDest = type { i8, ptr, i32, i32, i32, ptr }
%struct.NameContext = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i16 }
%struct.Parse = type { ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, %struct.Token, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i8, i8, i8, [10 x %struct.yColCache], [8 x i32], %struct.Token, %struct.Token, i16, i8, i8, i8, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.Token, ptr, ptr, ptr, ptr, ptr }
%struct.yColCache = type { i32, i16, i8, i32, i32, i32 }
%struct.Token = type { ptr, i32 }
%struct.sqlite3 = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i64, i32, i32, i32, i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, [12 x i32], i32, %struct.sqlite3InitInfo, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %union.anon.0, %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.0 = type { double }
%struct.Lookaside = type { i32, i16, i8, i32, i32, [3 x i32], ptr, ptr, ptr }
%struct.Hash = type { i32, i32, ptr, ptr }
%struct.BusyHandler = type { ptr, ptr, i32 }
%struct.Db = type { ptr, ptr, i8, i8, ptr }
%struct.Select = type { ptr, i8, i16, i32, i32, i32, [2 x i32], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.SrcList = type { i32, i32, [1 x %struct.SrcList_item] }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon.1, i8, i32, ptr, ptr, i64, %union.anon.2, ptr }
%struct.anon.1 = type { i8, i8, [2 x i8] }
%union.anon.2 = type { ptr }
%struct.Table = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i16, i16, i16, i8, i32, i32, ptr, ptr, ptr, ptr, ptr }
%struct.IdList = type { ptr, i32 }
%struct.IdList_item = type { ptr, i32 }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }
%struct.ExprList = type { i32, ptr }
%struct.Index = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i16, i16, i16, i8, i8 }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon }
%union.anon = type { i32 }
%struct.VdbeOp = type { i8, i8, i16, i32, i32, i32, %union.p4union }
%union.p4union = type { ptr }

@.str = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [14 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 ptr @sqlite3GetVdbe(ptr noundef) #1

declare i32 @sqlite3VdbeAddOp3(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 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 void @sqlite3TableAffinity(ptr noundef, ptr noundef, i32 noundef) #2

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

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

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

68:                                               ; preds = %5
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.sqlite3, ptr %69, i32 0, i32 17
  %71 = load i8, ptr %70, align 1, !tbaa !17
  %72 = zext i8 %71 to i32
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %75

74:                                               ; preds = %68, %5
  br label %1279

75:                                               ; preds = %68
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = icmp ne ptr %76, null
  br i1 %77, label %78, label %97

78:                                               ; preds = %75
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.Select, ptr %79, i32 0, i32 3
  %81 = load i32, ptr %80, align 4, !tbaa !24
  %82 = and i32 %81, 512
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %97

84:                                               ; preds = %78
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.Select, ptr %85, i32 0, i32 12
  %87 = load ptr, ptr %86, align 8, !tbaa !26
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %97

89:                                               ; preds = %84
  %90 = load ptr, ptr %8, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.Select, ptr %90, i32 0, i32 0
  %92 = load ptr, ptr %91, align 8, !tbaa !27
  store ptr %92, ptr %33, align 8, !tbaa !5
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.Select, ptr %93, i32 0, i32 0
  store ptr null, ptr %94, align 8, !tbaa !27
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  call void @sqlite3SelectDelete(ptr noundef %95, ptr noundef %96)
  store ptr null, ptr %8, align 8, !tbaa !5
  br label %97

97:                                               ; preds = %89, %84, %78, %75
  %98 = load ptr, ptr %7, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.SrcList, ptr %98, i32 0, i32 2
  %100 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %99, i64 0, i64 0
  %101 = getelementptr inbounds %struct.SrcList_item, ptr %100, i32 0, i32 2
  %102 = load ptr, ptr %101, align 8, !tbaa !28
  store ptr %102, ptr %13, align 8, !tbaa !5
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = icmp eq ptr %103, null
  br i1 %104, label %105, label %106

105:                                              ; preds = %97
  br label %1279

106:                                              ; preds = %97
  %107 = load ptr, ptr %6, align 8, !tbaa !5
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = call ptr @sqlite3SrcListLookup(ptr noundef %107, ptr noundef %108)
  store ptr %109, ptr %12, align 8, !tbaa !5
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = icmp eq ptr %110, null
  br i1 %111, label %112, label %113

112:                                              ; preds = %106
  br label %1279

113:                                              ; preds = %106
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.Table, ptr %115, i32 0, i32 20
  %117 = load ptr, ptr %116, align 8, !tbaa !31
  %118 = call i32 @sqlite3SchemaToIndex(ptr noundef %114, ptr noundef %117)
  store i32 %118, ptr %28, align 4, !tbaa !9
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = load ptr, ptr %12, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.Table, ptr %120, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !33
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.sqlite3, ptr %123, i32 0, i32 4
  %125 = load ptr, ptr %124, align 8, !tbaa !34
  %126 = load i32, ptr %28, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds %struct.Db, ptr %125, i64 %127
  %129 = getelementptr inbounds %struct.Db, ptr %128, i32 0, i32 0
  %130 = load ptr, ptr %129, align 8, !tbaa !35
  %131 = call i32 @sqlite3AuthCheck(ptr noundef %119, i32 noundef 18, ptr noundef %122, ptr noundef null, ptr noundef %130)
  %132 = icmp ne i32 %131, 0
  br i1 %132, label %133, label %134

133:                                              ; preds = %113
  br label %1279

134:                                              ; preds = %113
  %135 = load ptr, ptr %12, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.Table, ptr %135, i32 0, i32 9
  %137 = load i32, ptr %136, align 8, !tbaa !37
  %138 = and i32 %137, 32
  %139 = icmp eq i32 %138, 0
  %140 = xor i1 %139, true
  %141 = zext i1 %140 to i32
  %142 = trunc i32 %141 to i8
  store i8 %142, ptr %31, align 1, !tbaa !11
  %143 = load ptr, ptr %6, align 8, !tbaa !5
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = call ptr @sqlite3TriggersExist(ptr noundef %143, ptr noundef %144, i32 noundef 108, ptr noundef null, ptr noundef %43)
  store ptr %145, ptr %42, align 8, !tbaa !5
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.Table, ptr %146, i32 0, i32 3
  %148 = load ptr, ptr %147, align 8, !tbaa !38
  %149 = icmp ne ptr %148, null
  %150 = zext i1 %149 to i32
  store i32 %150, ptr %41, align 4, !tbaa !9
  %151 = load ptr, ptr %6, align 8, !tbaa !5
  %152 = load ptr, ptr %12, align 8, !tbaa !5
  %153 = call i32 @sqlite3ViewGetColumnNames(ptr noundef %151, ptr noundef %152)
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %134
  br label %1279

156:                                              ; preds = %134
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  %159 = load i32, ptr %43, align 4, !tbaa !9
  %160 = call i32 @sqlite3IsReadOnly(ptr noundef %157, ptr noundef %158, i32 noundef %159)
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %156
  br label %1279

163:                                              ; preds = %156
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = call ptr @sqlite3GetVdbe(ptr noundef %164)
  store ptr %165, ptr %16, align 8, !tbaa !5
  %166 = load ptr, ptr %16, align 8, !tbaa !5
  %167 = icmp eq ptr %166, null
  br i1 %167, label %168, label %169

168:                                              ; preds = %163
  br label %1279

169:                                              ; preds = %163
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.Parse, ptr %170, i32 0, i32 6
  %172 = load i8, ptr %171, align 2, !tbaa !39
  %173 = zext i8 %172 to i32
  %174 = icmp eq i32 %173, 0
  br i1 %174, label %175, label %177

175:                                              ; preds = %169
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  call void @sqlite3VdbeCountChanges(ptr noundef %176)
  br label %177

177:                                              ; preds = %175, %169
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %184, label %181

181:                                              ; preds = %177
  %182 = load ptr, ptr %42, align 8, !tbaa !5
  %183 = icmp ne ptr %182, null
  br label %184

184:                                              ; preds = %181, %177
  %185 = phi i1 [ true, %177 ], [ %183, %181 ]
  %186 = zext i1 %185 to i32
  %187 = load i32, ptr %28, align 4, !tbaa !9
  call void @sqlite3BeginWriteOperation(ptr noundef %178, i32 noundef %186, i32 noundef %187)
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = icmp eq ptr %188, null
  br i1 %189, label %190, label %199

190:                                              ; preds = %184
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = load i32, ptr %10, align 4, !tbaa !9
  %195 = load i32, ptr %28, align 4, !tbaa !9
  %196 = call i32 @xferOptimization(ptr noundef %191, ptr noundef %192, ptr noundef %193, i32 noundef %194, i32 noundef %195)
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %199

198:                                              ; preds = %190
  br label %1242

199:                                              ; preds = %190, %184
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = load i32, ptr %28, align 4, !tbaa !9
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = call i32 @autoIncBegin(ptr noundef %200, i32 noundef %201, ptr noundef %202)
  store i32 %203, ptr %35, align 4, !tbaa !9
  %204 = load ptr, ptr %6, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.Parse, ptr %204, i32 0, i32 18
  %206 = load i32, ptr %205, align 8, !tbaa !40
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %37, align 4, !tbaa !9
  store i32 %207, ptr %38, align 4, !tbaa !9
  %208 = load ptr, ptr %12, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.Table, ptr %208, i32 0, i32 11
  %210 = load i16, ptr %209, align 2, !tbaa !41
  %211 = sext i16 %210 to i32
  %212 = add nsw i32 %211, 1
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.Parse, ptr %213, i32 0, i32 18
  %215 = load i32, ptr %214, align 8, !tbaa !40
  %216 = add nsw i32 %215, %212
  store i32 %216, ptr %214, align 8, !tbaa !40
  %217 = load ptr, ptr %12, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.Table, ptr %217, i32 0, i32 16
  %219 = load i32, ptr %218, align 4, !tbaa !42
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %228

221:                                              ; preds = %199
  %222 = load i32, ptr %38, align 4, !tbaa !9
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %38, align 4, !tbaa !9
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.Parse, ptr %224, i32 0, i32 18
  %226 = load i32, ptr %225, align 8, !tbaa !40
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %225, align 8, !tbaa !40
  br label %228

228:                                              ; preds = %221, %199
  %229 = load i32, ptr %38, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %39, align 4, !tbaa !9
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.Table, ptr %231, i32 0, i32 9
  %233 = load i32, ptr %232, align 8, !tbaa !37
  %234 = and i32 %233, 128
  %235 = icmp eq i32 %234, 0
  %236 = zext i1 %235 to i32
  %237 = trunc i32 %236 to i8
  store i8 %237, ptr %32, align 1, !tbaa !11
  %238 = load ptr, ptr %9, align 8, !tbaa !5
  %239 = icmp ne ptr %238, null
  br i1 %239, label %240, label %361

240:                                              ; preds = %228
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %255, %240
  %242 = load i32, ptr %14, align 4, !tbaa !9
  %243 = load ptr, ptr %9, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.IdList, ptr %243, i32 0, i32 1
  %245 = load i32, ptr %244, align 8, !tbaa !43
  %246 = icmp slt i32 %242, %245
  br i1 %246, label %247, label %258

247:                                              ; preds = %241
  %248 = load ptr, ptr %9, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.IdList, ptr %248, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8, !tbaa !45
  %251 = load i32, ptr %14, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds %struct.IdList_item, ptr %250, i64 %252
  %254 = getelementptr inbounds %struct.IdList_item, ptr %253, i32 0, i32 1
  store i32 -1, ptr %254, align 8, !tbaa !46
  br label %255

255:                                              ; preds = %247
  %256 = load i32, ptr %14, align 4, !tbaa !9
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %14, align 4, !tbaa !9
  br label %241, !llvm.loop !48

258:                                              ; preds = %241
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %357, %258
  %260 = load i32, ptr %14, align 4, !tbaa !9
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.IdList, ptr %261, i32 0, i32 1
  %263 = load i32, ptr %262, align 8, !tbaa !43
  %264 = icmp slt i32 %260, %263
  br i1 %264, label %265, label %360

265:                                              ; preds = %259
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %316, %265
  %267 = load i32, ptr %15, align 4, !tbaa !9
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.Table, ptr %268, i32 0, i32 11
  %270 = load i16, ptr %269, align 2, !tbaa !41
  %271 = sext i16 %270 to i32
  %272 = icmp slt i32 %267, %271
  br i1 %272, label %273, label %319

273:                                              ; preds = %266
  %274 = load ptr, ptr %9, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.IdList, ptr %274, i32 0, i32 0
  %276 = load ptr, ptr %275, align 8, !tbaa !45
  %277 = load i32, ptr %14, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds %struct.IdList_item, ptr %276, i64 %278
  %280 = getelementptr inbounds %struct.IdList_item, ptr %279, i32 0, i32 0
  %281 = load ptr, ptr %280, align 8, !tbaa !50
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.Table, ptr %282, i32 0, i32 1
  %284 = load ptr, ptr %283, align 8, !tbaa !51
  %285 = load i32, ptr %15, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds %struct.Column, ptr %284, i64 %286
  %288 = getelementptr inbounds %struct.Column, ptr %287, i32 0, i32 0
  %289 = load ptr, ptr %288, align 8, !tbaa !52
  %290 = call i32 @sqlite3StrICmp(ptr noundef %281, ptr noundef %289)
  %291 = icmp eq i32 %290, 0
  br i1 %291, label %292, label %315

292:                                              ; preds = %273
  %293 = load i32, ptr %15, align 4, !tbaa !9
  %294 = load ptr, ptr %9, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.IdList, ptr %294, i32 0, i32 0
  %296 = load ptr, ptr %295, align 8, !tbaa !45
  %297 = load i32, ptr %14, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.IdList_item, ptr %296, i64 %298
  %300 = getelementptr inbounds %struct.IdList_item, ptr %299, i32 0, i32 1
  store i32 %293, ptr %300, align 8, !tbaa !46
  %301 = load i32, ptr %14, align 4, !tbaa !9
  %302 = load i32, ptr %15, align 4, !tbaa !9
  %303 = icmp ne i32 %301, %302
  br i1 %303, label %304, label %305

304:                                              ; preds = %292
  store i8 0, ptr %32, align 1, !tbaa !11
  br label %305

305:                                              ; preds = %304, %292
  %306 = load i32, ptr %15, align 4, !tbaa !9
  %307 = load ptr, ptr %12, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.Table, ptr %307, i32 0, i32 10
  %309 = load i16, ptr %308, align 4, !tbaa !54
  %310 = sext i16 %309 to i32
  %311 = icmp eq i32 %306, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %305
  %313 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %313, ptr %22, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %312, %305
  br label %319

315:                                              ; preds = %273
  br label %316

316:                                              ; preds = %315
  %317 = load i32, ptr %15, align 4, !tbaa !9
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %15, align 4, !tbaa !9
  br label %266, !llvm.loop !55

319:                                              ; preds = %314, %266
  %320 = load i32, ptr %15, align 4, !tbaa !9
  %321 = load ptr, ptr %12, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.Table, ptr %321, i32 0, i32 11
  %323 = load i16, ptr %322, align 2, !tbaa !41
  %324 = sext i16 %323 to i32
  %325 = icmp sge i32 %320, %324
  br i1 %325, label %326, label %356

326:                                              ; preds = %319
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.IdList, ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8, !tbaa !45
  %330 = load i32, ptr %14, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.IdList_item, ptr %329, i64 %331
  %333 = getelementptr inbounds %struct.IdList_item, ptr %332, i32 0, i32 0
  %334 = load ptr, ptr %333, align 8, !tbaa !50
  %335 = call i32 @sqlite3IsRowid(ptr noundef %334)
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %326
  %338 = load i8, ptr %31, align 1, !tbaa !11
  %339 = icmp ne i8 %338, 0
  br i1 %339, label %342, label %340

340:                                              ; preds = %337
  %341 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %341, ptr %22, align 4, !tbaa !9
  store i8 0, ptr %32, align 1, !tbaa !11
  br label %355

342:                                              ; preds = %337, %326
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load ptr, ptr %7, align 8, !tbaa !5
  %345 = load ptr, ptr %9, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.IdList, ptr %345, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8, !tbaa !45
  %348 = load i32, ptr %14, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds %struct.IdList_item, ptr %347, i64 %349
  %351 = getelementptr inbounds %struct.IdList_item, ptr %350, i32 0, i32 0
  %352 = load ptr, ptr %351, align 8, !tbaa !50
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %343, ptr noundef @.str, ptr noundef %344, i32 noundef 0, ptr noundef %352)
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.Parse, ptr %353, i32 0, i32 5
  store i8 1, ptr %354, align 1, !tbaa !56
  br label %1279

355:                                              ; preds = %340
  br label %356

356:                                              ; preds = %355, %319
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %14, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %14, align 4, !tbaa !9
  br label %259, !llvm.loop !57

360:                                              ; preds = %259
  br label %361

361:                                              ; preds = %360, %228
  %362 = load ptr, ptr %8, align 8, !tbaa !5
  %363 = icmp ne ptr %362, null
  br i1 %363, label %364, label %477

364:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.Parse, ptr %365, i32 0, i32 18
  %367 = load i32, ptr %366, align 8, !tbaa !40
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %366, align 8, !tbaa !40
  store i32 %368, ptr %44, align 4, !tbaa !9
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %369)
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %45, align 4, !tbaa !9
  %372 = load ptr, ptr %16, align 8, !tbaa !5
  %373 = load i32, ptr %44, align 4, !tbaa !9
  %374 = load i32, ptr %45, align 4, !tbaa !9
  %375 = call i32 @sqlite3VdbeAddOp3(ptr noundef %372, i32 noundef 15, i32 noundef %373, i32 noundef 0, i32 noundef %374)
  %376 = load i32, ptr %44, align 4, !tbaa !9
  call void @sqlite3SelectDestInit(ptr noundef %27, i32 noundef 13, i32 noundef %376)
  %377 = load i8, ptr %32, align 1, !tbaa !11
  %378 = zext i8 %377 to i32
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %382

380:                                              ; preds = %364
  %381 = load i32, ptr %39, align 4, !tbaa !9
  br label %383

382:                                              ; preds = %364
  br label %383

383:                                              ; preds = %382, %380
  %384 = phi i32 [ %381, %380 ], [ 0, %382 ]
  %385 = getelementptr inbounds %struct.SelectDest, ptr %27, i32 0, i32 3
  store i32 %384, ptr %385, align 4, !tbaa !58
  %386 = load ptr, ptr %12, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.Table, ptr %386, i32 0, i32 11
  %388 = load i16, ptr %387, align 2, !tbaa !41
  %389 = sext i16 %388 to i32
  %390 = getelementptr inbounds %struct.SelectDest, ptr %27, i32 0, i32 4
  store i32 %389, ptr %390, align 8, !tbaa !60
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = call i32 @sqlite3Select(ptr noundef %391, ptr noundef %392, ptr noundef %27)
  store i32 %393, ptr %46, align 4, !tbaa !9
  %394 = getelementptr inbounds %struct.SelectDest, ptr %27, i32 0, i32 3
  %395 = load i32, ptr %394, align 4, !tbaa !58
  store i32 %395, ptr %34, align 4, !tbaa !9
  %396 = load i32, ptr %46, align 4, !tbaa !9
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %409, label %398

398:                                              ; preds = %383
  %399 = load ptr, ptr %11, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.sqlite3, ptr %399, i32 0, i32 17
  %401 = load i8, ptr %400, align 1, !tbaa !17
  %402 = zext i8 %401 to i32
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %409, label %404

404:                                              ; preds = %398
  %405 = load ptr, ptr %6, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.Parse, ptr %405, i32 0, i32 16
  %407 = load i32, ptr %406, align 8, !tbaa !16
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %410

409:                                              ; preds = %404, %398, %383
  store i32 2, ptr %50, align 4
  br label %474

410:                                              ; preds = %404
  %411 = load ptr, ptr %16, align 8, !tbaa !5
  %412 = load i32, ptr %44, align 4, !tbaa !9
  call void @sqlite3VdbeEndCoroutine(ptr noundef %411, i32 noundef %412)
  %413 = load ptr, ptr %16, align 8, !tbaa !5
  %414 = load i32, ptr %45, align 4, !tbaa !9
  %415 = sub nsw i32 %414, 1
  call void @sqlite3VdbeJumpHere(ptr noundef %413, i32 noundef %415)
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.Select, ptr %416, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8, !tbaa !27
  %419 = getelementptr inbounds %struct.ExprList, ptr %418, i32 0, i32 0
  %420 = load i32, ptr %419, align 8, !tbaa !61
  store i32 %420, ptr %18, align 4, !tbaa !9
  %421 = load ptr, ptr %42, align 8, !tbaa !5
  %422 = icmp ne ptr %421, null
  br i1 %422, label %429, label %423

423:                                              ; preds = %410
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = load i32, ptr %28, align 4, !tbaa !9
  %426 = load ptr, ptr %12, align 8, !tbaa !5
  %427 = call i32 @readsTable(ptr noundef %424, i32 noundef %425, ptr noundef %426)
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %430

429:                                              ; preds = %423, %410
  store i8 1, ptr %29, align 1, !tbaa !11
  br label %430

430:                                              ; preds = %429, %423
  %431 = load i8, ptr %29, align 1, !tbaa !11
  %432 = icmp ne i8 %431, 0
  br i1 %432, label %433, label %473

433:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.Parse, ptr %434, i32 0, i32 17
  %436 = load i32, ptr %435, align 4, !tbaa !63
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %435, align 4, !tbaa !63
  store i32 %436, ptr %24, align 4, !tbaa !9
  %438 = load ptr, ptr %6, align 8, !tbaa !5
  %439 = call i32 @sqlite3GetTempReg(ptr noundef %438)
  store i32 %439, ptr %47, align 4, !tbaa !9
  %440 = load ptr, ptr %6, align 8, !tbaa !5
  %441 = call i32 @sqlite3GetTempReg(ptr noundef %440)
  store i32 %441, ptr %48, align 4, !tbaa !9
  %442 = load ptr, ptr %16, align 8, !tbaa !5
  %443 = load i32, ptr %24, align 4, !tbaa !9
  %444 = load i32, ptr %18, align 4, !tbaa !9
  %445 = call i32 @sqlite3VdbeAddOp2(ptr noundef %442, i32 noundef 108, i32 noundef %443, i32 noundef %444)
  %446 = load ptr, ptr %16, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.SelectDest, ptr %27, i32 0, i32 2
  %448 = load i32, ptr %447, align 8, !tbaa !64
  %449 = call i32 @sqlite3VdbeAddOp1(ptr noundef %446, i32 noundef 16, i32 noundef %448)
  store i32 %449, ptr %49, align 4, !tbaa !9
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = load i32, ptr %34, align 4, !tbaa !9
  %452 = load i32, ptr %18, align 4, !tbaa !9
  %453 = load i32, ptr %47, align 4, !tbaa !9
  %454 = call i32 @sqlite3VdbeAddOp3(ptr noundef %450, i32 noundef 100, i32 noundef %451, i32 noundef %452, i32 noundef %453)
  %455 = load ptr, ptr %16, align 8, !tbaa !5
  %456 = load i32, ptr %24, align 4, !tbaa !9
  %457 = load i32, ptr %48, align 4, !tbaa !9
  %458 = call i32 @sqlite3VdbeAddOp2(ptr noundef %455, i32 noundef 115, i32 noundef %456, i32 noundef %457)
  %459 = load ptr, ptr %16, align 8, !tbaa !5
  %460 = load i32, ptr %24, align 4, !tbaa !9
  %461 = load i32, ptr %47, align 4, !tbaa !9
  %462 = load i32, ptr %48, align 4, !tbaa !9
  %463 = call i32 @sqlite3VdbeAddOp3(ptr noundef %459, i32 noundef 116, i32 noundef %460, i32 noundef %461, i32 noundef %462)
  %464 = load ptr, ptr %16, align 8, !tbaa !5
  %465 = load i32, ptr %49, align 4, !tbaa !9
  %466 = call i32 @sqlite3VdbeGoto(ptr noundef %464, i32 noundef %465)
  %467 = load ptr, ptr %16, align 8, !tbaa !5
  %468 = load i32, ptr %49, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %467, i32 noundef %468)
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = load i32, ptr %47, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %469, i32 noundef %470)
  %471 = load ptr, ptr %6, align 8, !tbaa !5
  %472 = load i32, ptr %48, align 4, !tbaa !9
  call void @sqlite3ReleaseTempReg(ptr noundef %471, i32 noundef %472)
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  br label %473

473:                                              ; preds = %433, %430
  store i32 0, ptr %50, align 4
  br label %474

474:                                              ; preds = %473, %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  %475 = load i32, ptr %50, align 4
  switch i32 %475, label %1290 [
    i32 0, label %476
    i32 2, label %1279
  ]

476:                                              ; preds = %474
  br label %496

477:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 56, ptr %51) #4
  call void @llvm.memset.p0.i64(ptr align 8 %51, i8 0, i64 56, i1 false)
  %478 = load ptr, ptr %6, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.NameContext, ptr %51, i32 0, i32 0
  store ptr %478, ptr %479, align 8, !tbaa !65
  store i32 -1, ptr %24, align 4, !tbaa !9
  %480 = load ptr, ptr %33, align 8, !tbaa !5
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %491

482:                                              ; preds = %477
  %483 = load ptr, ptr %33, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ExprList, ptr %483, i32 0, i32 0
  %485 = load i32, ptr %484, align 8, !tbaa !61
  store i32 %485, ptr %18, align 4, !tbaa !9
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = call i32 @sqlite3ResolveExprListNames(ptr noundef %51, ptr noundef %486)
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %490

489:                                              ; preds = %482
  store i32 2, ptr %50, align 4
  br label %493

490:                                              ; preds = %482
  br label %492

491:                                              ; preds = %477
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %491, %490
  store i32 0, ptr %50, align 4
  br label %493

493:                                              ; preds = %492, %489
  call void @llvm.lifetime.end.p0(i64 56, ptr %51) #4
  %494 = load i32, ptr %50, align 4
  switch i32 %494, label %1290 [
    i32 0, label %495
    i32 2, label %1279
  ]

495:                                              ; preds = %493
  br label %496

496:                                              ; preds = %495, %476
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = icmp eq ptr %497, null
  br i1 %498, label %499, label %507

499:                                              ; preds = %496
  %500 = load i32, ptr %18, align 4, !tbaa !9
  %501 = icmp sgt i32 %500, 0
  br i1 %501, label %502, label %507

502:                                              ; preds = %499
  %503 = load ptr, ptr %12, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.Table, ptr %503, i32 0, i32 10
  %505 = load i16, ptr %504, align 4, !tbaa !54
  %506 = sext i16 %505 to i32
  store i32 %506, ptr %22, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %502, %499, %496
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %508

508:                                              ; preds = %531, %507
  %509 = load i32, ptr %14, align 4, !tbaa !9
  %510 = load ptr, ptr %12, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.Table, ptr %510, i32 0, i32 11
  %512 = load i16, ptr %511, align 2, !tbaa !41
  %513 = sext i16 %512 to i32
  %514 = icmp slt i32 %509, %513
  br i1 %514, label %515, label %534

515:                                              ; preds = %508
  %516 = load ptr, ptr %12, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.Table, ptr %516, i32 0, i32 1
  %518 = load ptr, ptr %517, align 8, !tbaa !51
  %519 = load i32, ptr %14, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds %struct.Column, ptr %518, i64 %520
  %522 = getelementptr inbounds %struct.Column, ptr %521, i32 0, i32 6
  %523 = load i8, ptr %522, align 1, !tbaa !67
  %524 = zext i8 %523 to i32
  %525 = and i32 %524, 2
  %526 = icmp ne i32 %525, 0
  %527 = zext i1 %526 to i64
  %528 = select i1 %526, i32 1, i32 0
  %529 = load i32, ptr %19, align 4, !tbaa !9
  %530 = add nsw i32 %529, %528
  store i32 %530, ptr %19, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %515
  %532 = load i32, ptr %14, align 4, !tbaa !9
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr %14, align 4, !tbaa !9
  br label %508, !llvm.loop !68

534:                                              ; preds = %508
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = icmp eq ptr %535, null
  br i1 %536, label %537, label %559

537:                                              ; preds = %534
  %538 = load i32, ptr %18, align 4, !tbaa !9
  %539 = icmp ne i32 %538, 0
  br i1 %539, label %540, label %559

540:                                              ; preds = %537
  %541 = load i32, ptr %18, align 4, !tbaa !9
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.Table, ptr %542, i32 0, i32 11
  %544 = load i16, ptr %543, align 2, !tbaa !41
  %545 = sext i16 %544 to i32
  %546 = load i32, ptr %19, align 4, !tbaa !9
  %547 = sub nsw i32 %545, %546
  %548 = icmp ne i32 %541, %547
  br i1 %548, label %549, label %559

549:                                              ; preds = %540
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  %551 = load ptr, ptr %7, align 8, !tbaa !5
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.Table, ptr %552, i32 0, i32 11
  %554 = load i16, ptr %553, align 2, !tbaa !41
  %555 = sext i16 %554 to i32
  %556 = load i32, ptr %19, align 4, !tbaa !9
  %557 = sub nsw i32 %555, %556
  %558 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %550, ptr noundef @.str.1, ptr noundef %551, i32 noundef 0, i32 noundef %557, i32 noundef %558)
  br label %1279

559:                                              ; preds = %540, %537, %534
  %560 = load ptr, ptr %9, align 8, !tbaa !5
  %561 = icmp ne ptr %560, null
  br i1 %561, label %562, label %574

562:                                              ; preds = %559
  %563 = load i32, ptr %18, align 4, !tbaa !9
  %564 = load ptr, ptr %9, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.IdList, ptr %564, i32 0, i32 1
  %566 = load i32, ptr %565, align 8, !tbaa !43
  %567 = icmp ne i32 %563, %566
  br i1 %567, label %568, label %574

568:                                              ; preds = %562
  %569 = load ptr, ptr %6, align 8, !tbaa !5
  %570 = load i32, ptr %18, align 4, !tbaa !9
  %571 = load ptr, ptr %9, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.IdList, ptr %571, i32 0, i32 1
  %573 = load i32, ptr %572, align 8, !tbaa !43
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %569, ptr noundef @.str.2, i32 noundef %570, i32 noundef %573)
  br label %1279

574:                                              ; preds = %562, %559
  %575 = load ptr, ptr %11, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.sqlite3, ptr %575, i32 0, i32 6
  %577 = load i32, ptr %576, align 4, !tbaa !69
  %578 = and i32 %577, 128
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %588

580:                                              ; preds = %574
  %581 = load ptr, ptr %6, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.Parse, ptr %581, i32 0, i32 18
  %583 = load i32, ptr %582, align 8, !tbaa !40
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr %582, align 8, !tbaa !40
  store i32 %584, ptr %36, align 4, !tbaa !9
  %585 = load ptr, ptr %16, align 8, !tbaa !5
  %586 = load i32, ptr %36, align 4, !tbaa !9
  %587 = call i32 @sqlite3VdbeAddOp2(ptr noundef %585, i32 noundef 77, i32 noundef 0, i32 noundef %586)
  br label %588

588:                                              ; preds = %580, %574
  %589 = load i32, ptr %41, align 4, !tbaa !9
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %639, label %591

591:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  %592 = load ptr, ptr %6, align 8, !tbaa !5
  %593 = load ptr, ptr %12, align 8, !tbaa !5
  %594 = call i32 @sqlite3OpenTableAndIndices(ptr noundef %592, ptr noundef %593, i32 noundef 106, i8 noundef zeroext 0, i32 noundef -1, ptr noundef null, ptr noundef %20, ptr noundef %21)
  store i32 %594, ptr %52, align 4, !tbaa !9
  %595 = load ptr, ptr %11, align 8, !tbaa !5
  %596 = load i32, ptr %52, align 4, !tbaa !9
  %597 = add nsw i32 %596, 1
  %598 = sext i32 %597 to i64
  %599 = mul i64 4, %598
  %600 = call ptr @sqlite3DbMallocRawNN(ptr noundef %595, i64 noundef %599)
  store ptr %600, ptr %40, align 8, !tbaa !5
  %601 = load ptr, ptr %40, align 8, !tbaa !5
  %602 = icmp eq ptr %601, null
  br i1 %602, label %603, label %604

603:                                              ; preds = %591
  store i32 2, ptr %50, align 4
  br label %636

604:                                              ; preds = %591
  store i32 0, ptr %14, align 4, !tbaa !9
  %605 = load ptr, ptr %12, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.Table, ptr %605, i32 0, i32 2
  %607 = load ptr, ptr %606, align 8, !tbaa !70
  store ptr %607, ptr %17, align 8, !tbaa !5
  br label %608

608:                                              ; preds = %629, %604
  %609 = load i32, ptr %14, align 4, !tbaa !9
  %610 = load i32, ptr %52, align 4, !tbaa !9
  %611 = icmp slt i32 %609, %610
  br i1 %611, label %612, label %635

612:                                              ; preds = %608
  %613 = load ptr, ptr %6, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.Parse, ptr %613, i32 0, i32 18
  %615 = load i32, ptr %614, align 8, !tbaa !40
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %614, align 8, !tbaa !40
  %617 = load ptr, ptr %40, align 8, !tbaa !5
  %618 = load i32, ptr %14, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %617, i64 %619
  store i32 %616, ptr %620, align 4, !tbaa !9
  %621 = load ptr, ptr %17, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.Index, ptr %621, i32 0, i32 14
  %623 = load i16, ptr %622, align 8, !tbaa !71
  %624 = zext i16 %623 to i32
  %625 = load ptr, ptr %6, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.Parse, ptr %625, i32 0, i32 18
  %627 = load i32, ptr %626, align 8, !tbaa !40
  %628 = add nsw i32 %627, %624
  store i32 %628, ptr %626, align 8, !tbaa !40
  br label %629

629:                                              ; preds = %612
  %630 = load ptr, ptr %17, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.Index, ptr %630, i32 0, i32 5
  %632 = load ptr, ptr %631, align 8, !tbaa !73
  store ptr %632, ptr %17, align 8, !tbaa !5
  %633 = load i32, ptr %14, align 4, !tbaa !9
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %14, align 4, !tbaa !9
  br label %608, !llvm.loop !74

635:                                              ; preds = %608
  store i32 0, ptr %50, align 4
  br label %636

636:                                              ; preds = %635, %603
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  %637 = load i32, ptr %50, align 4
  switch i32 %637, label %1290 [
    i32 0, label %638
    i32 2, label %1279
  ]

638:                                              ; preds = %636
  br label %639

639:                                              ; preds = %638, %588
  %640 = load i8, ptr %29, align 1, !tbaa !11
  %641 = icmp ne i8 %640, 0
  br i1 %641, label %642, label %648

642:                                              ; preds = %639
  %643 = load ptr, ptr %16, align 8, !tbaa !5
  %644 = load i32, ptr %24, align 4, !tbaa !9
  %645 = call i32 @sqlite3VdbeAddOp1(ptr noundef %643, i32 noundef 58, i32 noundef %644)
  store i32 %645, ptr %25, align 4, !tbaa !9
  %646 = load ptr, ptr %16, align 8, !tbaa !5
  %647 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %646)
  store i32 %647, ptr %26, align 4, !tbaa !9
  br label %657

648:                                              ; preds = %639
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = icmp ne ptr %649, null
  br i1 %650, label %651, label %656

651:                                              ; preds = %648
  %652 = load ptr, ptr %16, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.SelectDest, ptr %27, i32 0, i32 2
  %654 = load i32, ptr %653, align 8, !tbaa !64
  %655 = call i32 @sqlite3VdbeAddOp1(ptr noundef %652, i32 noundef 16, i32 noundef %654)
  store i32 %655, ptr %26, align 4, !tbaa !9
  store i32 %655, ptr %25, align 4, !tbaa !9
  br label %656

656:                                              ; preds = %651, %648
  br label %657

657:                                              ; preds = %656, %642
  %658 = load ptr, ptr %16, align 8, !tbaa !5
  %659 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %658)
  store i32 %659, ptr %23, align 4, !tbaa !9
  %660 = load i32, ptr %43, align 4, !tbaa !9
  %661 = and i32 %660, 1
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %663, label %842

663:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  %664 = load ptr, ptr %6, align 8, !tbaa !5
  %665 = load ptr, ptr %12, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.Table, ptr %665, i32 0, i32 11
  %667 = load i16, ptr %666, align 2, !tbaa !41
  %668 = sext i16 %667 to i32
  %669 = add nsw i32 %668, 1
  %670 = call i32 @sqlite3GetTempRange(ptr noundef %664, i32 noundef %669)
  store i32 %670, ptr %53, align 4, !tbaa !9
  %671 = load i32, ptr %22, align 4, !tbaa !9
  %672 = icmp slt i32 %671, 0
  br i1 %672, label %673, label %677

673:                                              ; preds = %663
  %674 = load ptr, ptr %16, align 8, !tbaa !5
  %675 = load i32, ptr %53, align 4, !tbaa !9
  %676 = call i32 @sqlite3VdbeAddOp2(ptr noundef %674, i32 noundef 77, i32 noundef -1, i32 noundef %675)
  br label %709

677:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  %678 = load i8, ptr %29, align 1, !tbaa !11
  %679 = icmp ne i8 %678, 0
  br i1 %679, label %680, label %686

680:                                              ; preds = %677
  %681 = load ptr, ptr %16, align 8, !tbaa !5
  %682 = load i32, ptr %24, align 4, !tbaa !9
  %683 = load i32, ptr %22, align 4, !tbaa !9
  %684 = load i32, ptr %53, align 4, !tbaa !9
  %685 = call i32 @sqlite3VdbeAddOp3(ptr noundef %681, i32 noundef 98, i32 noundef %682, i32 noundef %683, i32 noundef %684)
  br label %697

686:                                              ; preds = %677
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = load ptr, ptr %33, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ExprList, ptr %688, i32 0, i32 1
  %690 = load ptr, ptr %689, align 8, !tbaa !75
  %691 = load i32, ptr %22, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds %struct.ExprList_item, ptr %690, i64 %692
  %694 = getelementptr inbounds %struct.ExprList_item, ptr %693, i32 0, i32 0
  %695 = load ptr, ptr %694, align 8, !tbaa !76
  %696 = load i32, ptr %53, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %687, ptr noundef %695, i32 noundef %696)
  br label %697

697:                                              ; preds = %686, %680
  %698 = load ptr, ptr %16, align 8, !tbaa !5
  %699 = load i32, ptr %53, align 4, !tbaa !9
  %700 = call i32 @sqlite3VdbeAddOp1(ptr noundef %698, i32 noundef 35, i32 noundef %699)
  store i32 %700, ptr %54, align 4, !tbaa !9
  %701 = load ptr, ptr %16, align 8, !tbaa !5
  %702 = load i32, ptr %53, align 4, !tbaa !9
  %703 = call i32 @sqlite3VdbeAddOp2(ptr noundef %701, i32 noundef 77, i32 noundef -1, i32 noundef %702)
  %704 = load ptr, ptr %16, align 8, !tbaa !5
  %705 = load i32, ptr %54, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %704, i32 noundef %705)
  %706 = load ptr, ptr %16, align 8, !tbaa !5
  %707 = load i32, ptr %53, align 4, !tbaa !9
  %708 = call i32 @sqlite3VdbeAddOp1(ptr noundef %706, i32 noundef 17, i32 noundef %707)
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  br label %709

709:                                              ; preds = %697, %673
  store i32 0, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %811, %709
  %711 = load i32, ptr %14, align 4, !tbaa !9
  %712 = load ptr, ptr %12, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.Table, ptr %712, i32 0, i32 11
  %714 = load i16, ptr %713, align 2, !tbaa !41
  %715 = sext i16 %714 to i32
  %716 = icmp slt i32 %711, %715
  br i1 %716, label %717, label %814

717:                                              ; preds = %710
  %718 = load ptr, ptr %9, align 8, !tbaa !5
  %719 = icmp ne ptr %718, null
  br i1 %719, label %720, label %744

720:                                              ; preds = %717
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %721

721:                                              ; preds = %740, %720
  %722 = load i32, ptr %15, align 4, !tbaa !9
  %723 = load ptr, ptr %9, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.IdList, ptr %723, i32 0, i32 1
  %725 = load i32, ptr %724, align 8, !tbaa !43
  %726 = icmp slt i32 %722, %725
  br i1 %726, label %727, label %743

727:                                              ; preds = %721
  %728 = load ptr, ptr %9, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.IdList, ptr %728, i32 0, i32 0
  %730 = load ptr, ptr %729, align 8, !tbaa !45
  %731 = load i32, ptr %15, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds %struct.IdList_item, ptr %730, i64 %732
  %734 = getelementptr inbounds %struct.IdList_item, ptr %733, i32 0, i32 1
  %735 = load i32, ptr %734, align 8, !tbaa !46
  %736 = load i32, ptr %14, align 4, !tbaa !9
  %737 = icmp eq i32 %735, %736
  br i1 %737, label %738, label %739

738:                                              ; preds = %727
  br label %743

739:                                              ; preds = %727
  br label %740

740:                                              ; preds = %739
  %741 = load i32, ptr %15, align 4, !tbaa !9
  %742 = add nsw i32 %741, 1
  store i32 %742, ptr %15, align 4, !tbaa !9
  br label %721, !llvm.loop !78

743:                                              ; preds = %738, %721
  br label %744

744:                                              ; preds = %743, %717
  %745 = load i8, ptr %29, align 1, !tbaa !11
  %746 = icmp ne i8 %745, 0
  br i1 %746, label %750, label %747

747:                                              ; preds = %744
  %748 = load ptr, ptr %33, align 8, !tbaa !5
  %749 = icmp ne ptr %748, null
  br i1 %749, label %750, label %763

750:                                              ; preds = %747, %744
  %751 = load ptr, ptr %9, align 8, !tbaa !5
  %752 = icmp ne ptr %751, null
  br i1 %752, label %753, label %759

753:                                              ; preds = %750
  %754 = load i32, ptr %15, align 4, !tbaa !9
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.IdList, ptr %755, i32 0, i32 1
  %757 = load i32, ptr %756, align 8, !tbaa !43
  %758 = icmp sge i32 %754, %757
  br i1 %758, label %763, label %759

759:                                              ; preds = %753, %750
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = icmp eq ptr %760, null
  br i1 %761, label %762, label %777

762:                                              ; preds = %759
  br i1 false, label %763, label %777

763:                                              ; preds = %762, %753, %747
  %764 = load ptr, ptr %6, align 8, !tbaa !5
  %765 = load ptr, ptr %12, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.Table, ptr %765, i32 0, i32 1
  %767 = load ptr, ptr %766, align 8, !tbaa !51
  %768 = load i32, ptr %14, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.Column, ptr %767, i64 %769
  %771 = getelementptr inbounds %struct.Column, ptr %770, i32 0, i32 1
  %772 = load ptr, ptr %771, align 8, !tbaa !79
  %773 = load i32, ptr %53, align 4, !tbaa !9
  %774 = load i32, ptr %14, align 4, !tbaa !9
  %775 = add nsw i32 %773, %774
  %776 = add nsw i32 %775, 1
  call void @sqlite3ExprCode(ptr noundef %764, ptr noundef %772, i32 noundef %776)
  br label %804

777:                                              ; preds = %762, %759
  %778 = load i8, ptr %29, align 1, !tbaa !11
  %779 = icmp ne i8 %778, 0
  br i1 %779, label %780, label %789

780:                                              ; preds = %777
  %781 = load ptr, ptr %16, align 8, !tbaa !5
  %782 = load i32, ptr %24, align 4, !tbaa !9
  %783 = load i32, ptr %15, align 4, !tbaa !9
  %784 = load i32, ptr %53, align 4, !tbaa !9
  %785 = load i32, ptr %14, align 4, !tbaa !9
  %786 = add nsw i32 %784, %785
  %787 = add nsw i32 %786, 1
  %788 = call i32 @sqlite3VdbeAddOp3(ptr noundef %781, i32 noundef 98, i32 noundef %782, i32 noundef %783, i32 noundef %787)
  br label %803

789:                                              ; preds = %777
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = load ptr, ptr %33, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.ExprList, ptr %791, i32 0, i32 1
  %793 = load ptr, ptr %792, align 8, !tbaa !75
  %794 = load i32, ptr %15, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds %struct.ExprList_item, ptr %793, i64 %795
  %797 = getelementptr inbounds %struct.ExprList_item, ptr %796, i32 0, i32 0
  %798 = load ptr, ptr %797, align 8, !tbaa !76
  %799 = load i32, ptr %53, align 4, !tbaa !9
  %800 = load i32, ptr %14, align 4, !tbaa !9
  %801 = add nsw i32 %799, %800
  %802 = add nsw i32 %801, 1
  call void @sqlite3ExprCodeAndCache(ptr noundef %790, ptr noundef %798, i32 noundef %802)
  br label %803

803:                                              ; preds = %789, %780
  br label %804

804:                                              ; preds = %803, %763
  %805 = load ptr, ptr %9, align 8, !tbaa !5
  %806 = icmp eq ptr %805, null
  br i1 %806, label %807, label %810

807:                                              ; preds = %804
  %808 = load i32, ptr %15, align 4, !tbaa !9
  %809 = add nsw i32 %808, 1
  store i32 %809, ptr %15, align 4, !tbaa !9
  br label %810

810:                                              ; preds = %807, %804
  br label %811

811:                                              ; preds = %810
  %812 = load i32, ptr %14, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %14, align 4, !tbaa !9
  br label %710, !llvm.loop !80

814:                                              ; preds = %710
  %815 = load i32, ptr %41, align 4, !tbaa !9
  %816 = icmp ne i32 %815, 0
  br i1 %816, label %822, label %817

817:                                              ; preds = %814
  %818 = load ptr, ptr %16, align 8, !tbaa !5
  %819 = load ptr, ptr %12, align 8, !tbaa !5
  %820 = load i32, ptr %53, align 4, !tbaa !9
  %821 = add nsw i32 %820, 1
  call void @sqlite3TableAffinity(ptr noundef %818, ptr noundef %819, i32 noundef %821)
  br label %822

822:                                              ; preds = %817, %814
  %823 = load ptr, ptr %6, align 8, !tbaa !5
  %824 = load ptr, ptr %42, align 8, !tbaa !5
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  %826 = load i32, ptr %53, align 4, !tbaa !9
  %827 = load ptr, ptr %12, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.Table, ptr %827, i32 0, i32 11
  %829 = load i16, ptr %828, align 2, !tbaa !41
  %830 = sext i16 %829 to i32
  %831 = sub nsw i32 %826, %830
  %832 = sub nsw i32 %831, 1
  %833 = load i32, ptr %10, align 4, !tbaa !9
  %834 = load i32, ptr %23, align 4, !tbaa !9
  call void @sqlite3CodeRowTrigger(ptr noundef %823, ptr noundef %824, i32 noundef 108, ptr noundef null, i32 noundef 1, ptr noundef %825, i32 noundef %832, i32 noundef %833, i32 noundef %834)
  %835 = load ptr, ptr %6, align 8, !tbaa !5
  %836 = load i32, ptr %53, align 4, !tbaa !9
  %837 = load ptr, ptr %12, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.Table, ptr %837, i32 0, i32 11
  %839 = load i16, ptr %838, align 2, !tbaa !41
  %840 = sext i16 %839 to i32
  %841 = add nsw i32 %840, 1
  call void @sqlite3ReleaseTempRange(ptr noundef %835, i32 noundef %836, i32 noundef %841)
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  br label %842

842:                                              ; preds = %822, %657
  %843 = load i32, ptr %41, align 4, !tbaa !9
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %1190, label %845

845:                                              ; preds = %842
  %846 = load ptr, ptr %12, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.Table, ptr %846, i32 0, i32 16
  %848 = load i32, ptr %847, align 4, !tbaa !42
  %849 = icmp ne i32 %848, 0
  br i1 %849, label %850, label %854

850:                                              ; preds = %845
  %851 = load ptr, ptr %16, align 8, !tbaa !5
  %852 = load i32, ptr %37, align 4, !tbaa !9
  %853 = call i32 @sqlite3VdbeAddOp2(ptr noundef %851, i32 noundef 80, i32 noundef 0, i32 noundef %852)
  br label %854

854:                                              ; preds = %850, %845
  %855 = load i32, ptr %22, align 4, !tbaa !9
  %856 = icmp sge i32 %855, 0
  br i1 %856, label %857, label %948

857:                                              ; preds = %854
  %858 = load i8, ptr %29, align 1, !tbaa !11
  %859 = icmp ne i8 %858, 0
  br i1 %859, label %860, label %866

860:                                              ; preds = %857
  %861 = load ptr, ptr %16, align 8, !tbaa !5
  %862 = load i32, ptr %24, align 4, !tbaa !9
  %863 = load i32, ptr %22, align 4, !tbaa !9
  %864 = load i32, ptr %38, align 4, !tbaa !9
  %865 = call i32 @sqlite3VdbeAddOp3(ptr noundef %861, i32 noundef 98, i32 noundef %862, i32 noundef %863, i32 noundef %864)
  br label %916

866:                                              ; preds = %857
  %867 = load ptr, ptr %8, align 8, !tbaa !5
  %868 = icmp ne ptr %867, null
  br i1 %868, label %869, label %876

869:                                              ; preds = %866
  %870 = load ptr, ptr %16, align 8, !tbaa !5
  %871 = load i32, ptr %34, align 4, !tbaa !9
  %872 = load i32, ptr %22, align 4, !tbaa !9
  %873 = add nsw i32 %871, %872
  %874 = load i32, ptr %38, align 4, !tbaa !9
  %875 = call i32 @sqlite3VdbeAddOp2(ptr noundef %870, i32 noundef 85, i32 noundef %873, i32 noundef %874)
  br label %915

876:                                              ; preds = %866
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  %877 = load ptr, ptr %6, align 8, !tbaa !5
  %878 = load ptr, ptr %33, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ExprList, ptr %878, i32 0, i32 1
  %880 = load ptr, ptr %879, align 8, !tbaa !75
  %881 = load i32, ptr %22, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct.ExprList_item, ptr %880, i64 %882
  %884 = getelementptr inbounds %struct.ExprList_item, ptr %883, i32 0, i32 0
  %885 = load ptr, ptr %884, align 8, !tbaa !76
  %886 = load i32, ptr %38, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %877, ptr noundef %885, i32 noundef %886)
  %887 = load ptr, ptr %16, align 8, !tbaa !5
  %888 = call ptr @sqlite3VdbeGetOp(ptr noundef %887, i32 noundef -1)
  store ptr %888, ptr %55, align 8, !tbaa !5
  %889 = load ptr, ptr %55, align 8, !tbaa !5
  %890 = icmp ne ptr %889, null
  br i1 %890, label %891, label %914

891:                                              ; preds = %876
  %892 = load ptr, ptr %55, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.VdbeOp, ptr %892, i32 0, i32 0
  %894 = load i8, ptr %893, align 8, !tbaa !81
  %895 = zext i8 %894 to i32
  %896 = icmp eq i32 %895, 80
  br i1 %896, label %897, label %914

897:                                              ; preds = %891
  %898 = load ptr, ptr %12, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.Table, ptr %898, i32 0, i32 16
  %900 = load i32, ptr %899, align 4, !tbaa !42
  %901 = icmp ne i32 %900, 0
  br i1 %901, label %914, label %902

902:                                              ; preds = %897
  store i8 1, ptr %30, align 1, !tbaa !11
  %903 = load ptr, ptr %55, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.VdbeOp, ptr %903, i32 0, i32 0
  store i8 115, ptr %904, align 8, !tbaa !81
  %905 = load i32, ptr %20, align 4, !tbaa !9
  %906 = load ptr, ptr %55, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.VdbeOp, ptr %906, i32 0, i32 3
  store i32 %905, ptr %907, align 4, !tbaa !83
  %908 = load i32, ptr %38, align 4, !tbaa !9
  %909 = load ptr, ptr %55, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.VdbeOp, ptr %909, i32 0, i32 4
  store i32 %908, ptr %910, align 8, !tbaa !84
  %911 = load i32, ptr %35, align 4, !tbaa !9
  %912 = load ptr, ptr %55, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.VdbeOp, ptr %912, i32 0, i32 5
  store i32 %911, ptr %913, align 4, !tbaa !85
  br label %914

914:                                              ; preds = %902, %897, %891, %876
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  br label %915

915:                                              ; preds = %914, %869
  br label %916

916:                                              ; preds = %915, %860
  %917 = load i8, ptr %30, align 1, !tbaa !11
  %918 = icmp ne i8 %917, 0
  br i1 %918, label %947, label %919

919:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %920 = load ptr, ptr %12, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.Table, ptr %920, i32 0, i32 16
  %922 = load i32, ptr %921, align 4, !tbaa !42
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %935, label %924

924:                                              ; preds = %919
  %925 = load ptr, ptr %16, align 8, !tbaa !5
  %926 = load i32, ptr %38, align 4, !tbaa !9
  %927 = call i32 @sqlite3VdbeAddOp1(ptr noundef %925, i32 noundef 35, i32 noundef %926)
  store i32 %927, ptr %56, align 4, !tbaa !9
  %928 = load ptr, ptr %16, align 8, !tbaa !5
  %929 = load i32, ptr %20, align 4, !tbaa !9
  %930 = load i32, ptr %38, align 4, !tbaa !9
  %931 = load i32, ptr %35, align 4, !tbaa !9
  %932 = call i32 @sqlite3VdbeAddOp3(ptr noundef %928, i32 noundef 115, i32 noundef %929, i32 noundef %930, i32 noundef %931)
  %933 = load ptr, ptr %16, align 8, !tbaa !5
  %934 = load i32, ptr %56, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %933, i32 noundef %934)
  br label %943

935:                                              ; preds = %919
  %936 = load ptr, ptr %16, align 8, !tbaa !5
  %937 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %936)
  store i32 %937, ptr %56, align 4, !tbaa !9
  %938 = load ptr, ptr %16, align 8, !tbaa !5
  %939 = load i32, ptr %38, align 4, !tbaa !9
  %940 = load i32, ptr %56, align 4, !tbaa !9
  %941 = add nsw i32 %940, 2
  %942 = call i32 @sqlite3VdbeAddOp2(ptr noundef %938, i32 noundef 34, i32 noundef %939, i32 noundef %941)
  br label %943

943:                                              ; preds = %935, %924
  %944 = load ptr, ptr %16, align 8, !tbaa !5
  %945 = load i32, ptr %38, align 4, !tbaa !9
  %946 = call i32 @sqlite3VdbeAddOp1(ptr noundef %944, i32 noundef 17, i32 noundef %945)
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  br label %947

947:                                              ; preds = %943, %916
  br label %968

948:                                              ; preds = %854
  %949 = load ptr, ptr %12, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.Table, ptr %949, i32 0, i32 16
  %951 = load i32, ptr %950, align 4, !tbaa !42
  %952 = icmp ne i32 %951, 0
  br i1 %952, label %957, label %953

953:                                              ; preds = %948
  %954 = load i8, ptr %31, align 1, !tbaa !11
  %955 = zext i8 %954 to i32
  %956 = icmp ne i32 %955, 0
  br i1 %956, label %957, label %961

957:                                              ; preds = %953, %948
  %958 = load ptr, ptr %16, align 8, !tbaa !5
  %959 = load i32, ptr %38, align 4, !tbaa !9
  %960 = call i32 @sqlite3VdbeAddOp2(ptr noundef %958, i32 noundef 80, i32 noundef 0, i32 noundef %959)
  br label %967

961:                                              ; preds = %953
  %962 = load ptr, ptr %16, align 8, !tbaa !5
  %963 = load i32, ptr %20, align 4, !tbaa !9
  %964 = load i32, ptr %38, align 4, !tbaa !9
  %965 = load i32, ptr %35, align 4, !tbaa !9
  %966 = call i32 @sqlite3VdbeAddOp3(ptr noundef %962, i32 noundef 115, i32 noundef %963, i32 noundef %964, i32 noundef %965)
  store i8 1, ptr %30, align 1, !tbaa !11
  br label %967

967:                                              ; preds = %961, %957
  br label %968

968:                                              ; preds = %967, %947
  %969 = load ptr, ptr %6, align 8, !tbaa !5
  %970 = load i32, ptr %35, align 4, !tbaa !9
  %971 = load i32, ptr %38, align 4, !tbaa !9
  call void @autoIncStep(ptr noundef %969, i32 noundef %970, i32 noundef %971)
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %972

972:                                              ; preds = %1108, %968
  %973 = load i32, ptr %14, align 4, !tbaa !9
  %974 = load ptr, ptr %12, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.Table, ptr %974, i32 0, i32 11
  %976 = load i16, ptr %975, align 2, !tbaa !41
  %977 = sext i16 %976 to i32
  %978 = icmp slt i32 %973, %977
  br i1 %978, label %979, label %1111

979:                                              ; preds = %972
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  %980 = load i32, ptr %38, align 4, !tbaa !9
  %981 = add nsw i32 %980, 1
  %982 = load i32, ptr %14, align 4, !tbaa !9
  %983 = add nsw i32 %981, %982
  store i32 %983, ptr %57, align 4, !tbaa !9
  %984 = load i32, ptr %14, align 4, !tbaa !9
  %985 = load ptr, ptr %12, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.Table, ptr %985, i32 0, i32 10
  %987 = load i16, ptr %986, align 4, !tbaa !54
  %988 = sext i16 %987 to i32
  %989 = icmp eq i32 %984, %988
  br i1 %989, label %990, label %994

990:                                              ; preds = %979
  %991 = load ptr, ptr %16, align 8, !tbaa !5
  %992 = load i32, ptr %57, align 4, !tbaa !9
  %993 = call i32 @sqlite3VdbeAddOp1(ptr noundef %991, i32 noundef 81, i32 noundef %992)
  store i32 27, ptr %50, align 4
  br label %1105

994:                                              ; preds = %979
  %995 = load ptr, ptr %9, align 8, !tbaa !5
  %996 = icmp eq ptr %995, null
  br i1 %996, label %997, label %1017

997:                                              ; preds = %994
  %998 = load ptr, ptr %12, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.Table, ptr %998, i32 0, i32 1
  %1000 = load ptr, ptr %999, align 8, !tbaa !51
  %1001 = load i32, ptr %14, align 4, !tbaa !9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds %struct.Column, ptr %1000, i64 %1002
  %1004 = getelementptr inbounds %struct.Column, ptr %1003, i32 0, i32 6
  %1005 = load i8, ptr %1004, align 1, !tbaa !67
  %1006 = zext i8 %1005 to i32
  %1007 = and i32 %1006, 2
  %1008 = icmp ne i32 %1007, 0
  br i1 %1008, label %1009, label %1012

1009:                                             ; preds = %997
  store i32 -1, ptr %15, align 4, !tbaa !9
  %1010 = load i32, ptr %19, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %19, align 4, !tbaa !9
  br label %1016

1012:                                             ; preds = %997
  %1013 = load i32, ptr %14, align 4, !tbaa !9
  %1014 = load i32, ptr %19, align 4, !tbaa !9
  %1015 = sub nsw i32 %1013, %1014
  store i32 %1015, ptr %15, align 4, !tbaa !9
  br label %1016

1016:                                             ; preds = %1012, %1009
  br label %1041

1017:                                             ; preds = %994
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1018

1018:                                             ; preds = %1037, %1017
  %1019 = load i32, ptr %15, align 4, !tbaa !9
  %1020 = load ptr, ptr %9, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.IdList, ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 8, !tbaa !43
  %1023 = icmp slt i32 %1019, %1022
  br i1 %1023, label %1024, label %1040

1024:                                             ; preds = %1018
  %1025 = load ptr, ptr %9, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.IdList, ptr %1025, i32 0, i32 0
  %1027 = load ptr, ptr %1026, align 8, !tbaa !45
  %1028 = load i32, ptr %15, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds %struct.IdList_item, ptr %1027, i64 %1029
  %1031 = getelementptr inbounds %struct.IdList_item, ptr %1030, i32 0, i32 1
  %1032 = load i32, ptr %1031, align 8, !tbaa !46
  %1033 = load i32, ptr %14, align 4, !tbaa !9
  %1034 = icmp eq i32 %1032, %1033
  br i1 %1034, label %1035, label %1036

1035:                                             ; preds = %1024
  br label %1040

1036:                                             ; preds = %1024
  br label %1037

1037:                                             ; preds = %1036
  %1038 = load i32, ptr %15, align 4, !tbaa !9
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr %15, align 4, !tbaa !9
  br label %1018, !llvm.loop !86

1040:                                             ; preds = %1035, %1018
  br label %1041

1041:                                             ; preds = %1040, %1016
  %1042 = load i32, ptr %15, align 4, !tbaa !9
  %1043 = icmp slt i32 %1042, 0
  br i1 %1043, label %1056, label %1044

1044:                                             ; preds = %1041
  %1045 = load i32, ptr %18, align 4, !tbaa !9
  %1046 = icmp eq i32 %1045, 0
  br i1 %1046, label %1056, label %1047

1047:                                             ; preds = %1044
  %1048 = load ptr, ptr %9, align 8, !tbaa !5
  %1049 = icmp ne ptr %1048, null
  br i1 %1049, label %1050, label %1067

1050:                                             ; preds = %1047
  %1051 = load i32, ptr %15, align 4, !tbaa !9
  %1052 = load ptr, ptr %9, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.IdList, ptr %1052, i32 0, i32 1
  %1054 = load i32, ptr %1053, align 8, !tbaa !43
  %1055 = icmp sge i32 %1051, %1054
  br i1 %1055, label %1056, label %1067

1056:                                             ; preds = %1050, %1044, %1041
  %1057 = load ptr, ptr %6, align 8, !tbaa !5
  %1058 = load ptr, ptr %12, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.Table, ptr %1058, i32 0, i32 1
  %1060 = load ptr, ptr %1059, align 8, !tbaa !51
  %1061 = load i32, ptr %14, align 4, !tbaa !9
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds %struct.Column, ptr %1060, i64 %1062
  %1064 = getelementptr inbounds %struct.Column, ptr %1063, i32 0, i32 1
  %1065 = load ptr, ptr %1064, align 8, !tbaa !79
  %1066 = load i32, ptr %57, align 4, !tbaa !9
  call void @sqlite3ExprCodeFactorable(ptr noundef %1057, ptr noundef %1065, i32 noundef %1066)
  br label %1104

1067:                                             ; preds = %1050, %1047
  %1068 = load i8, ptr %29, align 1, !tbaa !11
  %1069 = icmp ne i8 %1068, 0
  br i1 %1069, label %1070, label %1076

1070:                                             ; preds = %1067
  %1071 = load ptr, ptr %16, align 8, !tbaa !5
  %1072 = load i32, ptr %24, align 4, !tbaa !9
  %1073 = load i32, ptr %15, align 4, !tbaa !9
  %1074 = load i32, ptr %57, align 4, !tbaa !9
  %1075 = call i32 @sqlite3VdbeAddOp3(ptr noundef %1071, i32 noundef 98, i32 noundef %1072, i32 noundef %1073, i32 noundef %1074)
  br label %1103

1076:                                             ; preds = %1067
  %1077 = load ptr, ptr %8, align 8, !tbaa !5
  %1078 = icmp ne ptr %1077, null
  br i1 %1078, label %1079, label %1091

1079:                                             ; preds = %1076
  %1080 = load i32, ptr %34, align 4, !tbaa !9
  %1081 = load i32, ptr %39, align 4, !tbaa !9
  %1082 = icmp ne i32 %1080, %1081
  br i1 %1082, label %1083, label %1090

1083:                                             ; preds = %1079
  %1084 = load ptr, ptr %16, align 8, !tbaa !5
  %1085 = load i32, ptr %34, align 4, !tbaa !9
  %1086 = load i32, ptr %15, align 4, !tbaa !9
  %1087 = add nsw i32 %1085, %1086
  %1088 = load i32, ptr %57, align 4, !tbaa !9
  %1089 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1084, i32 noundef 86, i32 noundef %1087, i32 noundef %1088)
  br label %1090

1090:                                             ; preds = %1083, %1079
  br label %1102

1091:                                             ; preds = %1076
  %1092 = load ptr, ptr %6, align 8, !tbaa !5
  %1093 = load ptr, ptr %33, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ExprList, ptr %1093, i32 0, i32 1
  %1095 = load ptr, ptr %1094, align 8, !tbaa !75
  %1096 = load i32, ptr %15, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds %struct.ExprList_item, ptr %1095, i64 %1097
  %1099 = getelementptr inbounds %struct.ExprList_item, ptr %1098, i32 0, i32 0
  %1100 = load ptr, ptr %1099, align 8, !tbaa !76
  %1101 = load i32, ptr %57, align 4, !tbaa !9
  call void @sqlite3ExprCode(ptr noundef %1092, ptr noundef %1100, i32 noundef %1101)
  br label %1102

1102:                                             ; preds = %1091, %1090
  br label %1103

1103:                                             ; preds = %1102, %1070
  br label %1104

1104:                                             ; preds = %1103, %1056
  store i32 0, ptr %50, align 4
  br label %1105

1105:                                             ; preds = %1104, %990
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  %1106 = load i32, ptr %50, align 4
  switch i32 %1106, label %1290 [
    i32 0, label %1107
    i32 27, label %1108
  ]

1107:                                             ; preds = %1105
  br label %1108

1108:                                             ; preds = %1107, %1105
  %1109 = load i32, ptr %14, align 4, !tbaa !9
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr %14, align 4, !tbaa !9
  br label %972, !llvm.loop !87

1111:                                             ; preds = %972
  %1112 = load ptr, ptr %12, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.Table, ptr %1112, i32 0, i32 16
  %1114 = load i32, ptr %1113, align 4, !tbaa !42
  %1115 = icmp ne i32 %1114, 0
  br i1 %1115, label %1116, label %1141

1116:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  %1117 = load ptr, ptr %11, align 8, !tbaa !5
  %1118 = load ptr, ptr %12, align 8, !tbaa !5
  %1119 = call ptr @sqlite3GetVTable(ptr noundef %1117, ptr noundef %1118)
  store ptr %1119, ptr %58, align 8, !tbaa !5
  %1120 = load ptr, ptr %6, align 8, !tbaa !5
  %1121 = load ptr, ptr %12, align 8, !tbaa !5
  call void @sqlite3VtabMakeWritable(ptr noundef %1120, ptr noundef %1121)
  %1122 = load ptr, ptr %16, align 8, !tbaa !5
  %1123 = load ptr, ptr %12, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.Table, ptr %1123, i32 0, i32 11
  %1125 = load i16, ptr %1124, align 2, !tbaa !41
  %1126 = sext i16 %1125 to i32
  %1127 = add nsw i32 %1126, 2
  %1128 = load i32, ptr %37, align 4, !tbaa !9
  %1129 = load ptr, ptr %58, align 8, !tbaa !5
  %1130 = call i32 @sqlite3VdbeAddOp4(ptr noundef %1122, i32 noundef 12, i32 noundef 1, i32 noundef %1127, i32 noundef %1128, ptr noundef %1129, i32 noundef -8)
  %1131 = load ptr, ptr %16, align 8, !tbaa !5
  %1132 = load i32, ptr %10, align 4, !tbaa !9
  %1133 = icmp eq i32 %1132, 10
  br i1 %1133, label %1134, label %1135

1134:                                             ; preds = %1116
  br label %1137

1135:                                             ; preds = %1116
  %1136 = load i32, ptr %10, align 4, !tbaa !9
  br label %1137

1137:                                             ; preds = %1135, %1134
  %1138 = phi i32 [ 2, %1134 ], [ %1136, %1135 ]
  %1139 = trunc i32 %1138 to i16
  call void @sqlite3VdbeChangeP5(ptr noundef %1131, i16 noundef zeroext %1139)
  %1140 = load ptr, ptr %6, align 8, !tbaa !5
  call void @sqlite3MayAbort(ptr noundef %1140)
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  br label %1189

1141:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #4
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = load ptr, ptr %12, align 8, !tbaa !5
  %1144 = load ptr, ptr %40, align 8, !tbaa !5
  %1145 = load i32, ptr %20, align 4, !tbaa !9
  %1146 = load i32, ptr %21, align 4, !tbaa !9
  %1147 = load i32, ptr %37, align 4, !tbaa !9
  %1148 = load i32, ptr %22, align 4, !tbaa !9
  %1149 = icmp sge i32 %1148, 0
  %1150 = zext i1 %1149 to i32
  %1151 = trunc i32 %1150 to i8
  %1152 = load i32, ptr %10, align 4, !tbaa !9
  %1153 = trunc i32 %1152 to i8
  %1154 = load i32, ptr %23, align 4, !tbaa !9
  call void @sqlite3GenerateConstraintChecks(ptr noundef %1142, ptr noundef %1143, ptr noundef %1144, i32 noundef %1145, i32 noundef %1146, i32 noundef %1147, i32 noundef 0, i8 noundef zeroext %1151, i8 noundef zeroext %1153, i32 noundef %1154, ptr noundef %59, ptr noundef null)
  %1155 = load ptr, ptr %6, align 8, !tbaa !5
  %1156 = load ptr, ptr %12, align 8, !tbaa !5
  %1157 = load i32, ptr %37, align 4, !tbaa !9
  call void @sqlite3FkCheck(ptr noundef %1155, ptr noundef %1156, i32 noundef 0, i32 noundef %1157, ptr noundef null, i32 noundef 0)
  %1158 = load i32, ptr %59, align 4, !tbaa !9
  %1159 = icmp eq i32 %1158, 0
  br i1 %1159, label %1177, label %1160

1160:                                             ; preds = %1141
  %1161 = load ptr, ptr %42, align 8, !tbaa !5
  %1162 = icmp eq ptr %1161, null
  br i1 %1162, label %1163, label %1175

1163:                                             ; preds = %1160
  %1164 = load ptr, ptr %11, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.sqlite3, ptr %1164, i32 0, i32 6
  %1166 = load i32, ptr %1165, align 4, !tbaa !69
  %1167 = and i32 %1166, 524288
  %1168 = icmp eq i32 %1167, 0
  br i1 %1168, label %1173, label %1169

1169:                                             ; preds = %1163
  %1170 = load ptr, ptr %12, align 8, !tbaa !5
  %1171 = call ptr @sqlite3FkReferences(ptr noundef %1170)
  %1172 = icmp eq ptr %1171, null
  br label %1173

1173:                                             ; preds = %1169, %1163
  %1174 = phi i1 [ true, %1163 ], [ %1172, %1169 ]
  br label %1175

1175:                                             ; preds = %1173, %1160
  %1176 = phi i1 [ false, %1160 ], [ %1174, %1173 ]
  br label %1177

1177:                                             ; preds = %1175, %1141
  %1178 = phi i1 [ true, %1141 ], [ %1176, %1175 ]
  %1179 = zext i1 %1178 to i32
  store i32 %1179, ptr %60, align 4, !tbaa !9
  %1180 = load ptr, ptr %6, align 8, !tbaa !5
  %1181 = load ptr, ptr %12, align 8, !tbaa !5
  %1182 = load i32, ptr %20, align 4, !tbaa !9
  %1183 = load i32, ptr %21, align 4, !tbaa !9
  %1184 = load i32, ptr %37, align 4, !tbaa !9
  %1185 = load ptr, ptr %40, align 8, !tbaa !5
  %1186 = load i8, ptr %30, align 1, !tbaa !11
  %1187 = zext i8 %1186 to i32
  %1188 = load i32, ptr %60, align 4, !tbaa !9
  call void @sqlite3CompleteInsertion(ptr noundef %1180, ptr noundef %1181, i32 noundef %1182, i32 noundef %1183, i32 noundef %1184, ptr noundef %1185, i32 noundef 0, i32 noundef %1187, i32 noundef %1188)
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  br label %1189

1189:                                             ; preds = %1177, %1137
  br label %1190

1190:                                             ; preds = %1189, %842
  %1191 = load ptr, ptr %11, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.sqlite3, ptr %1191, i32 0, i32 6
  %1193 = load i32, ptr %1192, align 4, !tbaa !69
  %1194 = and i32 %1193, 128
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1200

1196:                                             ; preds = %1190
  %1197 = load ptr, ptr %16, align 8, !tbaa !5
  %1198 = load i32, ptr %36, align 4, !tbaa !9
  %1199 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1197, i32 noundef 92, i32 noundef %1198, i32 noundef 1)
  br label %1200

1200:                                             ; preds = %1196, %1190
  %1201 = load ptr, ptr %42, align 8, !tbaa !5
  %1202 = icmp ne ptr %1201, null
  br i1 %1202, label %1203, label %1216

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %6, align 8, !tbaa !5
  %1205 = load ptr, ptr %42, align 8, !tbaa !5
  %1206 = load ptr, ptr %12, align 8, !tbaa !5
  %1207 = load i32, ptr %39, align 4, !tbaa !9
  %1208 = sub nsw i32 %1207, 2
  %1209 = load ptr, ptr %12, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.Table, ptr %1209, i32 0, i32 11
  %1211 = load i16, ptr %1210, align 2, !tbaa !41
  %1212 = sext i16 %1211 to i32
  %1213 = sub nsw i32 %1208, %1212
  %1214 = load i32, ptr %10, align 4, !tbaa !9
  %1215 = load i32, ptr %23, align 4, !tbaa !9
  call void @sqlite3CodeRowTrigger(ptr noundef %1204, ptr noundef %1205, i32 noundef 108, ptr noundef null, i32 noundef 2, ptr noundef %1206, i32 noundef %1213, i32 noundef %1214, i32 noundef %1215)
  br label %1216

1216:                                             ; preds = %1203, %1200
  %1217 = load ptr, ptr %16, align 8, !tbaa !5
  %1218 = load i32, ptr %23, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %1217, i32 noundef %1218)
  %1219 = load i8, ptr %29, align 1, !tbaa !11
  %1220 = icmp ne i8 %1219, 0
  br i1 %1220, label %1221, label %1231

1221:                                             ; preds = %1216
  %1222 = load ptr, ptr %16, align 8, !tbaa !5
  %1223 = load i32, ptr %24, align 4, !tbaa !9
  %1224 = load i32, ptr %26, align 4, !tbaa !9
  %1225 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1222, i32 noundef 7, i32 noundef %1223, i32 noundef %1224)
  %1226 = load ptr, ptr %16, align 8, !tbaa !5
  %1227 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %1226, i32 noundef %1227)
  %1228 = load ptr, ptr %16, align 8, !tbaa !5
  %1229 = load i32, ptr %24, align 4, !tbaa !9
  %1230 = call i32 @sqlite3VdbeAddOp1(ptr noundef %1228, i32 noundef 112, i32 noundef %1229)
  br label %1241

1231:                                             ; preds = %1216
  %1232 = load ptr, ptr %8, align 8, !tbaa !5
  %1233 = icmp ne ptr %1232, null
  br i1 %1233, label %1234, label %1240

1234:                                             ; preds = %1231
  %1235 = load ptr, ptr %16, align 8, !tbaa !5
  %1236 = load i32, ptr %26, align 4, !tbaa !9
  %1237 = call i32 @sqlite3VdbeGoto(ptr noundef %1235, i32 noundef %1236)
  %1238 = load ptr, ptr %16, align 8, !tbaa !5
  %1239 = load i32, ptr %25, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %1238, i32 noundef %1239)
  br label %1240

1240:                                             ; preds = %1234, %1231
  br label %1241

1241:                                             ; preds = %1240, %1221
  br label %1242

1242:                                             ; preds = %1241, %198
  %1243 = load ptr, ptr %6, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.Parse, ptr %1243, i32 0, i32 6
  %1245 = load i8, ptr %1244, align 2, !tbaa !39
  %1246 = zext i8 %1245 to i32
  %1247 = icmp eq i32 %1246, 0
  br i1 %1247, label %1248, label %1255

1248:                                             ; preds = %1242
  %1249 = load ptr, ptr %6, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.Parse, ptr %1249, i32 0, i32 38
  %1251 = load ptr, ptr %1250, align 8, !tbaa !88
  %1252 = icmp eq ptr %1251, null
  br i1 %1252, label %1253, label %1255

1253:                                             ; preds = %1248
  %1254 = load ptr, ptr %6, align 8, !tbaa !5
  call void @sqlite3AutoincrementEnd(ptr noundef %1254)
  br label %1255

1255:                                             ; preds = %1253, %1248, %1242
  %1256 = load ptr, ptr %11, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.sqlite3, ptr %1256, i32 0, i32 6
  %1258 = load i32, ptr %1257, align 4, !tbaa !69
  %1259 = and i32 %1258, 128
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1261, label %1278

1261:                                             ; preds = %1255
  %1262 = load ptr, ptr %6, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.Parse, ptr %1262, i32 0, i32 6
  %1264 = load i8, ptr %1263, align 2, !tbaa !39
  %1265 = icmp ne i8 %1264, 0
  br i1 %1265, label %1278, label %1266

1266:                                             ; preds = %1261
  %1267 = load ptr, ptr %6, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.Parse, ptr %1267, i32 0, i32 38
  %1269 = load ptr, ptr %1268, align 8, !tbaa !88
  %1270 = icmp ne ptr %1269, null
  br i1 %1270, label %1278, label %1271

1271:                                             ; preds = %1266
  %1272 = load ptr, ptr %16, align 8, !tbaa !5
  %1273 = load i32, ptr %36, align 4, !tbaa !9
  %1274 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1272, i32 noundef 88, i32 noundef %1273, i32 noundef 1)
  %1275 = load ptr, ptr %16, align 8, !tbaa !5
  call void @sqlite3VdbeSetNumCols(ptr noundef %1275, i32 noundef 1)
  %1276 = load ptr, ptr %16, align 8, !tbaa !5
  %1277 = call i32 @sqlite3VdbeSetColName(ptr noundef %1276, i32 noundef 0, i32 noundef 0, ptr noundef @.str.3, ptr noundef null)
  br label %1278

1278:                                             ; preds = %1271, %1266, %1261, %1255
  br label %1279

1279:                                             ; preds = %1278, %636, %568, %549, %493, %474, %342, %168, %162, %155, %133, %112, %105, %74
  %1280 = load ptr, ptr %11, align 8, !tbaa !5
  %1281 = load ptr, ptr %7, align 8, !tbaa !5
  call void @sqlite3SrcListDelete(ptr noundef %1280, ptr noundef %1281)
  %1282 = load ptr, ptr %11, align 8, !tbaa !5
  %1283 = load ptr, ptr %33, align 8, !tbaa !5
  call void @sqlite3ExprListDelete(ptr noundef %1282, ptr noundef %1283)
  %1284 = load ptr, ptr %11, align 8, !tbaa !5
  %1285 = load ptr, ptr %8, align 8, !tbaa !5
  call void @sqlite3SelectDelete(ptr noundef %1284, ptr noundef %1285)
  %1286 = load ptr, ptr %11, align 8, !tbaa !5
  %1287 = load ptr, ptr %9, align 8, !tbaa !5
  call void @sqlite3IdListDelete(ptr noundef %1286, ptr noundef %1287)
  %1288 = load ptr, ptr %11, align 8, !tbaa !5
  %1289 = load ptr, ptr %40, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1288, ptr noundef %1289)
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  ret void

1290:                                             ; preds = %1105, %636, %493, %474
  unreachable
}

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

declare void @sqlite3SelectDelete(ptr noundef, ptr noundef) #1

declare ptr @sqlite3SrcListLookup(ptr noundef, ptr noundef) #1

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

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

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

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

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

declare void @sqlite3VdbeCountChanges(ptr noundef) #1

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

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

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

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

declare i32 @sqlite3IsRowid(ptr noundef) #1

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) #1

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

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

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

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

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

declare i32 @sqlite3GetTempReg(ptr noundef) #1

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

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

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

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

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

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

declare ptr @sqlite3DbMallocRawNN(ptr noundef, i64 noundef) #1

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) #1

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

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

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

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

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

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

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

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

declare ptr @sqlite3GetVTable(ptr noundef, ptr noundef) #1

declare void @sqlite3VtabMakeWritable(ptr noundef, ptr noundef) #1

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

declare void @sqlite3MayAbort(ptr noundef) #1

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

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

declare ptr @sqlite3FkReferences(ptr noundef) #1

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

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

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

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

declare void @sqlite3SrcListDelete(ptr noundef, ptr noundef) #1

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

declare void @sqlite3IdListDelete(ptr noundef, ptr noundef) #1

declare void @sqlite3DbFree(ptr noundef, ptr noundef) #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 = { 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 = !{!7, !7, i64 0}
!12 = !{!13, !6, i64 0}
!13 = !{!"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, !14, 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, !14, i64 432, !14, i64 448, !15, i64 464, !7, i64 466, !7, i64 467, !7, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !14, i64 536, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584}
!14 = !{!"Token", !6, i64 0, !10, i64 8}
!15 = !{!"short", !7, i64 0}
!16 = !{!13, !10, i64 48}
!17 = !{!18, !7, i64 85}
!18 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !19, i64 48, !19, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !15, i64 80, !7, i64 82, !7, i64 83, !7, i64 84, !7, i64 85, !7, i64 86, !7, i64 87, !7, i64 88, !7, i64 89, !7, i64 90, !7, i64 91, !7, i64 92, !7, i64 93, !7, i64 94, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !7, i64 112, !10, i64 160, !20, i64 164, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !7, i64 336, !21, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !22, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !22, i64 488, !22, i64 512, !23, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !19, i64 648, !19, i64 656, !6, i64 664}
!19 = !{!"long long", !7, i64 0}
!20 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!21 = !{!"Lookaside", !10, i64 0, !15, i64 4, !7, i64 6, !10, i64 8, !10, i64 12, !7, i64 16, !6, i64 32, !6, i64 40, !6, i64 48}
!22 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!23 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!24 = !{!25, !10, i64 12}
!25 = !{!"Select", !6, i64 0, !7, i64 8, !15, 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}
!26 = !{!25, !6, i64 72}
!27 = !{!25, !6, i64 0}
!28 = !{!29, !6, i64 16}
!29 = !{!"SrcList_item", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !30, i64 60, !7, i64 64, !10, i64 68, !6, i64 72, !6, i64 80, !19, i64 88, !7, i64 96, !6, i64 104}
!30 = !{!"", !7, i64 0, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 1}
!31 = !{!32, !6, i64 112}
!32 = !{!"Table", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !15, i64 68, !15, i64 70, !15, i64 72, !15, i64 74, !7, i64 76, !10, i64 80, !10, i64 84, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!33 = !{!32, !6, i64 0}
!34 = !{!18, !6, i64 32}
!35 = !{!36, !6, i64 0}
!36 = !{!"Db", !6, i64 0, !6, i64 8, !7, i64 16, !7, i64 17, !6, i64 24}
!37 = !{!32, !10, i64 64}
!38 = !{!32, !6, i64 24}
!39 = !{!13, !7, i64 30}
!40 = !{!13, !10, i64 56}
!41 = !{!32, !15, i64 70}
!42 = !{!32, !10, i64 84}
!43 = !{!44, !10, i64 8}
!44 = !{!"IdList", !6, i64 0, !10, i64 8}
!45 = !{!44, !6, i64 0}
!46 = !{!47, !10, i64 8}
!47 = !{!"IdList_item", !6, i64 0, !10, i64 8}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!47, !6, i64 0}
!51 = !{!32, !6, i64 8}
!52 = !{!53, !6, i64 0}
!53 = !{!"Column", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!54 = !{!32, !15, i64 68}
!55 = distinct !{!55, !49}
!56 = !{!13, !7, i64 29}
!57 = distinct !{!57, !49}
!58 = !{!59, !10, i64 20}
!59 = !{!"SelectDest", !7, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32}
!60 = !{!59, !10, i64 24}
!61 = !{!62, !10, i64 0}
!62 = !{!"ExprList", !10, i64 0, !6, i64 8}
!63 = !{!13, !10, i64 52}
!64 = !{!59, !10, i64 16}
!65 = !{!66, !6, i64 0}
!66 = !{!"NameContext", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48}
!67 = !{!53, !7, i64 27}
!68 = distinct !{!68, !49}
!69 = !{!18, !10, i64 44}
!70 = !{!32, !6, i64 16}
!71 = !{!72, !15, i64 96}
!72 = !{!"Index", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !15, i64 92, !15, i64 94, !15, i64 96, !7, i64 98, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99, !10, i64 99}
!73 = !{!72, !6, i64 40}
!74 = distinct !{!74, !49}
!75 = !{!62, !6, i64 8}
!76 = !{!77, !6, i64 0}
!77 = !{!"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}
!78 = distinct !{!78, !49}
!79 = !{!53, !6, i64 8}
!80 = distinct !{!80, !49}
!81 = !{!82, !7, i64 0}
!82 = !{!"VdbeOp", !7, i64 0, !7, i64 1, !15, i64 2, !10, i64 4, !10, i64 8, !10, i64 12, !7, i64 16}
!83 = !{!82, !10, i64 4}
!84 = !{!82, !10, i64 8}
!85 = !{!82, !10, i64 12}
!86 = distinct !{!86, !49}
!87 = distinct !{!87, !49}
!88 = !{!13, !6, i64 168}


; 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.SelectDest = type { i8, ptr, i32, i32, i32, ptr }
%struct.NameContext = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i16 }
%struct.Db = type { ptr, ptr, i8, i8, ptr }
%struct.IdList_item = type { ptr, i32 }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon }
%union.anon = type { i32 }

@.str = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [14 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 ptr @sqlite3GetVdbe(ptr noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @sqlite3Insert(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #2 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %struct.SelectDest, align 8
  %9 = alloca i32, align 4
  %10 = alloca %struct.NameContext, align 8
  %11 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  %12 = load ptr, ptr %0, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %8, i8 0, i64 40, i1 false)
  %13 = getelementptr inbounds i8, ptr %0, i64 48
  %14 = load i32, ptr %13, align 8, !tbaa !14
  %.not = icmp eq i32 %14, 0
  br i1 %.not, label %15, label %.thread572

15:                                               ; preds = %5
  %16 = getelementptr inbounds i8, ptr %12, i64 85
  %17 = load i8, ptr %16, align 1, !tbaa !15
  %.not524 = icmp eq i8 %17, 0
  br i1 %.not524, label %18, label %.thread572

18:                                               ; preds = %15
  %.not525 = icmp eq ptr %2, null
  br i1 %.not525, label %29, label %19

19:                                               ; preds = %18
  %20 = getelementptr inbounds i8, ptr %2, i64 12
  %21 = load i32, ptr %20, align 4, !tbaa !22
  %22 = and i32 %21, 512
  %.not526 = icmp eq i32 %22, 0
  br i1 %.not526, label %29, label %23

23:                                               ; preds = %19
  %24 = getelementptr inbounds i8, ptr %2, i64 72
  %25 = load ptr, ptr %24, align 8, !tbaa !24
  %26 = icmp eq ptr %25, null
  br i1 %26, label %27, label %29

27:                                               ; preds = %23
  %28 = load ptr, ptr %2, align 8, !tbaa !25
  store ptr null, ptr %2, align 8, !tbaa !25
  tail call void @sqlite3SelectDelete(ptr noundef nonnull %12, ptr noundef nonnull %2) #5
  br label %29

29:                                               ; preds = %27, %23, %19, %18
  %.0499 = phi ptr [ %28, %27 ], [ null, %23 ], [ null, %19 ], [ null, %18 ]
  %.0 = phi ptr [ null, %27 ], [ %2, %23 ], [ %2, %19 ], [ null, %18 ]
  %30 = getelementptr inbounds i8, ptr %1, i64 24
  %31 = load ptr, ptr %30, align 8, !tbaa !26
  %32 = icmp eq ptr %31, null
  br i1 %32, label %.thread572, label %33

33:                                               ; preds = %29
  %34 = tail call ptr @sqlite3SrcListLookup(ptr noundef nonnull %0, ptr noundef nonnull %1) #5
  %35 = icmp eq ptr %34, null
  br i1 %35, label %.thread572, label %36

36:                                               ; preds = %33
  %37 = getelementptr inbounds i8, ptr %34, i64 112
  %38 = load ptr, ptr %37, align 8, !tbaa !29
  %39 = tail call i32 @sqlite3SchemaToIndex(ptr noundef nonnull %12, ptr noundef %38) #5
  %40 = load ptr, ptr %34, align 8, !tbaa !31
  %41 = getelementptr inbounds i8, ptr %12, i64 32
  %42 = load ptr, ptr %41, align 8, !tbaa !32
  %43 = sext i32 %39 to i64
  %44 = getelementptr inbounds %struct.Db, ptr %42, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !33
  %46 = tail call i32 @sqlite3AuthCheck(ptr noundef nonnull %0, i32 noundef 18, ptr noundef %40, ptr noundef null, ptr noundef %45) #5
  %.not527 = icmp eq i32 %46, 0
  br i1 %.not527, label %47, label %.thread572

47:                                               ; preds = %36
  %48 = getelementptr inbounds i8, ptr %34, i64 64
  %49 = load i32, ptr %48, align 8, !tbaa !35
  %50 = trunc i32 %49 to i8
  %51 = lshr i8 %50, 5
  %52 = and i8 %51, 1
  %53 = call ptr @sqlite3TriggersExist(ptr noundef nonnull %0, ptr noundef nonnull %34, i32 noundef 108, ptr noundef null, ptr noundef nonnull %9) #5
  %54 = getelementptr inbounds i8, ptr %34, i64 24
  %55 = load ptr, ptr %54, align 8, !tbaa !36
  %.not528 = icmp eq ptr %55, null
  %56 = call i32 @sqlite3ViewGetColumnNames(ptr noundef nonnull %0, ptr noundef nonnull %34) #5
  %.not529 = icmp eq i32 %56, 0
  br i1 %.not529, label %57, label %.thread572

57:                                               ; preds = %47
  %58 = load i32, ptr %9, align 4, !tbaa !5
  %59 = call i32 @sqlite3IsReadOnly(ptr noundef nonnull %0, ptr noundef nonnull %34, i32 noundef %58) #5
  %.not530 = icmp eq i32 %59, 0
  br i1 %.not530, label %60, label %.thread572

60:                                               ; preds = %57
  %61 = call ptr @sqlite3GetVdbe(ptr noundef nonnull %0) #5
  %62 = icmp eq ptr %61, null
  br i1 %62, label %.thread572, label %63

63:                                               ; preds = %60
  %64 = getelementptr inbounds i8, ptr %0, i64 30
  %65 = load i8, ptr %64, align 2, !tbaa !37
  %66 = icmp eq i8 %65, 0
  br i1 %66, label %67, label %68

67:                                               ; preds = %63
  call void @sqlite3VdbeCountChanges(ptr noundef nonnull %61) #5
  br label %68

68:                                               ; preds = %67, %63
  %69 = icmp ne ptr %.0, null
  %70 = icmp ne ptr %53, null
  %71 = select i1 %69, i1 true, i1 %70
  %72 = zext i1 %71 to i32
  call void @sqlite3BeginWriteOperation(ptr noundef nonnull %0, i32 noundef %72, i32 noundef %39) #5
  %73 = icmp eq ptr %3, null
  br i1 %73, label %74, label %76

74:                                               ; preds = %68
  %75 = call i32 @xferOptimization(ptr noundef nonnull %0, ptr noundef nonnull %34, ptr noundef %.0, i32 noundef %4, i32 noundef %39)
  %.not531 = icmp eq i32 %75, 0
  br i1 %.not531, label %76, label %550

76:                                               ; preds = %74, %68
  %77 = call i32 @autoIncBegin(ptr noundef nonnull %0, i32 noundef %39, ptr noundef nonnull %34)
  %78 = getelementptr inbounds i8, ptr %0, i64 56
  %79 = load i32, ptr %78, align 8, !tbaa !38
  %80 = add i32 %79, 1
  %81 = getelementptr inbounds i8, ptr %34, i64 70
  %82 = load i16, ptr %81, align 2, !tbaa !39
  %83 = sext i16 %82 to i32
  %84 = add i32 %80, %83
  store i32 %84, ptr %78, align 8, !tbaa !38
  %85 = getelementptr inbounds i8, ptr %34, i64 84
  %86 = load i32, ptr %85, align 4, !tbaa !40
  %.not532 = icmp eq i32 %86, 0
  br i1 %.not532, label %90, label %87

87:                                               ; preds = %76
  %88 = add nsw i32 %79, 2
  %89 = add nsw i32 %84, 1
  store i32 %89, ptr %78, align 8, !tbaa !38
  br label %90

90:                                               ; preds = %87, %76
  %.0505 = phi i32 [ %88, %87 ], [ %80, %76 ]
  %91 = add nsw i32 %.0505, 1
  %92 = load i32, ptr %48, align 8, !tbaa !35
  %93 = and i32 %92, 128
  %94 = icmp eq i32 %93, 0
  %95 = zext i1 %94 to i8
  br i1 %73, label %.loopexit619, label %.preheader620

.preheader620:                                    ; preds = %90
  %96 = getelementptr inbounds i8, ptr %3, i64 8
  %97 = load i32, ptr %96, align 8, !tbaa !41
  %98 = icmp sgt i32 %97, 0
  br i1 %98, label %.lr.ph, label %.loopexit619

.lr.ph:                                           ; preds = %.preheader620
  %99 = load ptr, ptr %3, align 8, !tbaa !43
  %wide.trip.count = zext nneg i32 %97 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %100 = icmp ult i32 %97, 4
  br i1 %100, label %.preheader618.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %wide.trip.count, 2147483644
  br label %105

.preheader618.unr-lcssa:                          ; preds = %105, %.lr.ph
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next.3, %105 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader618, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader618.unr-lcssa, %.epil.preheader
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.epil.preheader ], [ %indvars.iv.unr, %.preheader618.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader618.unr-lcssa ]
  %101 = getelementptr inbounds %struct.IdList_item, ptr %99, i64 %indvars.iv.epil, i32 1
  store i32 -1, ptr %101, align 8, !tbaa !44
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader618, label %.epil.preheader, !llvm.loop !46

.preheader618:                                    ; preds = %.epil.preheader, %.preheader618.unr-lcssa
  br i1 %98, label %.preheader617.lr.ph, label %.loopexit619

.preheader617.lr.ph:                              ; preds = %.preheader618
  %102 = getelementptr inbounds i8, ptr %34, i64 8
  %103 = getelementptr inbounds i8, ptr %34, i64 68
  %104 = icmp ne i8 %52, 0
  br label %.preheader617

105:                                              ; preds = %105, %.lr.ph.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.new ], [ %indvars.iv.next.3, %105 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %105 ]
  %106 = getelementptr inbounds %struct.IdList_item, ptr %99, i64 %indvars.iv, i32 1
  store i32 -1, ptr %106, align 8, !tbaa !44
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %107 = getelementptr inbounds %struct.IdList_item, ptr %99, i64 %indvars.iv.next, i32 1
  store i32 -1, ptr %107, align 8, !tbaa !44
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %108 = getelementptr inbounds %struct.IdList_item, ptr %99, i64 %indvars.iv.next.1, i32 1
  store i32 -1, ptr %108, align 8, !tbaa !44
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %109 = getelementptr inbounds %struct.IdList_item, ptr %99, i64 %indvars.iv.next.2, i32 1
  store i32 -1, ptr %109, align 8, !tbaa !44
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader618.unr-lcssa, label %105, !llvm.loop !48

.preheader617:                                    ; preds = %.preheader617.lr.ph, %148
  %indvars.iv676 = phi i64 [ 0, %.preheader617.lr.ph ], [ %indvars.iv.next677, %148 ]
  %.0475632 = phi i32 [ -1, %.preheader617.lr.ph ], [ %.2477, %148 ]
  %.0494631 = phi i8 [ %95, %.preheader617.lr.ph ], [ %.3497, %148 ]
  %110 = load i16, ptr %81, align 2, !tbaa !39
  %111 = icmp sgt i16 %110, 0
  br i1 %111, label %.lr.ph630, label %.loopexit

.lr.ph630:                                        ; preds = %.preheader617, %129
  %indvars.iv673 = phi i64 [ %indvars.iv.next674, %129 ], [ 0, %.preheader617 ]
  %112 = load ptr, ptr %3, align 8, !tbaa !43
  %113 = getelementptr inbounds %struct.IdList_item, ptr %112, i64 %indvars.iv676
  %114 = load ptr, ptr %113, align 8, !tbaa !50
  %115 = load ptr, ptr %102, align 8, !tbaa !51
  %116 = getelementptr inbounds %struct.Column, ptr %115, i64 %indvars.iv673
  %117 = load ptr, ptr %116, align 8, !tbaa !52
  %118 = call i32 @sqlite3StrICmp(ptr noundef %114, ptr noundef %117) #5
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %120, label %129

120:                                              ; preds = %.lr.ph630
  %121 = trunc nuw nsw i64 %indvars.iv673 to i32
  %122 = load ptr, ptr %3, align 8, !tbaa !43
  %123 = getelementptr inbounds %struct.IdList_item, ptr %122, i64 %indvars.iv676, i32 1
  store i32 %121, ptr %123, align 8, !tbaa !44
  %124 = and i64 %indvars.iv673, 4294967295
  %.not558 = icmp eq i64 %indvars.iv676, %124
  %spec.select = select i1 %.not558, i8 %.0494631, i8 0
  %125 = load i16, ptr %103, align 4, !tbaa !54
  %126 = sext i16 %125 to i64
  %127 = icmp eq i64 %indvars.iv673, %126
  %128 = trunc nuw nsw i64 %indvars.iv676 to i32
  %spec.select568 = select i1 %127, i32 %128, i32 %.0475632
  %.pre = load i16, ptr %81, align 2, !tbaa !39
  br label %.loopexit

129:                                              ; preds = %.lr.ph630
  %indvars.iv.next674 = add nuw nsw i64 %indvars.iv673, 1
  %130 = load i16, ptr %81, align 2, !tbaa !39
  %131 = sext i16 %130 to i64
  %132 = icmp slt i64 %indvars.iv.next674, %131
  br i1 %132, label %.lr.ph630, label %.loopexit.loopexit, !llvm.loop !55

.loopexit.loopexit:                               ; preds = %129
  %133 = trunc nuw nsw i64 %indvars.iv.next674 to i32
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.preheader617, %120
  %134 = phi i16 [ %.pre, %120 ], [ %110, %.preheader617 ], [ %130, %.loopexit.loopexit ]
  %.0460622 = phi i32 [ %121, %120 ], [ 0, %.preheader617 ], [ %133, %.loopexit.loopexit ]
  %.2496 = phi i8 [ %spec.select, %120 ], [ %.0494631, %.preheader617 ], [ %.0494631, %.loopexit.loopexit ]
  %.1476 = phi i32 [ %spec.select568, %120 ], [ %.0475632, %.preheader617 ], [ %.0475632, %.loopexit.loopexit ]
  %135 = sext i16 %134 to i32
  %.not559 = icmp slt i32 %.0460622, %135
  br i1 %.not559, label %148, label %136

136:                                              ; preds = %.loopexit
  %137 = load ptr, ptr %3, align 8, !tbaa !43
  %138 = getelementptr inbounds %struct.IdList_item, ptr %137, i64 %indvars.iv676
  %139 = load ptr, ptr %138, align 8, !tbaa !50
  %140 = call i32 @sqlite3IsRowid(ptr noundef %139) #5
  %141 = icmp eq i32 %140, 0
  %or.cond = select i1 %141, i1 true, i1 %104
  %142 = trunc nuw nsw i64 %indvars.iv676 to i32
  br i1 %or.cond, label %143, label %148

143:                                              ; preds = %136
  %144 = load ptr, ptr %3, align 8, !tbaa !43
  %145 = getelementptr inbounds %struct.IdList_item, ptr %144, i64 %indvars.iv676
  %146 = load ptr, ptr %145, align 8, !tbaa !50
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str, ptr noundef %1, i32 noundef 0, ptr noundef %146) #5
  %147 = getelementptr inbounds i8, ptr %0, i64 29
  store i8 1, ptr %147, align 1, !tbaa !56
  br label %.thread572

148:                                              ; preds = %136, %.loopexit
  %.3497 = phi i8 [ %.2496, %.loopexit ], [ 0, %136 ]
  %.2477 = phi i32 [ %.1476, %.loopexit ], [ %142, %136 ]
  %indvars.iv.next677 = add nuw nsw i64 %indvars.iv676, 1
  %149 = load i32, ptr %96, align 8, !tbaa !41
  %150 = sext i32 %149 to i64
  %151 = icmp slt i64 %indvars.iv.next677, %150
  br i1 %151, label %.preheader617, label %.loopexit619, !llvm.loop !57

.loopexit619:                                     ; preds = %148, %.preheader620, %.preheader618, %90
  %.4498 = phi i8 [ %95, %90 ], [ %95, %.preheader618 ], [ %95, %.preheader620 ], [ %.3497, %148 ]
  %.3478 = phi i32 [ -1, %90 ], [ -1, %.preheader618 ], [ -1, %.preheader620 ], [ %.2477, %148 ]
  br i1 %69, label %152, label %188

152:                                              ; preds = %.loopexit619
  %153 = load i32, ptr %78, align 8, !tbaa !38
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %78, align 8, !tbaa !38
  %155 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %61) #5
  %156 = add nsw i32 %155, 1
  %157 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 15, i32 noundef %154, i32 noundef 0, i32 noundef %156) #5
  call void @sqlite3SelectDestInit(ptr noundef nonnull %8, i32 noundef 13, i32 noundef %154) #5
  %.not536 = icmp eq i8 %.4498, 0
  %158 = select i1 %.not536, i32 0, i32 %91
  %159 = getelementptr inbounds i8, ptr %8, i64 20
  store i32 %158, ptr %159, align 4, !tbaa !58
  %160 = load i16, ptr %81, align 2, !tbaa !39
  %161 = sext i16 %160 to i32
  %162 = getelementptr inbounds i8, ptr %8, i64 24
  store i32 %161, ptr %162, align 8, !tbaa !60
  %163 = call i32 @sqlite3Select(ptr noundef nonnull %0, ptr noundef nonnull %.0, ptr noundef nonnull %8) #5
  %164 = load i32, ptr %159, align 4, !tbaa !58
  %.not537 = icmp eq i32 %163, 0
  br i1 %.not537, label %165, label %.thread572

165:                                              ; preds = %152
  %166 = load i8, ptr %16, align 1, !tbaa !15
  %.not538 = icmp eq i8 %166, 0
  br i1 %.not538, label %167, label %.thread572

167:                                              ; preds = %165
  %168 = load i32, ptr %13, align 8, !tbaa !14
  %.not539 = icmp eq i32 %168, 0
  br i1 %.not539, label %169, label %.thread572

169:                                              ; preds = %167
  call void @sqlite3VdbeEndCoroutine(ptr noundef %61, i32 noundef %154) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %155) #5
  %170 = load ptr, ptr %.0, align 8, !tbaa !25
  %171 = load i32, ptr %170, align 8, !tbaa !61
  br i1 %70, label %174, label %172

172:                                              ; preds = %169
  %173 = call i32 @readsTable(ptr noundef nonnull %0, i32 noundef %39, ptr noundef nonnull %34)
  %.not540 = icmp eq i32 %173, 0
  br i1 %.not540, label %.thread, label %174

174:                                              ; preds = %172, %169
  %175 = getelementptr inbounds i8, ptr %0, i64 52
  %176 = load i32, ptr %175, align 4, !tbaa !63
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %175, align 4, !tbaa !63
  %178 = call i32 @sqlite3GetTempReg(ptr noundef nonnull %0) #5
  %179 = call i32 @sqlite3GetTempReg(ptr noundef nonnull %0) #5
  %180 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 108, i32 noundef %176, i32 noundef %171) #5
  %181 = getelementptr inbounds i8, ptr %8, i64 16
  %182 = load i32, ptr %181, align 8, !tbaa !64
  %183 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 16, i32 noundef %182) #5
  %184 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 100, i32 noundef %164, i32 noundef %171, i32 noundef %178) #5
  %185 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 115, i32 noundef %176, i32 noundef %179) #5
  %186 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 116, i32 noundef %176, i32 noundef %178, i32 noundef %179) #5
  %187 = call i32 @sqlite3VdbeGoto(ptr noundef %61, i32 noundef %183) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %183) #5
  call void @sqlite3ReleaseTempReg(ptr noundef nonnull %0, i32 noundef %178) #5
  call void @sqlite3ReleaseTempReg(ptr noundef nonnull %0, i32 noundef %179) #5
  br label %.thread

188:                                              ; preds = %.loopexit619
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) #5
  %189 = getelementptr inbounds i8, ptr %10, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %189, i8 0, i64 48, i1 false)
  store ptr %0, ptr %10, align 8, !tbaa !65
  %.not534 = icmp eq ptr %.0499, null
  br i1 %.not534, label %.thread579, label %190

190:                                              ; preds = %188
  %191 = load i32, ptr %.0499, align 8, !tbaa !61
  %192 = call i32 @sqlite3ResolveExprListNames(ptr noundef nonnull %10, ptr noundef nonnull %.0499) #5
  %.not535 = icmp eq i32 %192, 0
  br i1 %.not535, label %.thread579, label %193

.thread579:                                       ; preds = %188, %190
  %.2469.ph = phi i32 [ 0, %188 ], [ %191, %190 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) #5
  br label %.thread

193:                                              ; preds = %190
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) #5
  br label %.thread572

.thread:                                          ; preds = %172, %.thread579, %174
  %.0501 = phi i32 [ %164, %174 ], [ 0, %.thread579 ], [ %164, %172 ]
  %194 = phi i1 [ true, %174 ], [ false, %.thread579 ], [ false, %172 ]
  %.2485 = phi i32 [ %176, %174 ], [ -1, %.thread579 ], [ 0, %172 ]
  %.3470 = phi i32 [ %171, %174 ], [ %.2469.ph, %.thread579 ], [ %171, %172 ]
  %195 = icmp sgt i32 %.3470, 0
  %or.cond3 = select i1 %73, i1 %195, i1 false
  br i1 %or.cond3, label %196, label %200

196:                                              ; preds = %.thread
  %197 = getelementptr inbounds i8, ptr %34, i64 68
  %198 = load i16, ptr %197, align 4, !tbaa !54
  %199 = sext i16 %198 to i32
  br label %200

200:                                              ; preds = %196, %.thread
  %.4479 = phi i32 [ %199, %196 ], [ %.3478, %.thread ]
  %201 = load i16, ptr %81, align 2, !tbaa !39
  %202 = sext i16 %201 to i32
  %203 = icmp sgt i16 %201, 0
  br i1 %203, label %.lr.ph639, label %._crit_edge

.lr.ph639:                                        ; preds = %200
  %204 = getelementptr inbounds i8, ptr %34, i64 8
  %205 = load ptr, ptr %204, align 8, !tbaa !51
  %wide.trip.count681 = zext nneg i32 %202 to i64
  %min.iters.check = icmp ult i16 %201, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph639
  %n.vec = and i64 %wide.trip.count681, 32760
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %243, %vector.body ]
  %vec.phi723 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %244, %vector.body ]
  %206 = or disjoint i64 %index, 1
  %207 = or disjoint i64 %index, 2
  %208 = or disjoint i64 %index, 3
  %209 = or disjoint i64 %index, 4
  %210 = or disjoint i64 %index, 5
  %211 = or disjoint i64 %index, 6
  %212 = or disjoint i64 %index, 7
  %213 = getelementptr inbounds %struct.Column, ptr %205, i64 %index, i32 6
  %214 = getelementptr inbounds %struct.Column, ptr %205, i64 %206, i32 6
  %215 = getelementptr inbounds %struct.Column, ptr %205, i64 %207, i32 6
  %216 = getelementptr inbounds %struct.Column, ptr %205, i64 %208, i32 6
  %217 = getelementptr inbounds %struct.Column, ptr %205, i64 %209, i32 6
  %218 = getelementptr inbounds %struct.Column, ptr %205, i64 %210, i32 6
  %219 = getelementptr inbounds %struct.Column, ptr %205, i64 %211, i32 6
  %220 = getelementptr inbounds %struct.Column, ptr %205, i64 %212, i32 6
  %221 = load i8, ptr %213, align 1, !tbaa !67
  %222 = load i8, ptr %214, align 1, !tbaa !67
  %223 = load i8, ptr %215, align 1, !tbaa !67
  %224 = load i8, ptr %216, align 1, !tbaa !67
  %225 = insertelement <4 x i8> poison, i8 %221, i64 0
  %226 = insertelement <4 x i8> %225, i8 %222, i64 1
  %227 = insertelement <4 x i8> %226, i8 %223, i64 2
  %228 = insertelement <4 x i8> %227, i8 %224, i64 3
  %229 = load i8, ptr %217, align 1, !tbaa !67
  %230 = load i8, ptr %218, align 1, !tbaa !67
  %231 = load i8, ptr %219, align 1, !tbaa !67
  %232 = load i8, ptr %220, align 1, !tbaa !67
  %233 = insertelement <4 x i8> poison, i8 %229, i64 0
  %234 = insertelement <4 x i8> %233, i8 %230, i64 1
  %235 = insertelement <4 x i8> %234, i8 %231, i64 2
  %236 = insertelement <4 x i8> %235, i8 %232, i64 3
  %237 = lshr <4 x i8> %228, <i8 1, i8 1, i8 1, i8 1>
  %238 = lshr <4 x i8> %236, <i8 1, i8 1, i8 1, i8 1>
  %239 = and <4 x i8> %237, <i8 1, i8 1, i8 1, i8 1>
  %240 = and <4 x i8> %238, <i8 1, i8 1, i8 1, i8 1>
  %241 = zext nneg <4 x i8> %239 to <4 x i32>
  %242 = zext nneg <4 x i8> %240 to <4 x i32>
  %243 = add <4 x i32> %vec.phi, %241
  %244 = add <4 x i32> %vec.phi723, %242
  %index.next = add nuw i64 %index, 8
  %245 = icmp eq i64 %index.next, %n.vec
  br i1 %245, label %middle.block, label %vector.body, !llvm.loop !68

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <4 x i32> %244, %243
  %246 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count681
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph639
  %indvars.iv678.ph = phi i64 [ 0, %.lr.ph639 ], [ %n.vec, %middle.block ]
  %.0471637.ph = phi i32 [ 0, %.lr.ph639 ], [ %246, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv678 = phi i64 [ %indvars.iv.next679, %scalar.ph ], [ %indvars.iv678.ph, %scalar.ph.preheader ]
  %.0471637 = phi i32 [ %251, %scalar.ph ], [ %.0471637.ph, %scalar.ph.preheader ]
  %247 = getelementptr inbounds %struct.Column, ptr %205, i64 %indvars.iv678, i32 6
  %248 = load i8, ptr %247, align 1, !tbaa !67
  %249 = lshr i8 %248, 1
  %.lobit = and i8 %249, 1
  %250 = zext nneg i8 %.lobit to i32
  %251 = add nuw nsw i32 %.0471637, %250
  %indvars.iv.next679 = add nuw nsw i64 %indvars.iv678, 1
  %exitcond682.not = icmp eq i64 %indvars.iv.next679, %wide.trip.count681
  br i1 %exitcond682.not, label %._crit_edge, label %scalar.ph, !llvm.loop !71

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %200
  %.0471.lcssa = phi i32 [ 0, %200 ], [ %246, %middle.block ], [ %251, %scalar.ph ]
  %252 = icmp ne i32 %.3470, 0
  %or.cond5 = select i1 %73, i1 %252, i1 false
  br i1 %or.cond5, label %253, label %256

253:                                              ; preds = %._crit_edge
  %254 = sub nsw i32 %202, %.0471.lcssa
  %.not542 = icmp eq i32 %.3470, %254
  br i1 %.not542, label %.thread583, label %255

255:                                              ; preds = %253
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.1, ptr noundef %1, i32 noundef 0, i32 noundef %254, i32 noundef %.3470) #5
  br label %.thread572

256:                                              ; preds = %._crit_edge
  br i1 %73, label %.thread583, label %257

257:                                              ; preds = %256
  %258 = getelementptr inbounds i8, ptr %3, i64 8
  %259 = load i32, ptr %258, align 8, !tbaa !41
  %.not543 = icmp eq i32 %.3470, %259
  br i1 %.not543, label %.thread583, label %260

260:                                              ; preds = %257
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.2, i32 noundef %.3470, i32 noundef %259) #5
  br label %.thread572

.thread583:                                       ; preds = %253, %257, %256
  %261 = getelementptr inbounds i8, ptr %12, i64 44
  %262 = load i32, ptr %261, align 4, !tbaa !72
  %263 = and i32 %262, 128
  %.not544 = icmp eq i32 %263, 0
  br i1 %.not544, label %268, label %264

264:                                              ; preds = %.thread583
  %265 = load i32, ptr %78, align 8, !tbaa !38
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %78, align 8, !tbaa !38
  %267 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 77, i32 noundef 0, i32 noundef %266) #5
  br label %268

268:                                              ; preds = %264, %.thread583
  %.0506 = phi i32 [ %266, %264 ], [ 0, %.thread583 ]
  br i1 %.not528, label %269, label %.thread584

269:                                              ; preds = %268
  %270 = call i32 @sqlite3OpenTableAndIndices(ptr noundef nonnull %0, ptr noundef nonnull %34, i32 noundef 106, i8 noundef zeroext 0, i32 noundef -1, ptr noundef null, ptr noundef nonnull %6, ptr noundef nonnull %7)
  %271 = add nsw i32 %270, 1
  %272 = sext i32 %271 to i64
  %273 = shl nsw i64 %272, 2
  %274 = call ptr @sqlite3DbMallocRawNN(ptr noundef nonnull %12, i64 noundef %273) #5
  %275 = icmp eq ptr %274, null
  br i1 %275, label %.thread572, label %276

276:                                              ; preds = %269
  %277 = icmp sgt i32 %270, 0
  br i1 %277, label %.lr.ph645.preheader, label %.thread584

.lr.ph645.preheader:                              ; preds = %276
  %278 = getelementptr inbounds i8, ptr %34, i64 16
  %wide.trip.count686 = zext nneg i32 %270 to i64
  %.pre704 = load i32, ptr %78, align 8, !tbaa !38
  %xtraiter732 = and i64 %wide.trip.count686, 1
  %279 = icmp eq i32 %270, 1
  br i1 %279, label %.thread584.loopexit.unr-lcssa, label %.lr.ph645.preheader.new

.lr.ph645.preheader.new:                          ; preds = %.lr.ph645.preheader
  %unroll_iter735 = and i64 %wide.trip.count686, 2147483646
  br label %.lr.ph645

.lr.ph645:                                        ; preds = %.lr.ph645, %.lr.ph645.preheader.new
  %280 = phi i32 [ %.pre704, %.lr.ph645.preheader.new ], [ %295, %.lr.ph645 ]
  %indvars.iv683 = phi i64 [ 0, %.lr.ph645.preheader.new ], [ %indvars.iv.next684.1, %.lr.ph645 ]
  %.0466.in642 = phi ptr [ %278, %.lr.ph645.preheader.new ], [ %296, %.lr.ph645 ]
  %niter736 = phi i64 [ 0, %.lr.ph645.preheader.new ], [ %niter736.next.1, %.lr.ph645 ]
  %.0466 = load ptr, ptr %.0466.in642, align 8, !tbaa !73
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %78, align 8, !tbaa !38
  %282 = getelementptr inbounds i32, ptr %274, i64 %indvars.iv683
  store i32 %281, ptr %282, align 4, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %.0466, i64 96
  %284 = load i16, ptr %283, align 8, !tbaa !74
  %285 = zext i16 %284 to i32
  %286 = load i32, ptr %78, align 8, !tbaa !38
  %287 = add nsw i32 %286, %285
  store i32 %287, ptr %78, align 8, !tbaa !38
  %288 = getelementptr inbounds i8, ptr %.0466, i64 40
  %indvars.iv.next684 = or disjoint i64 %indvars.iv683, 1
  %.0466.1 = load ptr, ptr %288, align 8, !tbaa !73
  %289 = add nsw i32 %287, 1
  store i32 %289, ptr %78, align 8, !tbaa !38
  %290 = getelementptr inbounds i32, ptr %274, i64 %indvars.iv.next684
  store i32 %289, ptr %290, align 4, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %.0466.1, i64 96
  %292 = load i16, ptr %291, align 8, !tbaa !74
  %293 = zext i16 %292 to i32
  %294 = load i32, ptr %78, align 8, !tbaa !38
  %295 = add nsw i32 %294, %293
  store i32 %295, ptr %78, align 8, !tbaa !38
  %296 = getelementptr inbounds i8, ptr %.0466.1, i64 40
  %indvars.iv.next684.1 = add nuw nsw i64 %indvars.iv683, 2
  %niter736.next.1 = add i64 %niter736, 2
  %niter736.ncmp.1 = icmp eq i64 %niter736.next.1, %unroll_iter735
  br i1 %niter736.ncmp.1, label %.thread584.loopexit.unr-lcssa, label %.lr.ph645, !llvm.loop !76

.thread584.loopexit.unr-lcssa:                    ; preds = %.lr.ph645, %.lr.ph645.preheader
  %.unr = phi i32 [ %.pre704, %.lr.ph645.preheader ], [ %295, %.lr.ph645 ]
  %indvars.iv683.unr = phi i64 [ 0, %.lr.ph645.preheader ], [ %indvars.iv.next684.1, %.lr.ph645 ]
  %.0466.in642.unr = phi ptr [ %278, %.lr.ph645.preheader ], [ %296, %.lr.ph645 ]
  %lcmp.mod734.not = icmp eq i64 %xtraiter732, 0
  br i1 %lcmp.mod734.not, label %.thread584, label %.lr.ph645.epil

.lr.ph645.epil:                                   ; preds = %.thread584.loopexit.unr-lcssa
  %.0466.epil = load ptr, ptr %.0466.in642.unr, align 8, !tbaa !73
  %297 = add nsw i32 %.unr, 1
  store i32 %297, ptr %78, align 8, !tbaa !38
  %298 = getelementptr inbounds i32, ptr %274, i64 %indvars.iv683.unr
  store i32 %297, ptr %298, align 4, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %.0466.epil, i64 96
  %300 = load i16, ptr %299, align 8, !tbaa !74
  %301 = zext i16 %300 to i32
  %302 = load i32, ptr %78, align 8, !tbaa !38
  %303 = add nsw i32 %302, %301
  store i32 %303, ptr %78, align 8, !tbaa !38
  br label %.thread584

.thread584:                                       ; preds = %.lr.ph645.epil, %.thread584.loopexit.unr-lcssa, %276, %268
  %.0502 = phi ptr [ null, %268 ], [ %274, %276 ], [ %274, %.thread584.loopexit.unr-lcssa ], [ %274, %.lr.ph645.epil ]
  br i1 %194, label %304, label %307

304:                                              ; preds = %.thread584
  %305 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 58, i32 noundef %.2485) #5
  %306 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %61) #5
  br label %312

307:                                              ; preds = %.thread584
  br i1 %69, label %308, label %312

308:                                              ; preds = %307
  %309 = getelementptr inbounds i8, ptr %8, i64 16
  %310 = load i32, ptr %309, align 8, !tbaa !64
  %311 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 16, i32 noundef %310) #5
  br label %312

312:                                              ; preds = %307, %308, %304
  %.0487 = phi i32 [ %306, %304 ], [ %311, %308 ], [ 0, %307 ]
  %.0486 = phi i32 [ %305, %304 ], [ %311, %308 ], [ 0, %307 ]
  %313 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %61) #5
  %314 = load i32, ptr %9, align 4, !tbaa !5
  %315 = and i32 %314, 1
  %.not545 = icmp eq i32 %315, 0
  br i1 %.not545, label %389, label %316

316:                                              ; preds = %312
  %317 = load i16, ptr %81, align 2, !tbaa !39
  %318 = sext i16 %317 to i32
  %319 = add nsw i32 %318, 1
  %320 = call i32 @sqlite3GetTempRange(ptr noundef nonnull %0, i32 noundef %319) #5
  %321 = icmp slt i32 %.4479, 0
  br i1 %321, label %322, label %324

322:                                              ; preds = %316
  %323 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 77, i32 noundef -1, i32 noundef %320) #5
  br label %337

324:                                              ; preds = %316
  br i1 %194, label %325, label %327

325:                                              ; preds = %324
  %326 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 98, i32 noundef %.2485, i32 noundef %.4479, i32 noundef %320) #5
  br label %333

327:                                              ; preds = %324
  %328 = getelementptr inbounds i8, ptr %.0499, i64 8
  %329 = load ptr, ptr %328, align 8, !tbaa !77
  %330 = zext nneg i32 %.4479 to i64
  %331 = getelementptr inbounds %struct.ExprList_item, ptr %329, i64 %330
  %332 = load ptr, ptr %331, align 8, !tbaa !78
  call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %332, i32 noundef %320) #5
  br label %333

333:                                              ; preds = %327, %325
  %334 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 35, i32 noundef %320) #5
  %335 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 77, i32 noundef -1, i32 noundef %320) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %334) #5
  %336 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 17, i32 noundef %320) #5
  br label %337

337:                                              ; preds = %333, %322
  %338 = load i16, ptr %81, align 2, !tbaa !39
  %339 = icmp sgt i16 %338, 0
  br i1 %339, label %.lr.ph655, label %._crit_edge656

.lr.ph655:                                        ; preds = %337
  %340 = getelementptr inbounds i8, ptr %3, i64 8
  %341 = icmp ne ptr %.0499, null
  %or.cond7 = select i1 %194, i1 true, i1 %341
  %342 = getelementptr inbounds i8, ptr %34, i64 8
  %343 = add i32 %320, 1
  %344 = getelementptr inbounds i8, ptr %.0499, i64 8
  %345 = zext i1 %73 to i32
  br label %346

346:                                              ; preds = %.lr.ph655, %374
  %indvars.iv693 = phi i64 [ 0, %.lr.ph655 ], [ %indvars.iv.next694, %374 ]
  %.1461652 = phi i32 [ 0, %.lr.ph655 ], [ %spec.select567, %374 ]
  br i1 %73, label %.thread587, label %.preheader616

.preheader616:                                    ; preds = %346
  %347 = load i32, ptr %340, align 8, !tbaa !41
  %348 = icmp sgt i32 %347, 0
  br i1 %348, label %.lr.ph647, label %._crit_edge648

.lr.ph647:                                        ; preds = %.preheader616
  %349 = load ptr, ptr %3, align 8, !tbaa !43
  %wide.trip.count691 = zext nneg i32 %347 to i64
  br label %350

350:                                              ; preds = %.lr.ph647, %355
  %indvars.iv688 = phi i64 [ 0, %.lr.ph647 ], [ %indvars.iv.next689, %355 ]
  %351 = getelementptr inbounds %struct.IdList_item, ptr %349, i64 %indvars.iv688, i32 1
  %352 = load i32, ptr %351, align 8, !tbaa !44
  %353 = zext i32 %352 to i64
  %354 = icmp eq i64 %indvars.iv693, %353
  br i1 %354, label %._crit_edge648.loopexit.split.loop.exit710, label %355

355:                                              ; preds = %350
  %indvars.iv.next689 = add nuw nsw i64 %indvars.iv688, 1
  %exitcond692.not = icmp eq i64 %indvars.iv.next689, %wide.trip.count691
  br i1 %exitcond692.not, label %._crit_edge648, label %350, !llvm.loop !80

._crit_edge648.loopexit.split.loop.exit710:       ; preds = %350
  %356 = trunc nuw nsw i64 %indvars.iv688 to i32
  br label %._crit_edge648

._crit_edge648:                                   ; preds = %355, %._crit_edge648.loopexit.split.loop.exit710, %.preheader616
  %.2462.lcssa = phi i32 [ 0, %.preheader616 ], [ %356, %._crit_edge648.loopexit.split.loop.exit710 ], [ %347, %355 ]
  %.not556 = icmp slt i32 %.2462.lcssa, %347
  %or.cond714 = select i1 %or.cond7, i1 %.not556, i1 false
  br i1 %or.cond714, label %.thread593, label %357

.thread587:                                       ; preds = %346
  br i1 %or.cond7, label %.thread593, label %357

.thread593:                                       ; preds = %._crit_edge648, %.thread587
  %.3463590595 = phi i32 [ %.1461652, %.thread587 ], [ %.2462.lcssa, %._crit_edge648 ]
  br i1 %194, label %363, label %367

357:                                              ; preds = %.thread587, %._crit_edge648
  %.3463592 = phi i32 [ %.1461652, %.thread587 ], [ %.2462.lcssa, %._crit_edge648 ]
  %358 = load ptr, ptr %342, align 8, !tbaa !51
  %359 = getelementptr inbounds %struct.Column, ptr %358, i64 %indvars.iv693, i32 1
  %360 = load ptr, ptr %359, align 8, !tbaa !81
  %361 = trunc nuw nsw i64 %indvars.iv693 to i32
  %362 = add i32 %343, %361
  call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %360, i32 noundef %362) #5
  br label %374

363:                                              ; preds = %.thread593
  %364 = trunc nuw nsw i64 %indvars.iv693 to i32
  %365 = add i32 %343, %364
  %366 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 98, i32 noundef %.2485, i32 noundef %.3463590595, i32 noundef %365) #5
  br label %374

367:                                              ; preds = %.thread593
  %368 = load ptr, ptr %344, align 8, !tbaa !77
  %369 = sext i32 %.3463590595 to i64
  %370 = getelementptr inbounds %struct.ExprList_item, ptr %368, i64 %369
  %371 = load ptr, ptr %370, align 8, !tbaa !78
  %372 = trunc nuw nsw i64 %indvars.iv693 to i32
  %373 = add i32 %343, %372
  call void @sqlite3ExprCodeAndCache(ptr noundef nonnull %0, ptr noundef %371, i32 noundef %373) #5
  br label %374

374:                                              ; preds = %363, %367, %357
  %.3463591 = phi i32 [ %.3463590595, %363 ], [ %.3463590595, %367 ], [ %.3463592, %357 ]
  %spec.select567 = add nsw i32 %.3463591, %345
  %indvars.iv.next694 = add nuw nsw i64 %indvars.iv693, 1
  %375 = load i16, ptr %81, align 2, !tbaa !39
  %376 = sext i16 %375 to i64
  %377 = icmp slt i64 %indvars.iv.next694, %376
  br i1 %377, label %346, label %._crit_edge656, !llvm.loop !82

._crit_edge656:                                   ; preds = %374, %337
  %378 = phi i16 [ %338, %337 ], [ %375, %374 ]
  br i1 %.not528, label %379, label %381

379:                                              ; preds = %._crit_edge656
  %380 = add nsw i32 %320, 1
  call void @sqlite3TableAffinity(ptr noundef %61, ptr noundef nonnull %34, i32 noundef %380)
  %.pre705 = load i16, ptr %81, align 2, !tbaa !39
  br label %381

381:                                              ; preds = %379, %._crit_edge656
  %382 = phi i16 [ %.pre705, %379 ], [ %378, %._crit_edge656 ]
  %383 = xor i16 %382, -1
  %384 = sext i16 %383 to i32
  %385 = add i32 %320, %384
  call void @sqlite3CodeRowTrigger(ptr noundef nonnull %0, ptr noundef %53, i32 noundef 108, ptr noundef null, i32 noundef 1, ptr noundef nonnull %34, i32 noundef %385, i32 noundef %4, i32 noundef %313) #5
  %386 = load i16, ptr %81, align 2, !tbaa !39
  %387 = sext i16 %386 to i32
  %388 = add nsw i32 %387, 1
  call void @sqlite3ReleaseTempRange(ptr noundef nonnull %0, i32 noundef %320, i32 noundef %388) #5
  br label %389

389:                                              ; preds = %381, %312
  br i1 %.not528, label %390, label %532

390:                                              ; preds = %389
  %391 = load i32, ptr %85, align 4, !tbaa !40
  %.not546 = icmp eq i32 %391, 0
  br i1 %.not546, label %394, label %392

392:                                              ; preds = %390
  %393 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 80, i32 noundef 0, i32 noundef %80) #5
  br label %394

394:                                              ; preds = %392, %390
  %395 = icmp sgt i32 %.4479, -1
  br i1 %395, label %396, label %430

396:                                              ; preds = %394
  br i1 %194, label %397, label %399

397:                                              ; preds = %396
  %398 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 98, i32 noundef %.2485, i32 noundef %.4479, i32 noundef %.0505) #5
  br label %420

399:                                              ; preds = %396
  br i1 %69, label %400, label %403

400:                                              ; preds = %399
  %401 = add nsw i32 %.4479, %.0501
  %402 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 85, i32 noundef %401, i32 noundef %.0505) #5
  br label %420

403:                                              ; preds = %399
  %404 = getelementptr inbounds i8, ptr %.0499, i64 8
  %405 = load ptr, ptr %404, align 8, !tbaa !77
  %406 = zext nneg i32 %.4479 to i64
  %407 = getelementptr inbounds %struct.ExprList_item, ptr %405, i64 %406
  %408 = load ptr, ptr %407, align 8, !tbaa !78
  call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %408, i32 noundef %.0505) #5
  %409 = call ptr @sqlite3VdbeGetOp(ptr noundef %61, i32 noundef -1) #5
  %.not547 = icmp eq ptr %409, null
  br i1 %.not547, label %420, label %410

410:                                              ; preds = %403
  %411 = load i8, ptr %409, align 8, !tbaa !83
  %412 = icmp eq i8 %411, 80
  br i1 %412, label %413, label %420

413:                                              ; preds = %410
  %414 = load i32, ptr %85, align 4, !tbaa !40
  %.not548 = icmp eq i32 %414, 0
  br i1 %.not548, label %415, label %.thread600

415:                                              ; preds = %413
  store i8 115, ptr %409, align 8, !tbaa !83
  %416 = load i32, ptr %6, align 4, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %409, i64 4
  store i32 %416, ptr %417, align 4, !tbaa !85
  %418 = getelementptr inbounds i8, ptr %409, i64 8
  store i32 %.0505, ptr %418, align 8, !tbaa !86
  %419 = getelementptr inbounds i8, ptr %409, i64 12
  store i32 %77, ptr %419, align 4, !tbaa !87
  br label %439

420:                                              ; preds = %397, %400, %410, %403
  %.pr = load i32, ptr %85, align 4, !tbaa !40
  %.not550 = icmp eq i32 %.pr, 0
  br i1 %.not550, label %421, label %.thread600

421:                                              ; preds = %420
  %422 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 35, i32 noundef %.0505) #5
  %423 = load i32, ptr %6, align 4, !tbaa !5
  %424 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 115, i32 noundef %423, i32 noundef %.0505, i32 noundef %77) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %422) #5
  br label %428

.thread600:                                       ; preds = %413, %420
  %425 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %61) #5
  %426 = add nsw i32 %425, 2
  %427 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 34, i32 noundef %.0505, i32 noundef %426) #5
  br label %428

428:                                              ; preds = %.thread600, %421
  %429 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 17, i32 noundef %.0505) #5
  br label %439

430:                                              ; preds = %394
  %431 = load i32, ptr %85, align 4, !tbaa !40
  %432 = icmp ne i32 %431, 0
  %433 = icmp ne i8 %52, 0
  %or.cond10 = select i1 %432, i1 true, i1 %433
  br i1 %or.cond10, label %434, label %436

434:                                              ; preds = %430
  %435 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 80, i32 noundef 0, i32 noundef %.0505) #5
  br label %439

436:                                              ; preds = %430
  %437 = load i32, ptr %6, align 4, !tbaa !5
  %438 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 115, i32 noundef %437, i32 noundef %.0505, i32 noundef %77) #5
  br label %439

439:                                              ; preds = %415, %434, %436, %428
  %.2493 = phi i32 [ 1, %415 ], [ 0, %428 ], [ 0, %434 ], [ 1, %436 ]
  call void @autoIncStep(ptr noundef nonnull %0, i32 noundef %77, i32 noundef %.0505)
  %440 = load i16, ptr %81, align 2, !tbaa !39
  %441 = icmp sgt i16 %440, 0
  br i1 %441, label %.lr.ph667, label %._crit_edge668

.lr.ph667:                                        ; preds = %439
  %442 = getelementptr inbounds i8, ptr %34, i64 68
  %443 = getelementptr inbounds i8, ptr %3, i64 8
  %444 = icmp eq i32 %.3470, 0
  %445 = getelementptr inbounds i8, ptr %34, i64 8
  %446 = getelementptr inbounds i8, ptr %.0499, i64 8
  %.not554 = icmp eq i32 %.0501, %91
  %447 = zext i32 %91 to i64
  br label %448

448:                                              ; preds = %.lr.ph667, %497
  %indvars.iv701 = phi i64 [ 0, %.lr.ph667 ], [ %indvars.iv.next702, %497 ]
  %.1472663 = phi i32 [ 0, %.lr.ph667 ], [ %.3474, %497 ]
  %449 = add nuw i64 %indvars.iv701, %447
  %450 = load i16, ptr %442, align 4, !tbaa !54
  %451 = sext i16 %450 to i64
  %452 = and i64 %451, 4294967295
  %453 = icmp eq i64 %indvars.iv701, %452
  br i1 %453, label %454, label %457

454:                                              ; preds = %448
  %455 = trunc i64 %449 to i32
  %456 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 81, i32 noundef %455) #5
  br label %497

457:                                              ; preds = %448
  br i1 %73, label %461, label %.preheader

.preheader:                                       ; preds = %457
  %458 = load i32, ptr %443, align 8, !tbaa !41
  %459 = icmp sgt i32 %458, 0
  br i1 %459, label %.lr.ph658, label %._crit_edge659

.lr.ph658:                                        ; preds = %.preheader
  %460 = load ptr, ptr %3, align 8, !tbaa !43
  %wide.trip.count699 = zext nneg i32 %458 to i64
  br label %467

461:                                              ; preds = %457
  %462 = load ptr, ptr %445, align 8, !tbaa !51
  %463 = getelementptr inbounds %struct.Column, ptr %462, i64 %indvars.iv701, i32 6
  %464 = load i8, ptr %463, align 1, !tbaa !67
  %465 = and i8 %464, 2
  %.not552 = icmp eq i8 %465, 0
  br i1 %.not552, label %.thread607, label %.thread602

.thread602:                                       ; preds = %461
  %466 = add nsw i32 %.1472663, 1
  br label %477

467:                                              ; preds = %.lr.ph658, %472
  %indvars.iv696 = phi i64 [ 0, %.lr.ph658 ], [ %indvars.iv.next697, %472 ]
  %468 = getelementptr inbounds %struct.IdList_item, ptr %460, i64 %indvars.iv696, i32 1
  %469 = load i32, ptr %468, align 8, !tbaa !44
  %470 = zext i32 %469 to i64
  %471 = icmp eq i64 %indvars.iv701, %470
  br i1 %471, label %._crit_edge659.loopexit.split.loop.exit712, label %472

472:                                              ; preds = %467
  %indvars.iv.next697 = add nuw nsw i64 %indvars.iv696, 1
  %exitcond700.not = icmp eq i64 %indvars.iv.next697, %wide.trip.count699
  br i1 %exitcond700.not, label %._crit_edge659, label %467, !llvm.loop !88

._crit_edge659.loopexit.split.loop.exit712:       ; preds = %467
  %473 = trunc nuw nsw i64 %indvars.iv696 to i32
  br label %._crit_edge659

._crit_edge659:                                   ; preds = %472, %._crit_edge659.loopexit.split.loop.exit712, %.preheader
  %.5465.lcssa = phi i32 [ 0, %.preheader ], [ %473, %._crit_edge659.loopexit.split.loop.exit712 ], [ %458, %472 ]
  %.not553 = icmp sge i32 %.5465.lcssa, %458
  %or.cond716.not = select i1 %444, i1 true, i1 %.not553
  br i1 %or.cond716.not, label %477, label %.thread613

.thread607:                                       ; preds = %461
  %474 = trunc nuw nsw i64 %indvars.iv701 to i32
  %475 = sub nsw i32 %474, %.1472663
  %476 = icmp slt i32 %475, 0
  %or.cond12610 = select i1 %476, i1 true, i1 %444
  br i1 %or.cond12610, label %477, label %.thread613

477:                                              ; preds = %.thread607, %.thread602, %._crit_edge659
  %.2473606 = phi i32 [ %466, %.thread602 ], [ %.1472663, %._crit_edge659 ], [ %.1472663, %.thread607 ]
  %478 = load ptr, ptr %445, align 8, !tbaa !51
  %479 = getelementptr inbounds %struct.Column, ptr %478, i64 %indvars.iv701, i32 1
  %480 = load ptr, ptr %479, align 8, !tbaa !81
  %481 = trunc i64 %449 to i32
  call void @sqlite3ExprCodeFactorable(ptr noundef nonnull %0, ptr noundef %480, i32 noundef %481) #5
  br label %497

.thread613:                                       ; preds = %._crit_edge659, %.thread607
  %.6612615 = phi i32 [ %475, %.thread607 ], [ %.5465.lcssa, %._crit_edge659 ]
  br i1 %194, label %482, label %485

482:                                              ; preds = %.thread613
  %483 = trunc i64 %449 to i32
  %484 = call i32 @sqlite3VdbeAddOp3(ptr noundef %61, i32 noundef 98, i32 noundef %.2485, i32 noundef %.6612615, i32 noundef %483) #5
  br label %497

485:                                              ; preds = %.thread613
  br i1 %69, label %486, label %491

486:                                              ; preds = %485
  br i1 %.not554, label %497, label %487

487:                                              ; preds = %486
  %488 = add nsw i32 %.6612615, %.0501
  %489 = trunc i64 %449 to i32
  %490 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 86, i32 noundef %488, i32 noundef %489) #5
  br label %497

491:                                              ; preds = %485
  %492 = load ptr, ptr %446, align 8, !tbaa !77
  %493 = zext nneg i32 %.6612615 to i64
  %494 = getelementptr inbounds %struct.ExprList_item, ptr %492, i64 %493
  %495 = load ptr, ptr %494, align 8, !tbaa !78
  %496 = trunc i64 %449 to i32
  call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %495, i32 noundef %496) #5
  br label %497

497:                                              ; preds = %477, %491, %487, %486, %482, %454
  %.3474 = phi i32 [ %.1472663, %454 ], [ %.1472663, %482 ], [ %.1472663, %486 ], [ %.1472663, %487 ], [ %.1472663, %491 ], [ %.2473606, %477 ]
  %indvars.iv.next702 = add nuw nsw i64 %indvars.iv701, 1
  %498 = load i16, ptr %81, align 2, !tbaa !39
  %499 = sext i16 %498 to i64
  %500 = icmp slt i64 %indvars.iv.next702, %499
  br i1 %500, label %448, label %._crit_edge668, !llvm.loop !89

._crit_edge668:                                   ; preds = %497, %439
  %501 = load i32, ptr %85, align 4, !tbaa !40
  %.not551 = icmp eq i32 %501, 0
  br i1 %.not551, label %511, label %502

502:                                              ; preds = %._crit_edge668
  %503 = call ptr @sqlite3GetVTable(ptr noundef %12, ptr noundef nonnull %34) #5
  call void @sqlite3VtabMakeWritable(ptr noundef nonnull %0, ptr noundef nonnull %34) #5
  %504 = load i16, ptr %81, align 2, !tbaa !39
  %505 = sext i16 %504 to i32
  %506 = add nsw i32 %505, 2
  %507 = call i32 @sqlite3VdbeAddOp4(ptr noundef %61, i32 noundef 12, i32 noundef 1, i32 noundef %506, i32 noundef %80, ptr noundef %503, i32 noundef -8) #5
  %508 = icmp eq i32 %4, 10
  %509 = trunc i32 %4 to i16
  %510 = select i1 %508, i16 2, i16 %509
  call void @sqlite3VdbeChangeP5(ptr noundef %61, i16 noundef zeroext %510) #5
  call void @sqlite3MayAbort(ptr noundef nonnull %0) #5
  br label %532

511:                                              ; preds = %._crit_edge668
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  %512 = load i32, ptr %6, align 4, !tbaa !5
  %513 = load i32, ptr %7, align 4, !tbaa !5
  %514 = zext i1 %395 to i8
  %515 = trunc i32 %4 to i8
  call void @sqlite3GenerateConstraintChecks(ptr noundef nonnull %0, ptr noundef nonnull %34, ptr noundef %.0502, i32 noundef %512, i32 noundef %513, i32 noundef %80, i32 noundef 0, i8 noundef zeroext %514, i8 noundef zeroext %515, i32 noundef %313, ptr noundef nonnull %11, ptr noundef null)
  call void @sqlite3FkCheck(ptr noundef nonnull %0, ptr noundef nonnull %34, i32 noundef 0, i32 noundef %80, ptr noundef null, i32 noundef 0) #5
  %516 = load i32, ptr %11, align 4, !tbaa !5
  %517 = icmp eq i32 %516, 0
  br i1 %517, label %528, label %518

518:                                              ; preds = %511
  %519 = icmp eq ptr %53, null
  br i1 %519, label %520, label %528

520:                                              ; preds = %518
  %521 = load i32, ptr %261, align 4, !tbaa !72
  %522 = and i32 %521, 524288
  %523 = icmp eq i32 %522, 0
  br i1 %523, label %528, label %524

524:                                              ; preds = %520
  %525 = call ptr @sqlite3FkReferences(ptr noundef nonnull %34) #5
  %526 = icmp eq ptr %525, null
  %527 = zext i1 %526 to i32
  br label %528

528:                                              ; preds = %518, %524, %520, %511
  %529 = phi i32 [ 1, %511 ], [ 0, %518 ], [ 1, %520 ], [ %527, %524 ]
  %530 = load i32, ptr %6, align 4, !tbaa !5
  %531 = load i32, ptr %7, align 4, !tbaa !5
  call void @sqlite3CompleteInsertion(ptr noundef nonnull %0, ptr noundef nonnull %34, i32 noundef %530, i32 noundef %531, i32 noundef %80, ptr noundef %.0502, i32 noundef 0, i32 noundef %.2493, i32 noundef %529)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  br label %532

532:                                              ; preds = %502, %528, %389
  %533 = load i32, ptr %261, align 4, !tbaa !72
  %534 = and i32 %533, 128
  %.not555 = icmp eq i32 %534, 0
  br i1 %.not555, label %537, label %535

535:                                              ; preds = %532
  %536 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 92, i32 noundef %.0506, i32 noundef 1) #5
  br label %537

537:                                              ; preds = %535, %532
  br i1 %70, label %538, label %543

538:                                              ; preds = %537
  %539 = load i16, ptr %81, align 2, !tbaa !39
  %540 = xor i16 %539, -1
  %541 = sext i16 %540 to i32
  %542 = add i32 %.0505, %541
  call void @sqlite3CodeRowTrigger(ptr noundef nonnull %0, ptr noundef nonnull %53, i32 noundef 108, ptr noundef null, i32 noundef 2, ptr noundef nonnull %34, i32 noundef %542, i32 noundef %4, i32 noundef %313) #5
  br label %543

543:                                              ; preds = %538, %537
  call void @sqlite3VdbeResolveLabel(ptr noundef %61, i32 noundef %313) #5
  br i1 %194, label %544, label %547

544:                                              ; preds = %543
  %545 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 7, i32 noundef %.2485, i32 noundef %.0487) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %.0486) #5
  %546 = call i32 @sqlite3VdbeAddOp1(ptr noundef %61, i32 noundef 112, i32 noundef %.2485) #5
  br label %550

547:                                              ; preds = %543
  br i1 %69, label %548, label %550

548:                                              ; preds = %547
  %549 = call i32 @sqlite3VdbeGoto(ptr noundef %61, i32 noundef %.0487) #5
  call void @sqlite3VdbeJumpHere(ptr noundef %61, i32 noundef %.0486) #5
  br label %550

550:                                              ; preds = %544, %548, %547, %74
  %.1507 = phi i32 [ 0, %74 ], [ %.0506, %544 ], [ %.0506, %548 ], [ %.0506, %547 ]
  %.1503 = phi ptr [ null, %74 ], [ %.0502, %544 ], [ %.0502, %548 ], [ %.0502, %547 ]
  %551 = load i8, ptr %64, align 2, !tbaa !37
  %552 = icmp eq i8 %551, 0
  br i1 %552, label %553, label %558

553:                                              ; preds = %550
  %554 = getelementptr inbounds i8, ptr %0, i64 168
  %555 = load ptr, ptr %554, align 8, !tbaa !90
  %556 = icmp eq ptr %555, null
  br i1 %556, label %557, label %558

557:                                              ; preds = %553
  call void @sqlite3AutoincrementEnd(ptr noundef nonnull %0)
  br label %558

558:                                              ; preds = %557, %553, %550
  %559 = getelementptr inbounds i8, ptr %12, i64 44
  %560 = load i32, ptr %559, align 4, !tbaa !72
  %561 = and i32 %560, 128
  %.not560 = icmp eq i32 %561, 0
  br i1 %.not560, label %.thread572, label %562

562:                                              ; preds = %558
  %563 = load i8, ptr %64, align 2, !tbaa !37
  %.not561 = icmp eq i8 %563, 0
  br i1 %.not561, label %564, label %.thread572

564:                                              ; preds = %562
  %565 = getelementptr inbounds i8, ptr %0, i64 168
  %566 = load ptr, ptr %565, align 8, !tbaa !90
  %.not562 = icmp eq ptr %566, null
  br i1 %.not562, label %567, label %.thread572

567:                                              ; preds = %564
  %568 = call i32 @sqlite3VdbeAddOp2(ptr noundef %61, i32 noundef 88, i32 noundef %.1507, i32 noundef 1) #5
  call void @sqlite3VdbeSetNumCols(ptr noundef %61, i32 noundef 1) #5
  %569 = call i32 @sqlite3VdbeSetColName(ptr noundef %61, i32 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef null) #5
  br label %.thread572

.thread572:                                       ; preds = %152, %165, %167, %269, %193, %558, %562, %564, %567, %60, %57, %47, %36, %33, %29, %5, %15, %260, %255, %143
  %.2504 = phi ptr [ null, %5 ], [ null, %15 ], [ null, %29 ], [ null, %33 ], [ null, %36 ], [ null, %47 ], [ null, %57 ], [ null, %60 ], [ %.1503, %562 ], [ %.1503, %564 ], [ %.1503, %567 ], [ %.1503, %558 ], [ null, %143 ], [ null, %255 ], [ null, %260 ], [ null, %193 ], [ null, %269 ], [ null, %167 ], [ null, %165 ], [ null, %152 ]
  %.1500 = phi ptr [ null, %5 ], [ null, %15 ], [ %.0499, %29 ], [ %.0499, %33 ], [ %.0499, %36 ], [ %.0499, %47 ], [ %.0499, %57 ], [ %.0499, %60 ], [ %.0499, %562 ], [ %.0499, %564 ], [ %.0499, %567 ], [ %.0499, %558 ], [ %.0499, %143 ], [ %.0499, %255 ], [ %.0499, %260 ], [ %.0499, %193 ], [ %.0499, %269 ], [ %.0499, %167 ], [ %.0499, %165 ], [ %.0499, %152 ]
  %.1 = phi ptr [ %2, %5 ], [ %2, %15 ], [ %.0, %29 ], [ %.0, %33 ], [ %.0, %36 ], [ %.0, %47 ], [ %.0, %57 ], [ %.0, %60 ], [ %.0, %562 ], [ %.0, %564 ], [ %.0, %567 ], [ %.0, %558 ], [ %.0, %143 ], [ %.0, %255 ], [ %.0, %260 ], [ null, %193 ], [ %.0, %269 ], [ %.0, %167 ], [ %.0, %165 ], [ %.0, %152 ]
  call void @sqlite3SrcListDelete(ptr noundef %12, ptr noundef %1) #5
  call void @sqlite3ExprListDelete(ptr noundef %12, ptr noundef %.1500) #5
  call void @sqlite3SelectDelete(ptr noundef %12, ptr noundef %.1) #5
  call void @sqlite3IdListDelete(ptr noundef %12, ptr noundef %3) #5
  call void @sqlite3DbFree(ptr noundef %12, ptr noundef %.2504) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  ret void
}

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

declare void @sqlite3SelectDelete(ptr noundef, ptr noundef) local_unnamed_addr #1

declare ptr @sqlite3SrcListLookup(ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

declare void @sqlite3VdbeCountChanges(ptr noundef) local_unnamed_addr #1

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

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

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

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

declare i32 @sqlite3IsRowid(ptr noundef) local_unnamed_addr #1

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

declare i32 @sqlite3GetTempReg(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

declare ptr @sqlite3DbMallocRawNN(ptr noundef, i64 noundef) local_unnamed_addr #1

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

declare ptr @sqlite3GetVTable(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @sqlite3VtabMakeWritable(ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare void @sqlite3MayAbort(ptr noundef) local_unnamed_addr #1

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

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

declare ptr @sqlite3FkReferences(ptr noundef) local_unnamed_addr #1

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

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

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

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

declare void @sqlite3SrcListDelete(ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare void @sqlite3IdListDelete(ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #4

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

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


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