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

@.str.4 = external hidden unnamed_addr constant [6 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 @sqlite3VdbeAddOp4Int(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare ptr @sqlite3PrimaryKeyIndex(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

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) #1

declare void @sqlite3VdbeJumpHere(ptr noundef, i32 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 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 @sqlite3ReleaseTempRange(ptr noundef, i32 noundef, i32 noundef) #1

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

declare void @sqlite3MayAbort(ptr noundef) #1

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

78:                                               ; preds = %12
  store ptr null, ptr %27, align 8, !tbaa !5
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %86

79:                                               ; preds = %12
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %80)
  store ptr %81, ptr %27, align 8, !tbaa !5
  %82 = load ptr, ptr %27, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.Index, ptr %82, i32 0, i32 13
  %84 = load i16, ptr %83, align 2, !tbaa !19
  %85 = zext i16 %84 to i32
  store i32 %85, ptr %35, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %79, %78
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %87

87:                                               ; preds = %208, %86
  %88 = load i32, ptr %29, align 4, !tbaa !9
  %89 = load i32, ptr %31, align 4, !tbaa !9
  %90 = icmp slt i32 %88, %89
  br i1 %90, label %91, label %211

91:                                               ; preds = %87
  %92 = load i32, ptr %29, align 4, !tbaa !9
  %93 = load ptr, ptr %14, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.Table, ptr %93, i32 0, i32 10
  %95 = load i16, ptr %94, align 4, !tbaa !21
  %96 = sext i16 %95 to i32
  %97 = icmp eq i32 %92, %96
  br i1 %97, label %98, label %99

98:                                               ; preds = %91
  br label %208

99:                                               ; preds = %91
  %100 = load ptr, ptr %24, align 8, !tbaa !5
  %101 = icmp ne ptr %100, null
  br i1 %101, label %102, label %110

102:                                              ; preds = %99
  %103 = load ptr, ptr %24, align 8, !tbaa !5
  %104 = load i32, ptr %29, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds i32, ptr %103, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %109, label %110

109:                                              ; preds = %102
  br label %208

110:                                              ; preds = %102, %99
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.Table, ptr %111, i32 0, i32 1
  %113 = load ptr, ptr %112, align 8, !tbaa !22
  %114 = load i32, ptr %29, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %struct.Column, ptr %113, i64 %115
  %117 = getelementptr inbounds %struct.Column, ptr %116, i32 0, i32 3
  %118 = load i8, ptr %117, align 8, !tbaa !23
  %119 = zext i8 %118 to i32
  store i32 %119, ptr %32, align 4, !tbaa !9
  %120 = load i32, ptr %32, align 4, !tbaa !9
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %123

122:                                              ; preds = %110
  br label %208

123:                                              ; preds = %110
  %124 = load i8, ptr %21, align 1, !tbaa !11
  %125 = zext i8 %124 to i32
  %126 = icmp ne i32 %125, 10
  br i1 %126, label %127, label %130

127:                                              ; preds = %123
  %128 = load i8, ptr %21, align 1, !tbaa !11
  %129 = zext i8 %128 to i32
  store i32 %129, ptr %32, align 4, !tbaa !9
  br label %135

130:                                              ; preds = %123
  %131 = load i32, ptr %32, align 4, !tbaa !9
  %132 = icmp eq i32 %131, 10
  br i1 %132, label %133, label %134

133:                                              ; preds = %130
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %133, %130
  br label %135

135:                                              ; preds = %134, %127
  %136 = load i32, ptr %32, align 4, !tbaa !9
  %137 = icmp eq i32 %136, 5
  br i1 %137, label %138, label %149

138:                                              ; preds = %135
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.Table, ptr %139, i32 0, i32 1
  %141 = load ptr, ptr %140, align 8, !tbaa !22
  %142 = load i32, ptr %29, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds %struct.Column, ptr %141, i64 %143
  %145 = getelementptr inbounds %struct.Column, ptr %144, i32 0, i32 1
  %146 = load ptr, ptr %145, align 8, !tbaa !25
  %147 = icmp eq ptr %146, null
  br i1 %147, label %148, label %149

148:                                              ; preds = %138
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %148, %138, %135
  %150 = load i32, ptr %32, align 4, !tbaa !9
  switch i32 %150, label %185 [
    i32 2, label %151
    i32 1, label %153
    i32 3, label %153
    i32 4, label %177
  ]

151:                                              ; preds = %149
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  call void @sqlite3MayAbort(ptr noundef %152)
  br label %153

153:                                              ; preds = %151, %149, %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  %154 = load ptr, ptr %28, align 8, !tbaa !5
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.Table, ptr %155, i32 0, i32 0
  %157 = load ptr, ptr %156, align 8, !tbaa !26
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.Table, ptr %158, i32 0, i32 1
  %160 = load ptr, ptr %159, align 8, !tbaa !22
  %161 = load i32, ptr %29, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds %struct.Column, ptr %160, i64 %162
  %164 = getelementptr inbounds %struct.Column, ptr %163, i32 0, i32 0
  %165 = load ptr, ptr %164, align 8, !tbaa !27
  %166 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %154, ptr noundef @.str.4, ptr noundef %157, ptr noundef %165)
  store ptr %166, ptr %40, align 8, !tbaa !5
  %167 = load ptr, ptr %25, align 8, !tbaa !5
  %168 = load i32, ptr %32, align 4, !tbaa !9
  %169 = load i32, ptr %18, align 4, !tbaa !9
  %170 = add nsw i32 %169, 1
  %171 = load i32, ptr %29, align 4, !tbaa !9
  %172 = add nsw i32 %170, %171
  %173 = call i32 @sqlite3VdbeAddOp3(ptr noundef %167, i32 noundef 75, i32 noundef 1299, i32 noundef %168, i32 noundef %172)
  %174 = load ptr, ptr %25, align 8, !tbaa !5
  %175 = load ptr, ptr %40, align 8, !tbaa !5
  call void @sqlite3VdbeAppendP4(ptr noundef %174, ptr noundef %175, i32 noundef -1)
  %176 = load ptr, ptr %25, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %176, i16 noundef zeroext 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  br label %207

177:                                              ; preds = %149
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  %179 = load i32, ptr %18, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  %181 = load i32, ptr %29, align 4, !tbaa !9
  %182 = add nsw i32 %180, %181
  %183 = load i32, ptr %22, align 4, !tbaa !9
  %184 = call i32 @sqlite3VdbeAddOp2(ptr noundef %178, i32 noundef 34, i32 noundef %182, i32 noundef %183)
  br label %207

185:                                              ; preds = %149
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = load i32, ptr %18, align 4, !tbaa !9
  %188 = add nsw i32 %187, 1
  %189 = load i32, ptr %29, align 4, !tbaa !9
  %190 = add nsw i32 %188, %189
  %191 = call i32 @sqlite3VdbeAddOp1(ptr noundef %186, i32 noundef 35, i32 noundef %190)
  store i32 %191, ptr %33, align 4, !tbaa !9
  %192 = load ptr, ptr %13, align 8, !tbaa !5
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.Table, ptr %193, i32 0, i32 1
  %195 = load ptr, ptr %194, align 8, !tbaa !22
  %196 = load i32, ptr %29, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %struct.Column, ptr %195, i64 %197
  %199 = getelementptr inbounds %struct.Column, ptr %198, i32 0, i32 1
  %200 = load ptr, ptr %199, align 8, !tbaa !25
  %201 = load i32, ptr %18, align 4, !tbaa !9
  %202 = add nsw i32 %201, 1
  %203 = load i32, ptr %29, align 4, !tbaa !9
  %204 = add nsw i32 %202, %203
  call void @sqlite3ExprCode(ptr noundef %192, ptr noundef %200, i32 noundef %204)
  %205 = load ptr, ptr %25, align 8, !tbaa !5
  %206 = load i32, ptr %33, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %205, i32 noundef %206)
  br label %207

207:                                              ; preds = %185, %177, %153
  br label %208

208:                                              ; preds = %207, %122, %109, %98
  %209 = load i32, ptr %29, align 4, !tbaa !9
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %29, align 4, !tbaa !9
  br label %87, !llvm.loop !28

211:                                              ; preds = %87
  %212 = load ptr, ptr %14, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.Table, ptr %212, i32 0, i32 6
  %214 = load ptr, ptr %213, align 8, !tbaa !30
  %215 = icmp ne ptr %214, null
  br i1 %215, label %216, label %309

216:                                              ; preds = %211
  %217 = load ptr, ptr %28, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.sqlite3, ptr %217, i32 0, i32 6
  %219 = load i32, ptr %218, align 4, !tbaa !31
  %220 = and i32 %219, 8192
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %222, label %309

222:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  %223 = load ptr, ptr %14, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.Table, ptr %223, i32 0, i32 6
  %225 = load ptr, ptr %224, align 8, !tbaa !30
  store ptr %225, ptr %41, align 8, !tbaa !5
  %226 = load i32, ptr %18, align 4, !tbaa !9
  %227 = add nsw i32 %226, 1
  %228 = load ptr, ptr %13, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.Parse, ptr %228, i32 0, i32 21
  store i32 %227, ptr %229, align 4, !tbaa !38
  %230 = load i8, ptr %21, align 1, !tbaa !11
  %231 = zext i8 %230 to i32
  %232 = icmp ne i32 %231, 10
  br i1 %232, label %233, label %236

233:                                              ; preds = %222
  %234 = load i8, ptr %21, align 1, !tbaa !11
  %235 = zext i8 %234 to i32
  br label %237

236:                                              ; preds = %222
  br label %237

237:                                              ; preds = %236, %233
  %238 = phi i32 [ %235, %233 ], [ 2, %236 ]
  store i32 %238, ptr %32, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %305, %237
  %240 = load i32, ptr %29, align 4, !tbaa !9
  %241 = load ptr, ptr %41, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.ExprList, ptr %241, i32 0, i32 0
  %243 = load i32, ptr %242, align 8, !tbaa !39
  %244 = icmp slt i32 %240, %243
  br i1 %244, label %245, label %308

245:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  %246 = load ptr, ptr %41, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.ExprList, ptr %246, i32 0, i32 1
  %248 = load ptr, ptr %247, align 8, !tbaa !41
  %249 = load i32, ptr %29, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds %struct.ExprList_item, ptr %248, i64 %250
  %252 = getelementptr inbounds %struct.ExprList_item, ptr %251, i32 0, i32 0
  %253 = load ptr, ptr %252, align 8, !tbaa !42
  store ptr %253, ptr %43, align 8, !tbaa !5
  %254 = load ptr, ptr %24, align 8, !tbaa !5
  %255 = icmp ne ptr %254, null
  br i1 %255, label %256, label %264

256:                                              ; preds = %245
  %257 = load ptr, ptr %43, align 8, !tbaa !5
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  %259 = load i8, ptr %20, align 1, !tbaa !11
  %260 = zext i8 %259 to i32
  %261 = call i32 @checkConstraintUnchanged(ptr noundef %257, ptr noundef %258, i32 noundef %260)
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %263, label %264

263:                                              ; preds = %256
  store i32 8, ptr %44, align 4
  br label %302

264:                                              ; preds = %256, %245
  %265 = load ptr, ptr %25, align 8, !tbaa !5
  %266 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %265)
  store i32 %266, ptr %42, align 4, !tbaa !9
  %267 = load ptr, ptr %13, align 8, !tbaa !5
  %268 = load ptr, ptr %43, align 8, !tbaa !5
  %269 = load i32, ptr %42, align 4, !tbaa !9
  call void @sqlite3ExprIfTrue(ptr noundef %267, ptr noundef %268, i32 noundef %269, i32 noundef 16)
  %270 = load i32, ptr %32, align 4, !tbaa !9
  %271 = icmp eq i32 %270, 4
  br i1 %271, label %272, label %276

272:                                              ; preds = %264
  %273 = load ptr, ptr %25, align 8, !tbaa !5
  %274 = load i32, ptr %22, align 4, !tbaa !9
  %275 = call i32 @sqlite3VdbeGoto(ptr noundef %273, i32 noundef %274)
  br label %299

276:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  %277 = load ptr, ptr %41, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ExprList, ptr %277, i32 0, i32 1
  %279 = load ptr, ptr %278, align 8, !tbaa !41
  %280 = load i32, ptr %29, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds %struct.ExprList_item, ptr %279, i64 %281
  %283 = getelementptr inbounds %struct.ExprList_item, ptr %282, i32 0, i32 1
  %284 = load ptr, ptr %283, align 8, !tbaa !44
  store ptr %284, ptr %45, align 8, !tbaa !5
  %285 = load ptr, ptr %45, align 8, !tbaa !5
  %286 = icmp eq ptr %285, null
  br i1 %286, label %287, label %291

287:                                              ; preds = %276
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.Table, ptr %288, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8, !tbaa !26
  store ptr %290, ptr %45, align 8, !tbaa !5
  br label %291

291:                                              ; preds = %287, %276
  %292 = load i32, ptr %32, align 4, !tbaa !9
  %293 = icmp eq i32 %292, 5
  br i1 %293, label %294, label %295

294:                                              ; preds = %291
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %294, %291
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = load i32, ptr %32, align 4, !tbaa !9
  %298 = load ptr, ptr %45, align 8, !tbaa !5
  call void @sqlite3HaltConstraint(ptr noundef %296, i32 noundef 275, i32 noundef %297, ptr noundef %298, i8 noundef signext 0, i8 noundef zeroext 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  br label %299

299:                                              ; preds = %295, %272
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = load i32, ptr %42, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %300, i32 noundef %301)
  store i32 0, ptr %44, align 4
  br label %302

302:                                              ; preds = %299, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  %303 = load i32, ptr %44, align 4
  switch i32 %303, label %898 [
    i32 0, label %304
    i32 8, label %305
  ]

304:                                              ; preds = %302
  br label %305

305:                                              ; preds = %304, %302
  %306 = load i32, ptr %29, align 4, !tbaa !9
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %29, align 4, !tbaa !9
  br label %239, !llvm.loop !45

308:                                              ; preds = %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  br label %309

309:                                              ; preds = %308, %216, %211
  %310 = load i8, ptr %20, align 1, !tbaa !11
  %311 = zext i8 %310 to i32
  %312 = icmp ne i32 %311, 0
  br i1 %312, label %313, label %445

313:                                              ; preds = %309
  %314 = load ptr, ptr %27, align 8, !tbaa !5
  %315 = icmp eq ptr %314, null
  br i1 %315, label %316, label %445

316:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %317 = load ptr, ptr %25, align 8, !tbaa !5
  %318 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %317)
  store i32 %318, ptr %46, align 4, !tbaa !9
  %319 = load ptr, ptr %14, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.Table, ptr %319, i32 0, i32 14
  %321 = load i8, ptr %320, align 4, !tbaa !46
  %322 = zext i8 %321 to i32
  store i32 %322, ptr %32, align 4, !tbaa !9
  %323 = load i8, ptr %21, align 1, !tbaa !11
  %324 = zext i8 %323 to i32
  %325 = icmp ne i32 %324, 10
  br i1 %325, label %326, label %329

326:                                              ; preds = %316
  %327 = load i8, ptr %21, align 1, !tbaa !11
  %328 = zext i8 %327 to i32
  store i32 %328, ptr %32, align 4, !tbaa !9
  br label %334

329:                                              ; preds = %316
  %330 = load i32, ptr %32, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 10
  br i1 %331, label %332, label %333

332:                                              ; preds = %329
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %332, %329
  br label %334

334:                                              ; preds = %333, %326
  %335 = load i8, ptr %38, align 1, !tbaa !11
  %336 = icmp ne i8 %335, 0
  br i1 %336, label %337, label %344

337:                                              ; preds = %334
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  %339 = load i32, ptr %18, align 4, !tbaa !9
  %340 = load i32, ptr %46, align 4, !tbaa !9
  %341 = load i32, ptr %19, align 4, !tbaa !9
  %342 = call i32 @sqlite3VdbeAddOp3(ptr noundef %338, i32 noundef 37, i32 noundef %339, i32 noundef %340, i32 noundef %341)
  %343 = load ptr, ptr %25, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %343, i16 noundef zeroext 144)
  br label %344

344:                                              ; preds = %337, %334
  %345 = load i32, ptr %32, align 4, !tbaa !9
  %346 = icmp eq i32 %345, 5
  br i1 %346, label %347, label %379

347:                                              ; preds = %344
  %348 = load i8, ptr %21, align 1, !tbaa !11
  %349 = zext i8 %348 to i32
  %350 = icmp ne i32 %349, 5
  br i1 %350, label %351, label %379

351:                                              ; preds = %347
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.Table, ptr %352, i32 0, i32 2
  %354 = load ptr, ptr %353, align 8, !tbaa !47
  store ptr %354, ptr %26, align 8, !tbaa !5
  br label %355

355:                                              ; preds = %374, %351
  %356 = load ptr, ptr %26, align 8, !tbaa !5
  %357 = icmp ne ptr %356, null
  br i1 %357, label %358, label %378

358:                                              ; preds = %355
  %359 = load ptr, ptr %26, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.Index, ptr %359, i32 0, i32 15
  %361 = load i8, ptr %360, align 2, !tbaa !48
  %362 = zext i8 %361 to i32
  %363 = icmp eq i32 %362, 4
  br i1 %363, label %370, label %364

364:                                              ; preds = %358
  %365 = load ptr, ptr %26, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.Index, ptr %365, i32 0, i32 15
  %367 = load i8, ptr %366, align 2, !tbaa !48
  %368 = zext i8 %367 to i32
  %369 = icmp eq i32 %368, 3
  br i1 %369, label %370, label %373

370:                                              ; preds = %364, %358
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = call i32 @sqlite3VdbeAddOp0(ptr noundef %371, i32 noundef 13)
  store i32 %372, ptr %36, align 4, !tbaa !9
  br label %378

373:                                              ; preds = %364
  br label %374

374:                                              ; preds = %373
  %375 = load ptr, ptr %26, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.Index, ptr %375, i32 0, i32 5
  %377 = load ptr, ptr %376, align 8, !tbaa !49
  store ptr %377, ptr %26, align 8, !tbaa !5
  br label %355, !llvm.loop !50

378:                                              ; preds = %370, %355
  br label %379

379:                                              ; preds = %378, %347, %344
  %380 = load ptr, ptr %25, align 8, !tbaa !5
  %381 = load i32, ptr %16, align 4, !tbaa !9
  %382 = load i32, ptr %46, align 4, !tbaa !9
  %383 = load i32, ptr %18, align 4, !tbaa !9
  %384 = call i32 @sqlite3VdbeAddOp3(ptr noundef %380, i32 noundef 33, i32 noundef %381, i32 noundef %382, i32 noundef %383)
  %385 = load i32, ptr %32, align 4, !tbaa !9
  switch i32 %385, label %386 [
    i32 1, label %387
    i32 2, label %387
    i32 3, label %387
    i32 5, label %391
    i32 4, label %430
  ]

386:                                              ; preds = %379
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %386, %379, %379, %379
  %388 = load ptr, ptr %13, align 8, !tbaa !5
  %389 = load i32, ptr %32, align 4, !tbaa !9
  %390 = load ptr, ptr %14, align 8, !tbaa !5
  call void @sqlite3RowidConstraint(ptr noundef %388, i32 noundef %389, ptr noundef %390)
  br label %434

391:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  store ptr null, ptr %47, align 8, !tbaa !5
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.sqlite3, ptr %392, i32 0, i32 6
  %394 = load i32, ptr %393, align 4, !tbaa !31
  %395 = and i32 %394, 262144
  %396 = icmp ne i32 %395, 0
  br i1 %396, label %397, label %401

397:                                              ; preds = %391
  %398 = load ptr, ptr %13, align 8, !tbaa !5
  %399 = load ptr, ptr %14, align 8, !tbaa !5
  %400 = call ptr @sqlite3TriggersExist(ptr noundef %398, ptr noundef %399, i32 noundef 109, ptr noundef null, ptr noundef null)
  store ptr %400, ptr %47, align 8, !tbaa !5
  br label %401

401:                                              ; preds = %397, %391
  %402 = load ptr, ptr %47, align 8, !tbaa !5
  %403 = icmp ne ptr %402, null
  br i1 %403, label %409, label %404

404:                                              ; preds = %401
  %405 = load ptr, ptr %13, align 8, !tbaa !5
  %406 = load ptr, ptr %14, align 8, !tbaa !5
  %407 = call i32 @sqlite3FkRequired(ptr noundef %405, ptr noundef %406, ptr noundef null, i32 noundef 0)
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %417

409:                                              ; preds = %404, %401
  %410 = load ptr, ptr %13, align 8, !tbaa !5
  call void @sqlite3MultiWrite(ptr noundef %410)
  %411 = load ptr, ptr %13, align 8, !tbaa !5
  %412 = load ptr, ptr %14, align 8, !tbaa !5
  %413 = load ptr, ptr %47, align 8, !tbaa !5
  %414 = load i32, ptr %16, align 4, !tbaa !9
  %415 = load i32, ptr %17, align 4, !tbaa !9
  %416 = load i32, ptr %18, align 4, !tbaa !9
  call void @sqlite3GenerateRowDelete(ptr noundef %411, ptr noundef %412, ptr noundef %413, i32 noundef %414, i32 noundef %415, i32 noundef %416, i16 noundef signext 1, i8 noundef zeroext 0, i8 noundef zeroext 5, i8 noundef zeroext 1, i32 noundef -1)
  br label %429

417:                                              ; preds = %404
  %418 = load ptr, ptr %14, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.Table, ptr %418, i32 0, i32 2
  %420 = load ptr, ptr %419, align 8, !tbaa !47
  %421 = icmp ne ptr %420, null
  br i1 %421, label %422, label %428

422:                                              ; preds = %417
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  call void @sqlite3MultiWrite(ptr noundef %423)
  %424 = load ptr, ptr %13, align 8, !tbaa !5
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = load i32, ptr %16, align 4, !tbaa !9
  %427 = load i32, ptr %17, align 4, !tbaa !9
  call void @sqlite3GenerateRowIndexDelete(ptr noundef %424, ptr noundef %425, i32 noundef %426, i32 noundef %427, ptr noundef null, i32 noundef -1)
  br label %428

428:                                              ; preds = %422, %417
  br label %429

429:                                              ; preds = %428, %409
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 12, ptr %44, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  br label %434

430:                                              ; preds = %379
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = load i32, ptr %22, align 4, !tbaa !9
  %433 = call i32 @sqlite3VdbeGoto(ptr noundef %431, i32 noundef %432)
  br label %434

434:                                              ; preds = %430, %429, %387
  %435 = load ptr, ptr %25, align 8, !tbaa !5
  %436 = load i32, ptr %46, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %435, i32 noundef %436)
  %437 = load i32, ptr %36, align 4, !tbaa !9
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %444

439:                                              ; preds = %434
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = call i32 @sqlite3VdbeAddOp0(ptr noundef %440, i32 noundef 13)
  store i32 %441, ptr %37, align 4, !tbaa !9
  %442 = load ptr, ptr %25, align 8, !tbaa !5
  %443 = load i32, ptr %36, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %442, i32 noundef %443)
  br label %444

444:                                              ; preds = %439, %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  br label %445

445:                                              ; preds = %444, %313, %309
  store i32 0, ptr %30, align 4, !tbaa !9
  %446 = load ptr, ptr %14, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.Table, ptr %446, i32 0, i32 2
  %448 = load ptr, ptr %447, align 8, !tbaa !47
  store ptr %448, ptr %26, align 8, !tbaa !5
  br label %449

449:                                              ; preds = %879, %445
  %450 = load ptr, ptr %26, align 8, !tbaa !5
  %451 = icmp ne ptr %450, null
  br i1 %451, label %452, label %885

452:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %453 = load ptr, ptr %15, align 8, !tbaa !5
  %454 = load i32, ptr %30, align 4, !tbaa !9
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %453, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = icmp eq i32 %457, 0
  br i1 %458, label %459, label %460

459:                                              ; preds = %452
  store i32 15, ptr %44, align 4
  br label %876

460:                                              ; preds = %452
  %461 = load i8, ptr %39, align 1, !tbaa !11
  %462 = zext i8 %461 to i32
  %463 = icmp eq i32 %462, 0
  br i1 %463, label %464, label %469

464:                                              ; preds = %460
  %465 = load ptr, ptr %25, align 8, !tbaa !5
  %466 = load ptr, ptr %14, align 8, !tbaa !5
  %467 = load i32, ptr %18, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  call void @sqlite3TableAffinity(ptr noundef %465, ptr noundef %466, i32 noundef %468)
  store i8 1, ptr %39, align 1, !tbaa !11
  br label %469

469:                                              ; preds = %464, %460
  %470 = load i32, ptr %17, align 4, !tbaa !9
  %471 = load i32, ptr %30, align 4, !tbaa !9
  %472 = add nsw i32 %470, %471
  store i32 %472, ptr %50, align 4, !tbaa !9
  %473 = load ptr, ptr %25, align 8, !tbaa !5
  %474 = call i32 @sqlite3VdbeMakeLabel(ptr noundef %473)
  store i32 %474, ptr %51, align 4, !tbaa !9
  %475 = load ptr, ptr %26, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.Index, ptr %475, i32 0, i32 9
  %477 = load ptr, ptr %476, align 8, !tbaa !51
  %478 = icmp ne ptr %477, null
  br i1 %478, label %479, label %498

479:                                              ; preds = %469
  %480 = load ptr, ptr %25, align 8, !tbaa !5
  %481 = load ptr, ptr %15, align 8, !tbaa !5
  %482 = load i32, ptr %30, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds i32, ptr %481, i64 %483
  %485 = load i32, ptr %484, align 4, !tbaa !9
  %486 = call i32 @sqlite3VdbeAddOp2(ptr noundef %480, i32 noundef 80, i32 noundef 0, i32 noundef %485)
  %487 = load i32, ptr %18, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  %489 = load ptr, ptr %13, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.Parse, ptr %489, i32 0, i32 21
  store i32 %488, ptr %490, align 4, !tbaa !38
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.Index, ptr %492, i32 0, i32 9
  %494 = load ptr, ptr %493, align 8, !tbaa !51
  %495 = load i32, ptr %51, align 4, !tbaa !9
  call void @sqlite3ExprIfFalseDup(ptr noundef %491, ptr noundef %494, i32 noundef %495, i32 noundef 16)
  %496 = load ptr, ptr %13, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.Parse, ptr %496, i32 0, i32 21
  store i32 0, ptr %497, align 4, !tbaa !38
  br label %498

498:                                              ; preds = %479, %469
  %499 = load ptr, ptr %15, align 8, !tbaa !5
  %500 = load i32, ptr %30, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i32, ptr %499, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %48, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %573, %498
  %506 = load i32, ptr %29, align 4, !tbaa !9
  %507 = load ptr, ptr %26, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.Index, ptr %507, i32 0, i32 14
  %509 = load i16, ptr %508, align 8, !tbaa !52
  %510 = zext i16 %509 to i32
  %511 = icmp slt i32 %506, %510
  br i1 %511, label %512, label %576

512:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %513 = load ptr, ptr %26, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.Index, ptr %513, i32 0, i32 1
  %515 = load ptr, ptr %514, align 8, !tbaa !53
  %516 = load i32, ptr %29, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i16, ptr %515, i64 %517
  %519 = load i16, ptr %518, align 2, !tbaa !54
  %520 = sext i16 %519 to i32
  store i32 %520, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  %521 = load i32, ptr %52, align 4, !tbaa !9
  %522 = icmp eq i32 %521, -2
  br i1 %522, label %523, label %544

523:                                              ; preds = %512
  %524 = load i32, ptr %18, align 4, !tbaa !9
  %525 = add nsw i32 %524, 1
  %526 = load ptr, ptr %13, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.Parse, ptr %526, i32 0, i32 21
  store i32 %525, ptr %527, align 4, !tbaa !38
  %528 = load ptr, ptr %13, align 8, !tbaa !5
  %529 = load ptr, ptr %26, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.Index, ptr %529, i32 0, i32 10
  %531 = load ptr, ptr %530, align 8, !tbaa !55
  %532 = getelementptr inbounds %struct.ExprList, ptr %531, i32 0, i32 1
  %533 = load ptr, ptr %532, align 8, !tbaa !41
  %534 = load i32, ptr %29, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds %struct.ExprList_item, ptr %533, i64 %535
  %537 = getelementptr inbounds %struct.ExprList_item, ptr %536, i32 0, i32 0
  %538 = load ptr, ptr %537, align 8, !tbaa !42
  %539 = load i32, ptr %48, align 4, !tbaa !9
  %540 = load i32, ptr %29, align 4, !tbaa !9
  %541 = add nsw i32 %539, %540
  call void @sqlite3ExprCodeCopy(ptr noundef %528, ptr noundef %538, i32 noundef %541)
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.Parse, ptr %542, i32 0, i32 21
  store i32 0, ptr %543, align 4, !tbaa !38
  br label %572

544:                                              ; preds = %512
  %545 = load i32, ptr %52, align 4, !tbaa !9
  %546 = icmp eq i32 %545, -1
  br i1 %546, label %554, label %547

547:                                              ; preds = %544
  %548 = load i32, ptr %52, align 4, !tbaa !9
  %549 = load ptr, ptr %14, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.Table, ptr %549, i32 0, i32 10
  %551 = load i16, ptr %550, align 4, !tbaa !21
  %552 = sext i16 %551 to i32
  %553 = icmp eq i32 %548, %552
  br i1 %553, label %554, label %556

554:                                              ; preds = %547, %544
  %555 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %555, ptr %53, align 4, !tbaa !9
  br label %561

556:                                              ; preds = %547
  %557 = load i32, ptr %52, align 4, !tbaa !9
  %558 = load i32, ptr %18, align 4, !tbaa !9
  %559 = add nsw i32 %557, %558
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %53, align 4, !tbaa !9
  br label %561

561:                                              ; preds = %556, %554
  %562 = load ptr, ptr %25, align 8, !tbaa !5
  %563 = load i32, ptr %52, align 4, !tbaa !9
  %564 = icmp slt i32 %563, 0
  %565 = zext i1 %564 to i64
  %566 = select i1 %564, i32 87, i32 86
  %567 = load i32, ptr %53, align 4, !tbaa !9
  %568 = load i32, ptr %48, align 4, !tbaa !9
  %569 = load i32, ptr %29, align 4, !tbaa !9
  %570 = add nsw i32 %568, %569
  %571 = call i32 @sqlite3VdbeAddOp2(ptr noundef %562, i32 noundef %566, i32 noundef %567, i32 noundef %570)
  br label %572

572:                                              ; preds = %561, %523
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  br label %573

573:                                              ; preds = %572
  %574 = load i32, ptr %29, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %29, align 4, !tbaa !9
  br label %505, !llvm.loop !56

576:                                              ; preds = %505
  %577 = load ptr, ptr %25, align 8, !tbaa !5
  %578 = load i32, ptr %48, align 4, !tbaa !9
  %579 = load ptr, ptr %26, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.Index, ptr %579, i32 0, i32 14
  %581 = load i16, ptr %580, align 8, !tbaa !52
  %582 = zext i16 %581 to i32
  %583 = load ptr, ptr %15, align 8, !tbaa !5
  %584 = load i32, ptr %30, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds i32, ptr %583, i64 %585
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = call i32 @sqlite3VdbeAddOp3(ptr noundef %577, i32 noundef 100, i32 noundef %578, i32 noundef %582, i32 noundef %587)
  %589 = load i8, ptr %38, align 1, !tbaa !11
  %590 = zext i8 %589 to i32
  %591 = icmp ne i32 %590, 0
  br i1 %591, label %592, label %603

592:                                              ; preds = %576
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = load ptr, ptr %26, align 8, !tbaa !5
  %595 = icmp eq ptr %593, %594
  br i1 %595, label %596, label %603

596:                                              ; preds = %592
  %597 = load i8, ptr %20, align 1, !tbaa !11
  %598 = zext i8 %597 to i32
  %599 = icmp eq i32 %598, 0
  br i1 %599, label %600, label %603

600:                                              ; preds = %596
  %601 = load ptr, ptr %25, align 8, !tbaa !5
  %602 = load i32, ptr %51, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %601, i32 noundef %602)
  store i32 15, ptr %44, align 4
  br label %876

603:                                              ; preds = %596, %592, %576
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.Index, ptr %604, i32 0, i32 15
  %606 = load i8, ptr %605, align 2, !tbaa !48
  %607 = zext i8 %606 to i32
  store i32 %607, ptr %32, align 4, !tbaa !9
  %608 = load i32, ptr %32, align 4, !tbaa !9
  %609 = icmp eq i32 %608, 0
  br i1 %609, label %610, label %613

610:                                              ; preds = %603
  %611 = load ptr, ptr %25, align 8, !tbaa !5
  %612 = load i32, ptr %51, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %611, i32 noundef %612)
  store i32 15, ptr %44, align 4
  br label %876

613:                                              ; preds = %603
  %614 = load i8, ptr %21, align 1, !tbaa !11
  %615 = zext i8 %614 to i32
  %616 = icmp ne i32 %615, 10
  br i1 %616, label %617, label %620

617:                                              ; preds = %613
  %618 = load i8, ptr %21, align 1, !tbaa !11
  %619 = zext i8 %618 to i32
  store i32 %619, ptr %32, align 4, !tbaa !9
  br label %625

620:                                              ; preds = %613
  %621 = load i32, ptr %32, align 4, !tbaa !9
  %622 = icmp eq i32 %621, 10
  br i1 %622, label %623, label %624

623:                                              ; preds = %620
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %623, %620
  br label %625

625:                                              ; preds = %624, %617
  %626 = load i32, ptr %30, align 4, !tbaa !9
  %627 = icmp eq i32 %626, 0
  br i1 %627, label %628, label %669

628:                                              ; preds = %625
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.Index, ptr %629, i32 0, i32 5
  %631 = load ptr, ptr %630, align 8, !tbaa !49
  %632 = icmp eq ptr %631, null
  br i1 %632, label %633, label %669

633:                                              ; preds = %628
  %634 = load ptr, ptr %27, align 8, !tbaa !5
  %635 = load ptr, ptr %26, align 8, !tbaa !5
  %636 = icmp eq ptr %634, %635
  br i1 %636, label %637, label %669

637:                                              ; preds = %633
  %638 = load i32, ptr %32, align 4, !tbaa !9
  %639 = icmp eq i32 %638, 5
  br i1 %639, label %640, label %669

640:                                              ; preds = %637
  %641 = load ptr, ptr %28, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.sqlite3, ptr %641, i32 0, i32 6
  %643 = load i32, ptr %642, align 4, !tbaa !31
  %644 = and i32 %643, 262144
  %645 = icmp eq i32 0, %644
  br i1 %645, label %651, label %646

646:                                              ; preds = %640
  %647 = load ptr, ptr %13, align 8, !tbaa !5
  %648 = load ptr, ptr %14, align 8, !tbaa !5
  %649 = call ptr @sqlite3TriggersExist(ptr noundef %647, ptr noundef %648, i32 noundef 109, ptr noundef null, ptr noundef null)
  %650 = icmp eq ptr null, %649
  br i1 %650, label %651, label %669

651:                                              ; preds = %646, %640
  %652 = load ptr, ptr %28, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.sqlite3, ptr %652, i32 0, i32 6
  %654 = load i32, ptr %653, align 4, !tbaa !31
  %655 = and i32 %654, 524288
  %656 = icmp eq i32 0, %655
  br i1 %656, label %666, label %657

657:                                              ; preds = %651
  %658 = load ptr, ptr %14, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.Table, ptr %658, i32 0, i32 4
  %660 = load ptr, ptr %659, align 8, !tbaa !57
  %661 = icmp eq ptr null, %660
  br i1 %661, label %662, label %669

662:                                              ; preds = %657
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = call ptr @sqlite3FkReferences(ptr noundef %663)
  %665 = icmp eq ptr null, %664
  br i1 %665, label %666, label %669

666:                                              ; preds = %662, %651
  %667 = load ptr, ptr %25, align 8, !tbaa !5
  %668 = load i32, ptr %51, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %667, i32 noundef %668)
  store i32 15, ptr %44, align 4
  br label %876

669:                                              ; preds = %662, %657, %646, %637, %633, %628, %625
  %670 = load ptr, ptr %25, align 8, !tbaa !5
  %671 = load i32, ptr %50, align 4, !tbaa !9
  %672 = load i32, ptr %51, align 4, !tbaa !9
  %673 = load i32, ptr %48, align 4, !tbaa !9
  %674 = load ptr, ptr %26, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.Index, ptr %674, i32 0, i32 13
  %676 = load i16, ptr %675, align 2, !tbaa !19
  %677 = zext i16 %676 to i32
  %678 = call i32 @sqlite3VdbeAddOp4Int(ptr noundef %670, i32 noundef 29, i32 noundef %671, i32 noundef %672, i32 noundef %673, i32 noundef %677)
  %679 = load ptr, ptr %26, align 8, !tbaa !5
  %680 = load ptr, ptr %27, align 8, !tbaa !5
  %681 = icmp eq ptr %679, %680
  br i1 %681, label %682, label %684

682:                                              ; preds = %669
  %683 = load i32, ptr %48, align 4, !tbaa !9
  br label %688

684:                                              ; preds = %669
  %685 = load ptr, ptr %13, align 8, !tbaa !5
  %686 = load i32, ptr %35, align 4, !tbaa !9
  %687 = call i32 @sqlite3GetTempRange(ptr noundef %685, i32 noundef %686)
  br label %688

688:                                              ; preds = %684, %682
  %689 = phi i32 [ %683, %682 ], [ %687, %684 ]
  store i32 %689, ptr %49, align 4, !tbaa !9
  %690 = load i8, ptr %38, align 1, !tbaa !11
  %691 = zext i8 %690 to i32
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %696, label %693

693:                                              ; preds = %688
  %694 = load i32, ptr %32, align 4, !tbaa !9
  %695 = icmp eq i32 %694, 5
  br i1 %695, label %696, label %828

696:                                              ; preds = %693, %688
  %697 = load ptr, ptr %14, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.Table, ptr %697, i32 0, i32 9
  %699 = load i32, ptr %698, align 8, !tbaa !18
  %700 = and i32 %699, 32
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %702, label %717

702:                                              ; preds = %696
  %703 = load ptr, ptr %25, align 8, !tbaa !5
  %704 = load i32, ptr %50, align 4, !tbaa !9
  %705 = load i32, ptr %49, align 4, !tbaa !9
  %706 = call i32 @sqlite3VdbeAddOp2(ptr noundef %703, i32 noundef 129, i32 noundef %704, i32 noundef %705)
  %707 = load i8, ptr %38, align 1, !tbaa !11
  %708 = icmp ne i8 %707, 0
  br i1 %708, label %709, label %716

709:                                              ; preds = %702
  %710 = load ptr, ptr %25, align 8, !tbaa !5
  %711 = load i32, ptr %49, align 4, !tbaa !9
  %712 = load i32, ptr %51, align 4, !tbaa !9
  %713 = load i32, ptr %19, align 4, !tbaa !9
  %714 = call i32 @sqlite3VdbeAddOp3(ptr noundef %710, i32 noundef 37, i32 noundef %711, i32 noundef %712, i32 noundef %713)
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %715, i16 noundef zeroext 144)
  br label %716

716:                                              ; preds = %709, %702
  br label %827

717:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  %718 = load ptr, ptr %26, align 8, !tbaa !5
  %719 = load ptr, ptr %27, align 8, !tbaa !5
  %720 = icmp ne ptr %718, %719
  br i1 %720, label %721, label %751

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

722:                                              ; preds = %747, %721
  %723 = load i32, ptr %29, align 4, !tbaa !9
  %724 = load ptr, ptr %27, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.Index, ptr %724, i32 0, i32 13
  %726 = load i16, ptr %725, align 2, !tbaa !19
  %727 = zext i16 %726 to i32
  %728 = icmp slt i32 %723, %727
  br i1 %728, label %729, label %750

729:                                              ; preds = %722
  %730 = load ptr, ptr %26, align 8, !tbaa !5
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.Index, ptr %731, i32 0, i32 1
  %733 = load ptr, ptr %732, align 8, !tbaa !53
  %734 = load i32, ptr %29, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i16, ptr %733, i64 %735
  %737 = load i16, ptr %736, align 2, !tbaa !54
  %738 = call signext i16 @sqlite3ColumnOfIndex(ptr noundef %730, i16 noundef signext %737)
  %739 = sext i16 %738 to i32
  store i32 %739, ptr %54, align 4, !tbaa !9
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = load i32, ptr %50, align 4, !tbaa !9
  %742 = load i32, ptr %54, align 4, !tbaa !9
  %743 = load i32, ptr %49, align 4, !tbaa !9
  %744 = load i32, ptr %29, align 4, !tbaa !9
  %745 = add nsw i32 %743, %744
  %746 = call i32 @sqlite3VdbeAddOp3(ptr noundef %740, i32 noundef 98, i32 noundef %741, i32 noundef %742, i32 noundef %745)
  br label %747

747:                                              ; preds = %729
  %748 = load i32, ptr %29, align 4, !tbaa !9
  %749 = add nsw i32 %748, 1
  store i32 %749, ptr %29, align 4, !tbaa !9
  br label %722, !llvm.loop !58

750:                                              ; preds = %722
  br label %751

751:                                              ; preds = %750, %717
  %752 = load i8, ptr %38, align 1, !tbaa !11
  %753 = icmp ne i8 %752, 0
  br i1 %753, label %754, label %826

754:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  %755 = load ptr, ptr %25, align 8, !tbaa !5
  %756 = call i32 @sqlite3VdbeCurrentAddr(ptr noundef %755)
  %757 = load ptr, ptr %27, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.Index, ptr %757, i32 0, i32 13
  %759 = load i16, ptr %758, align 2, !tbaa !19
  %760 = zext i16 %759 to i32
  %761 = add nsw i32 %756, %760
  store i32 %761, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  store i32 36, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  %762 = load ptr, ptr %26, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.Index, ptr %762, i32 0, i32 16
  %764 = load i8, ptr %763, align 1
  %765 = and i8 %764, 3
  %766 = zext i8 %765 to i32
  %767 = icmp eq i32 %766, 2
  br i1 %767, label %768, label %770

768:                                              ; preds = %754
  %769 = load i32, ptr %48, align 4, !tbaa !9
  br label %772

770:                                              ; preds = %754
  %771 = load i32, ptr %49, align 4, !tbaa !9
  br label %772

772:                                              ; preds = %770, %768
  %773 = phi i32 [ %769, %768 ], [ %771, %770 ]
  store i32 %773, ptr %57, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %774

774:                                              ; preds = %822, %772
  %775 = load i32, ptr %29, align 4, !tbaa !9
  %776 = load ptr, ptr %27, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.Index, ptr %776, i32 0, i32 13
  %778 = load i16, ptr %777, align 2, !tbaa !19
  %779 = zext i16 %778 to i32
  %780 = icmp slt i32 %775, %779
  br i1 %780, label %781, label %825

781:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  %782 = load ptr, ptr %13, align 8, !tbaa !5
  %783 = load ptr, ptr %27, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.Index, ptr %783, i32 0, i32 8
  %785 = load ptr, ptr %784, align 8, !tbaa !59
  %786 = load i32, ptr %29, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds ptr, ptr %785, i64 %787
  %789 = load ptr, ptr %788, align 8, !tbaa !5
  %790 = call ptr @sqlite3LocateCollSeq(ptr noundef %782, ptr noundef %789)
  store ptr %790, ptr %58, align 8, !tbaa !5
  %791 = load ptr, ptr %27, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.Index, ptr %791, i32 0, i32 1
  %793 = load ptr, ptr %792, align 8, !tbaa !53
  %794 = load i32, ptr %29, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i16, ptr %793, i64 %795
  %797 = load i16, ptr %796, align 2, !tbaa !54
  %798 = sext i16 %797 to i32
  store i32 %798, ptr %54, align 4, !tbaa !9
  %799 = load i32, ptr %29, align 4, !tbaa !9
  %800 = load ptr, ptr %27, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.Index, ptr %800, i32 0, i32 13
  %802 = load i16, ptr %801, align 2, !tbaa !19
  %803 = zext i16 %802 to i32
  %804 = sub nsw i32 %803, 1
  %805 = icmp eq i32 %799, %804
  br i1 %805, label %806, label %808

806:                                              ; preds = %781
  %807 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %807, ptr %55, align 4, !tbaa !9
  store i32 37, ptr %56, align 4, !tbaa !9
  br label %808

808:                                              ; preds = %806, %781
  %809 = load ptr, ptr %25, align 8, !tbaa !5
  %810 = load i32, ptr %56, align 4, !tbaa !9
  %811 = load i32, ptr %19, align 4, !tbaa !9
  %812 = add nsw i32 %811, 1
  %813 = load i32, ptr %54, align 4, !tbaa !9
  %814 = add nsw i32 %812, %813
  %815 = load i32, ptr %55, align 4, !tbaa !9
  %816 = load i32, ptr %57, align 4, !tbaa !9
  %817 = load i32, ptr %29, align 4, !tbaa !9
  %818 = add nsw i32 %816, %817
  %819 = load ptr, ptr %58, align 8, !tbaa !5
  %820 = call i32 @sqlite3VdbeAddOp4(ptr noundef %809, i32 noundef %810, i32 noundef %814, i32 noundef %815, i32 noundef %818, ptr noundef %819, i32 noundef -3)
  %821 = load ptr, ptr %25, align 8, !tbaa !5
  call void @sqlite3VdbeChangeP5(ptr noundef %821, i16 noundef zeroext 144)
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  br label %822

822:                                              ; preds = %808
  %823 = load i32, ptr %29, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %29, align 4, !tbaa !9
  br label %774, !llvm.loop !60

825:                                              ; preds = %774
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  br label %826

826:                                              ; preds = %825, %751
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  br label %827

827:                                              ; preds = %826, %716
  br label %828

828:                                              ; preds = %827, %693
  %829 = load i32, ptr %32, align 4, !tbaa !9
  switch i32 %829, label %838 [
    i32 1, label %830
    i32 2, label %830
    i32 3, label %830
    i32 4, label %834
  ]

830:                                              ; preds = %828, %828, %828
  %831 = load ptr, ptr %13, align 8, !tbaa !5
  %832 = load i32, ptr %32, align 4, !tbaa !9
  %833 = load ptr, ptr %26, align 8, !tbaa !5
  call void @sqlite3UniqueConstraint(ptr noundef %831, i32 noundef %832, ptr noundef %833)
  br label %865

834:                                              ; preds = %828
  %835 = load ptr, ptr %25, align 8, !tbaa !5
  %836 = load i32, ptr %22, align 4, !tbaa !9
  %837 = call i32 @sqlite3VdbeGoto(ptr noundef %835, i32 noundef %836)
  br label %865

838:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  store ptr null, ptr %59, align 8, !tbaa !5
  %839 = load ptr, ptr %13, align 8, !tbaa !5
  call void @sqlite3MultiWrite(ptr noundef %839)
  %840 = load ptr, ptr %28, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.sqlite3, ptr %840, i32 0, i32 6
  %842 = load i32, ptr %841, align 4, !tbaa !31
  %843 = and i32 %842, 262144
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %849

845:                                              ; preds = %838
  %846 = load ptr, ptr %13, align 8, !tbaa !5
  %847 = load ptr, ptr %14, align 8, !tbaa !5
  %848 = call ptr @sqlite3TriggersExist(ptr noundef %846, ptr noundef %847, i32 noundef 109, ptr noundef null, ptr noundef null)
  store ptr %848, ptr %59, align 8, !tbaa !5
  br label %849

849:                                              ; preds = %845, %838
  %850 = load ptr, ptr %13, align 8, !tbaa !5
  %851 = load ptr, ptr %14, align 8, !tbaa !5
  %852 = load ptr, ptr %59, align 8, !tbaa !5
  %853 = load i32, ptr %16, align 4, !tbaa !9
  %854 = load i32, ptr %17, align 4, !tbaa !9
  %855 = load i32, ptr %49, align 4, !tbaa !9
  %856 = load i32, ptr %35, align 4, !tbaa !9
  %857 = trunc i32 %856 to i16
  %858 = load ptr, ptr %26, align 8, !tbaa !5
  %859 = load ptr, ptr %27, align 8, !tbaa !5
  %860 = icmp eq ptr %858, %859
  %861 = zext i1 %860 to i64
  %862 = select i1 %860, i32 1, i32 0
  %863 = trunc i32 %862 to i8
  %864 = load i32, ptr %50, align 4, !tbaa !9
  call void @sqlite3GenerateRowDelete(ptr noundef %850, ptr noundef %851, ptr noundef %852, i32 noundef %853, i32 noundef %854, i32 noundef %855, i16 noundef signext %857, i8 noundef zeroext 0, i8 noundef zeroext 5, i8 noundef zeroext %863, i32 noundef %864)
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 25, ptr %44, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  br label %865

865:                                              ; preds = %849, %834, %830
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load i32, ptr %51, align 4, !tbaa !9
  call void @sqlite3VdbeResolveLabel(ptr noundef %866, i32 noundef %867)
  %868 = load i32, ptr %49, align 4, !tbaa !9
  %869 = load i32, ptr %48, align 4, !tbaa !9
  %870 = icmp ne i32 %868, %869
  br i1 %870, label %871, label %875

871:                                              ; preds = %865
  %872 = load ptr, ptr %13, align 8, !tbaa !5
  %873 = load i32, ptr %49, align 4, !tbaa !9
  %874 = load i32, ptr %35, align 4, !tbaa !9
  call void @sqlite3ReleaseTempRange(ptr noundef %872, i32 noundef %873, i32 noundef %874)
  br label %875

875:                                              ; preds = %871, %865
  store i32 0, ptr %44, align 4
  br label %876

876:                                              ; preds = %875, %666, %610, %600, %459
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  %877 = load i32, ptr %44, align 4
  switch i32 %877, label %898 [
    i32 0, label %878
    i32 15, label %879
  ]

878:                                              ; preds = %876
  br label %879

879:                                              ; preds = %878, %876
  %880 = load ptr, ptr %26, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.Index, ptr %880, i32 0, i32 5
  %882 = load ptr, ptr %881, align 8, !tbaa !49
  store ptr %882, ptr %26, align 8, !tbaa !5
  %883 = load i32, ptr %30, align 4, !tbaa !9
  %884 = add nsw i32 %883, 1
  store i32 %884, ptr %30, align 4, !tbaa !9
  br label %449, !llvm.loop !61

885:                                              ; preds = %449
  %886 = load i32, ptr %36, align 4, !tbaa !9
  %887 = icmp ne i32 %886, 0
  br i1 %887, label %888, label %895

888:                                              ; preds = %885
  %889 = load ptr, ptr %25, align 8, !tbaa !5
  %890 = load i32, ptr %36, align 4, !tbaa !9
  %891 = add nsw i32 %890, 1
  %892 = call i32 @sqlite3VdbeGoto(ptr noundef %889, i32 noundef %891)
  %893 = load ptr, ptr %25, align 8, !tbaa !5
  %894 = load i32, ptr %37, align 4, !tbaa !9
  call void @sqlite3VdbeJumpHere(ptr noundef %893, i32 noundef %894)
  br label %895

895:                                              ; preds = %888, %885
  %896 = load i32, ptr %34, align 4, !tbaa !9
  %897 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 %896, ptr %897, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  ret void

898:                                              ; preds = %876, %302
  unreachable
}

declare ptr @sqlite3FkReferences(ptr noundef) #1

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

declare ptr @sqlite3MPrintf(ptr noundef, ptr noundef, ...) #1

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

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

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

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

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

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

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

declare void @sqlite3MultiWrite(ptr noundef) #1

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

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

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

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

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

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

declare void @sqlite3UniqueConstraint(ptr noundef, i32 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 = { 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 = !{!17, !15, i64 70}
!17 = !{!"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}
!18 = !{!17, !10, i64 64}
!19 = !{!20, !15, i64 94}
!20 = !{!"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}
!21 = !{!17, !15, i64 68}
!22 = !{!17, !6, i64 8}
!23 = !{!24, !7, i64 24}
!24 = !{!"Column", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!25 = !{!24, !6, i64 8}
!26 = !{!17, !6, i64 0}
!27 = !{!24, !6, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!17, !6, i64 48}
!31 = !{!32, !10, i64 44}
!32 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !33, i64 48, !33, 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, !34, 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, !35, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !36, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !36, i64 488, !36, i64 512, !37, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !33, i64 648, !33, i64 656, !6, i64 664}
!33 = !{!"long long", !7, i64 0}
!34 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!35 = !{!"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}
!36 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!37 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!38 = !{!13, !10, i64 68}
!39 = !{!40, !10, i64 0}
!40 = !{!"ExprList", !10, i64 0, !6, i64 8}
!41 = !{!40, !6, i64 8}
!42 = !{!43, !6, i64 0}
!43 = !{!"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}
!44 = !{!43, !6, i64 8}
!45 = distinct !{!45, !29}
!46 = !{!17, !7, i64 76}
!47 = !{!17, !6, i64 16}
!48 = !{!20, !7, i64 98}
!49 = !{!20, !6, i64 40}
!50 = distinct !{!50, !29}
!51 = !{!20, !6, i64 72}
!52 = !{!20, !15, i64 96}
!53 = !{!20, !6, i64 8}
!54 = !{!15, !15, i64 0}
!55 = !{!20, !6, i64 80}
!56 = distinct !{!56, !29}
!57 = !{!17, !6, i64 32}
!58 = distinct !{!58, !29}
!59 = !{!20, !6, i64 64}
!60 = distinct !{!60, !29}
!61 = distinct !{!61, !29}


; 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.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.4 = external hidden unnamed_addr constant [6 x i8], align 1

declare ptr @sqlite3GetVdbe(ptr noundef) local_unnamed_addr #0

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

declare ptr @sqlite3PrimaryKeyIndex(ptr noundef) local_unnamed_addr #0

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

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

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

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

declare i32 @sqlite3VdbeCurrentAddr(ptr noundef) local_unnamed_addr #0

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

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

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

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

declare i32 @sqlite3VdbeMakeLabel(ptr noundef) local_unnamed_addr #0

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

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

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

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

declare void @sqlite3MayAbort(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @sqlite3GenerateConstraintChecks(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i8 noundef zeroext %7, i8 noundef zeroext %8, i32 noundef %9, ptr nocapture noundef writeonly %10, ptr noundef %11) local_unnamed_addr #1 {
  %13 = icmp ne i32 %6, 0
  %14 = load ptr, ptr %0, align 8, !tbaa !5
  %15 = tail call ptr @sqlite3GetVdbe(ptr noundef nonnull %0) #2
  %16 = getelementptr inbounds i8, ptr %1, i64 70
  %17 = load i16, ptr %16, align 2, !tbaa !13
  %wide.trip.count = sext i16 %17 to i64
  %18 = getelementptr inbounds i8, ptr %1, i64 64
  %19 = load i32, ptr %18, align 8, !tbaa !15
  %20 = and i32 %19, 32
  %21 = icmp eq i32 %20, 0
  br i1 %21, label %27, label %22

22:                                               ; preds = %12
  %23 = tail call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %1) #2
  %24 = getelementptr inbounds i8, ptr %23, i64 94
  %25 = load i16, ptr %24, align 2, !tbaa !16
  %26 = zext i16 %25 to i32
  br label %27

27:                                               ; preds = %12, %22
  %.0349 = phi i32 [ %26, %22 ], [ 1, %12 ]
  %.0330 = phi ptr [ %23, %22 ], [ null, %12 ]
  %28 = icmp sgt i16 %17, 0
  br i1 %28, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %27
  %29 = getelementptr inbounds i8, ptr %1, i64 68
  %.not391 = icmp eq ptr %11, null
  %30 = getelementptr inbounds i8, ptr %1, i64 8
  %.not392 = icmp eq i8 %8, 10
  %31 = add nsw i32 %5, 1
  br label %32

32:                                               ; preds = %.lr.ph, %76
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %76 ]
  %33 = load i16, ptr %29, align 4, !tbaa !18
  %34 = sext i16 %33 to i64
  %35 = and i64 %34, 4294967295
  %36 = icmp eq i64 %indvars.iv, %35
  br i1 %36, label %76, label %37

37:                                               ; preds = %32
  br i1 %.not391, label %42, label %38

38:                                               ; preds = %37
  %39 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv
  %40 = load i32, ptr %39, align 4, !tbaa !19
  %41 = icmp slt i32 %40, 0
  br i1 %41, label %76, label %42

42:                                               ; preds = %38, %37
  %43 = load ptr, ptr %30, align 8, !tbaa !20
  %44 = getelementptr inbounds %struct.Column, ptr %43, i64 %indvars.iv, i32 3
  %45 = load i8, ptr %44, align 8, !tbaa !21
  %46 = icmp eq i8 %45, 0
  br i1 %46, label %76, label %47

47:                                               ; preds = %42
  %48 = icmp eq i8 %45, 10
  %narrow393 = select i1 %48, i8 2, i8 %45
  %.0339.in = select i1 %.not392, i8 %narrow393, i8 %8
  %.0339 = zext i8 %.0339.in to i32
  %49 = icmp eq i8 %.0339.in, 5
  br i1 %49, label %50, label %54

50:                                               ; preds = %47
  %51 = getelementptr inbounds %struct.Column, ptr %43, i64 %indvars.iv, i32 1
  %52 = load ptr, ptr %51, align 8, !tbaa !23
  %53 = icmp eq ptr %52, null
  %spec.select = select i1 %53, i32 2, i32 5
  br label %54

54:                                               ; preds = %50, %47
  %.1340 = phi i32 [ %.0339, %47 ], [ %spec.select, %50 ]
  %trunc = trunc nuw i32 %.1340 to i8
  switch i8 %trunc, label %69 [
    i8 2, label %55
    i8 1, label %56
    i8 3, label %56
    i8 4, label %65
  ]

55:                                               ; preds = %54
  tail call void @sqlite3MayAbort(ptr noundef nonnull %0) #2
  %.pre = load ptr, ptr %30, align 8, !tbaa !20
  br label %56

56:                                               ; preds = %55, %54, %54
  %57 = phi ptr [ %.pre, %55 ], [ %43, %54 ], [ %43, %54 ]
  %58 = load ptr, ptr %1, align 8, !tbaa !24
  %59 = getelementptr inbounds %struct.Column, ptr %57, i64 %indvars.iv
  %60 = load ptr, ptr %59, align 8, !tbaa !25
  %61 = tail call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %14, ptr noundef nonnull @.str.4, ptr noundef %58, ptr noundef %60) #2
  %62 = trunc i64 %indvars.iv to i32
  %63 = add i32 %31, %62
  %64 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 75, i32 noundef 1299, i32 noundef %.1340, i32 noundef %63) #2
  tail call void @sqlite3VdbeAppendP4(ptr noundef %15, ptr noundef %61, i32 noundef -1) #2
  tail call void @sqlite3VdbeChangeP5(ptr noundef %15, i16 noundef zeroext 1) #2
  br label %76

65:                                               ; preds = %54
  %66 = trunc i64 %indvars.iv to i32
  %67 = add i32 %31, %66
  %68 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %15, i32 noundef 34, i32 noundef %67, i32 noundef %9) #2
  br label %76

69:                                               ; preds = %54
  %70 = trunc i64 %indvars.iv to i32
  %71 = add i32 %31, %70
  %72 = tail call i32 @sqlite3VdbeAddOp1(ptr noundef %15, i32 noundef 35, i32 noundef %71) #2
  %73 = load ptr, ptr %30, align 8, !tbaa !20
  %74 = getelementptr inbounds %struct.Column, ptr %73, i64 %indvars.iv, i32 1
  %75 = load ptr, ptr %74, align 8, !tbaa !23
  tail call void @sqlite3ExprCode(ptr noundef nonnull %0, ptr noundef %75, i32 noundef %71) #2
  tail call void @sqlite3VdbeJumpHere(ptr noundef %15, i32 noundef %72) #2
  br label %76

76:                                               ; preds = %56, %65, %69, %42, %38, %32
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %32, !llvm.loop !26

._crit_edge:                                      ; preds = %76, %27
  %77 = getelementptr inbounds i8, ptr %1, i64 48
  %78 = load ptr, ptr %77, align 8, !tbaa !28
  %.not = icmp eq ptr %78, null
  br i1 %.not, label %.loopexit402, label %79

79:                                               ; preds = %._crit_edge
  %80 = getelementptr inbounds i8, ptr %14, i64 44
  %81 = load i32, ptr %80, align 4, !tbaa !29
  %82 = and i32 %81, 8192
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %84, label %.loopexit402

84:                                               ; preds = %79
  %85 = add nsw i32 %5, 1
  %86 = getelementptr inbounds i8, ptr %0, i64 68
  store i32 %85, ptr %86, align 4, !tbaa !36
  %87 = load i32, ptr %78, align 8, !tbaa !37
  %88 = icmp sgt i32 %87, 0
  br i1 %88, label %.lr.ph407, label %.loopexit402

.lr.ph407:                                        ; preds = %84
  %.not372 = icmp eq i8 %8, 10
  %narrow = select i1 %.not372, i8 2, i8 %8
  %89 = zext i8 %narrow to i32
  %90 = getelementptr inbounds i8, ptr %78, i64 8
  %.not389 = icmp eq ptr %11, null
  %91 = zext i8 %7 to i32
  br label %92

92:                                               ; preds = %.lr.ph407, %113
  %indvars.iv441 = phi i64 [ 0, %.lr.ph407 ], [ %indvars.iv.next442, %113 ]
  %.2341404 = phi i32 [ %89, %.lr.ph407 ], [ %.4343, %113 ]
  %93 = load ptr, ptr %90, align 8, !tbaa !39
  %94 = getelementptr inbounds %struct.ExprList_item, ptr %93, i64 %indvars.iv441
  %95 = load ptr, ptr %94, align 8, !tbaa !40
  br i1 %.not389, label %98, label %96

96:                                               ; preds = %92
  %97 = tail call i32 @checkConstraintUnchanged(ptr noundef %95, ptr noundef nonnull %11, i32 noundef %91)
  %.not390 = icmp eq i32 %97, 0
  br i1 %.not390, label %98, label %113

98:                                               ; preds = %96, %92
  %99 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %15) #2
  tail call void @sqlite3ExprIfTrue(ptr noundef nonnull %0, ptr noundef %95, i32 noundef %99, i32 noundef 16) #2
  %100 = icmp eq i32 %.2341404, 4
  br i1 %100, label %101, label %103

101:                                              ; preds = %98
  %102 = tail call i32 @sqlite3VdbeGoto(ptr noundef %15, i32 noundef %9) #2
  br label %112

103:                                              ; preds = %98
  %104 = load ptr, ptr %90, align 8, !tbaa !39
  %105 = getelementptr inbounds %struct.ExprList_item, ptr %104, i64 %indvars.iv441, i32 1
  %106 = load ptr, ptr %105, align 8, !tbaa !42
  %107 = icmp eq ptr %106, null
  br i1 %107, label %108, label %110

108:                                              ; preds = %103
  %109 = load ptr, ptr %1, align 8, !tbaa !24
  br label %110

110:                                              ; preds = %108, %103
  %.0353 = phi ptr [ %109, %108 ], [ %106, %103 ]
  %111 = icmp eq i32 %.2341404, 5
  %spec.store.select1 = select i1 %111, i32 2, i32 %.2341404
  tail call void @sqlite3HaltConstraint(ptr noundef nonnull %0, i32 noundef 275, i32 noundef %spec.store.select1, ptr noundef %.0353, i8 noundef signext 0, i8 noundef zeroext 3) #2
  br label %112

112:                                              ; preds = %110, %101
  %.3342 = phi i32 [ 4, %101 ], [ %spec.store.select1, %110 ]
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %99) #2
  br label %113

113:                                              ; preds = %96, %112
  %.4343 = phi i32 [ %.3342, %112 ], [ %.2341404, %96 ]
  %indvars.iv.next442 = add nuw nsw i64 %indvars.iv441, 1
  %114 = load i32, ptr %78, align 8, !tbaa !37
  %115 = sext i32 %114 to i64
  %116 = icmp slt i64 %indvars.iv.next442, %115
  br i1 %116, label %92, label %.loopexit402, !llvm.loop !43

.loopexit402:                                     ; preds = %113, %84, %79, %._crit_edge
  %117 = icmp ne i8 %7, 0
  %118 = icmp eq ptr %.0330, null
  %or.cond = and i1 %117, %118
  br i1 %or.cond, label %119, label %160

119:                                              ; preds = %.loopexit402
  %120 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %15) #2
  %.not373 = icmp eq i8 %8, 10
  br i1 %.not373, label %121, label %125

121:                                              ; preds = %119
  %122 = getelementptr inbounds i8, ptr %1, i64 76
  %123 = load i8, ptr %122, align 4, !tbaa !44
  %124 = icmp eq i8 %123, 10
  %narrow374 = select i1 %124, i8 2, i8 %123
  br label %125

125:                                              ; preds = %119, %121
  %.5.in = phi i8 [ %narrow374, %121 ], [ %8, %119 ]
  br i1 %13, label %126, label %128

126:                                              ; preds = %125
  %127 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 37, i32 noundef %5, i32 noundef %120, i32 noundef %6) #2
  tail call void @sqlite3VdbeChangeP5(ptr noundef %15, i16 noundef zeroext 144) #2
  br label %128

128:                                              ; preds = %126, %125
  %129 = icmp eq i8 %.5.in, 5
  %130 = icmp ne i8 %8, 5
  %or.cond6 = and i1 %130, %129
  br i1 %or.cond6, label %131, label %.loopexit401

131:                                              ; preds = %128
  %132 = getelementptr inbounds i8, ptr %1, i64 16
  %.0329408 = load ptr, ptr %132, align 8, !tbaa !45
  %.not375409 = icmp eq ptr %.0329408, null
  br i1 %.not375409, label %.loopexit401.thread, label %.lr.ph412

.loopexit401.thread:                              ; preds = %131
  %133 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 33, i32 noundef %3, i32 noundef %120, i32 noundef %5) #2
  br label %143

134:                                              ; preds = %.lr.ph412
  %135 = getelementptr inbounds i8, ptr %.0329410, i64 40
  %.0329 = load ptr, ptr %135, align 8, !tbaa !45
  %.not375 = icmp eq ptr %.0329, null
  br i1 %.not375, label %.loopexit401, label %.lr.ph412, !llvm.loop !46

.lr.ph412:                                        ; preds = %131, %134
  %.0329410 = phi ptr [ %.0329, %134 ], [ %.0329408, %131 ]
  %136 = getelementptr inbounds i8, ptr %.0329410, i64 98
  %137 = load i8, ptr %136, align 2, !tbaa !47
  %.off = add i8 %137, -3
  %switch = icmp ult i8 %.off, 2
  br i1 %switch, label %138, label %134

138:                                              ; preds = %.lr.ph412
  %139 = tail call i32 @sqlite3VdbeAddOp0(ptr noundef %15, i32 noundef 13) #2
  br label %.loopexit401

.loopexit401:                                     ; preds = %134, %138, %128
  %.0351 = phi i32 [ %139, %138 ], [ 0, %128 ], [ 0, %134 ]
  %140 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 33, i32 noundef %3, i32 noundef %120, i32 noundef %5) #2
  switch i8 %.5.in, label %141 [
    i8 1, label %142
    i8 2, label %142
    i8 3, label %142
    i8 5, label %143
    i8 4, label %155
  ]

141:                                              ; preds = %.loopexit401
  br label %142

142:                                              ; preds = %141, %.loopexit401, %.loopexit401, %.loopexit401
  %.6.shrunk = phi i8 [ 2, %141 ], [ %.5.in, %.loopexit401 ], [ %.5.in, %.loopexit401 ], [ %.5.in, %.loopexit401 ]
  %.6 = zext nneg i8 %.6.shrunk to i32
  tail call void @sqlite3RowidConstraint(ptr noundef nonnull %0, i32 noundef %.6, ptr noundef %1) #2
  br label %157

143:                                              ; preds = %.loopexit401.thread, %.loopexit401
  %.0351460 = phi i32 [ 0, %.loopexit401.thread ], [ %.0351, %.loopexit401 ]
  %144 = getelementptr inbounds i8, ptr %14, i64 44
  %145 = load i32, ptr %144, align 4, !tbaa !29
  %146 = and i32 %145, 262144
  %.not376 = icmp eq i32 %146, 0
  br i1 %.not376, label %.thread, label %147

147:                                              ; preds = %143
  %148 = tail call ptr @sqlite3TriggersExist(ptr noundef nonnull %0, ptr noundef %1, i32 noundef 109, ptr noundef null, ptr noundef null) #2
  %.not377 = icmp eq ptr %148, null
  br i1 %.not377, label %.thread, label %150

.thread:                                          ; preds = %143, %147
  %149 = tail call i32 @sqlite3FkRequired(ptr noundef nonnull %0, ptr noundef %1, ptr noundef null, i32 noundef 0) #2
  %.not378 = icmp eq i32 %149, 0
  br i1 %.not378, label %151, label %150

150:                                              ; preds = %.thread, %147
  %.0350398 = phi ptr [ null, %.thread ], [ %148, %147 ]
  tail call void @sqlite3MultiWrite(ptr noundef nonnull %0) #2
  tail call void @sqlite3GenerateRowDelete(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %.0350398, i32 noundef %3, i32 noundef %4, i32 noundef %5, i16 noundef signext 1, i8 noundef zeroext 0, i8 noundef zeroext 5, i8 noundef zeroext 1, i32 noundef -1) #2
  br label %157

151:                                              ; preds = %.thread
  %152 = getelementptr inbounds i8, ptr %1, i64 16
  %153 = load ptr, ptr %152, align 8, !tbaa !48
  %.not379 = icmp eq ptr %153, null
  br i1 %.not379, label %157, label %154

154:                                              ; preds = %151
  tail call void @sqlite3MultiWrite(ptr noundef nonnull %0) #2
  tail call void @sqlite3GenerateRowIndexDelete(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %3, i32 noundef %4, ptr noundef null, i32 noundef -1) #2
  br label %157

155:                                              ; preds = %.loopexit401
  %156 = tail call i32 @sqlite3VdbeGoto(ptr noundef %15, i32 noundef %9) #2
  br label %157

157:                                              ; preds = %150, %154, %151, %155, %142
  %.0351459 = phi i32 [ %.0351, %142 ], [ %.0351, %155 ], [ %.0351460, %151 ], [ %.0351460, %154 ], [ %.0351460, %150 ]
  %.0344 = phi i32 [ 0, %142 ], [ 0, %155 ], [ 1, %151 ], [ 1, %154 ], [ 1, %150 ]
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %120) #2
  %.not380 = icmp eq i32 %.0351459, 0
  br i1 %.not380, label %160, label %158

158:                                              ; preds = %157
  %159 = tail call i32 @sqlite3VdbeAddOp0(ptr noundef %15, i32 noundef 13) #2
  tail call void @sqlite3VdbeJumpHere(ptr noundef %15, i32 noundef %.0351459) #2
  br label %160

160:                                              ; preds = %157, %158, %.loopexit402
  %.1355 = phi i32 [ 0, %.loopexit402 ], [ %159, %158 ], [ 0, %157 ]
  %.1352 = phi i32 [ 0, %.loopexit402 ], [ %.0351459, %158 ], [ 0, %157 ]
  %.1345 = phi i32 [ 0, %.loopexit402 ], [ %.0344, %158 ], [ %.0344, %157 ]
  %161 = getelementptr inbounds i8, ptr %1, i64 16
  %.1424 = load ptr, ptr %161, align 8, !tbaa !45
  %.not381425 = icmp eq ptr %.1424, null
  br i1 %.not381425, label %._crit_edge432, label %.lr.ph431

.lr.ph431:                                        ; preds = %160
  %162 = add i32 %5, 1
  %163 = getelementptr inbounds i8, ptr %0, i64 68
  %164 = getelementptr inbounds i8, ptr %1, i64 68
  %165 = icmp eq i8 %7, 0
  %.not384 = icmp eq i8 %8, 10
  %166 = getelementptr inbounds i8, ptr %14, i64 44
  %167 = getelementptr inbounds i8, ptr %1, i64 32
  %168 = getelementptr inbounds i8, ptr %.0330, i64 94
  %169 = getelementptr inbounds i8, ptr %.0330, i64 8
  %170 = getelementptr inbounds i8, ptr %.0330, i64 64
  %171 = add nsw i32 %6, 1
  %172 = trunc nuw i32 %.0349 to i16
  br label %173

173:                                              ; preds = %.lr.ph431, %333
  %indvars.iv453 = phi i64 [ 0, %.lr.ph431 ], [ %indvars.iv.next454, %333 ]
  %.1429 = phi ptr [ %.1424, %.lr.ph431 ], [ %.1, %333 ]
  %.2346427 = phi i32 [ %.1345, %.lr.ph431 ], [ %.4348, %333 ]
  %.0356426 = phi i8 [ 0, %.lr.ph431 ], [ %.2358, %333 ]
  %174 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv453
  %175 = load i32, ptr %174, align 4, !tbaa !19
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %333, label %177

177:                                              ; preds = %173
  %178 = icmp eq i8 %.0356426, 0
  br i1 %178, label %179, label %180

179:                                              ; preds = %177
  tail call void @sqlite3TableAffinity(ptr noundef %15, ptr noundef %1, i32 noundef %162)
  br label %180

180:                                              ; preds = %179, %177
  %.1357 = phi i8 [ 1, %179 ], [ %.0356426, %177 ]
  %181 = tail call i32 @sqlite3VdbeMakeLabel(ptr noundef %15) #2
  %182 = getelementptr inbounds i8, ptr %.1429, i64 72
  %183 = load ptr, ptr %182, align 8, !tbaa !49
  %.not383 = icmp eq ptr %183, null
  br i1 %.not383, label %188, label %184

184:                                              ; preds = %180
  %185 = load i32, ptr %174, align 4, !tbaa !19
  %186 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %15, i32 noundef 80, i32 noundef 0, i32 noundef %185) #2
  store i32 %162, ptr %163, align 4, !tbaa !36
  %187 = load ptr, ptr %182, align 8, !tbaa !49
  tail call void @sqlite3ExprIfFalseDup(ptr noundef nonnull %0, ptr noundef %187, i32 noundef %181, i32 noundef 16) #2
  store i32 0, ptr %163, align 4, !tbaa !36
  br label %188

188:                                              ; preds = %184, %180
  %189 = load i32, ptr %174, align 4, !tbaa !19
  %190 = add nsw i32 %189, 1
  %191 = getelementptr inbounds i8, ptr %.1429, i64 96
  %192 = load i16, ptr %191, align 8, !tbaa !50
  %.not436 = icmp eq i16 %192, 0
  br i1 %.not436, label %._crit_edge416, label %.lr.ph415

.lr.ph415:                                        ; preds = %188
  %193 = getelementptr inbounds i8, ptr %.1429, i64 8
  %194 = getelementptr inbounds i8, ptr %.1429, i64 80
  br label %195

195:                                              ; preds = %.lr.ph415, %218
  %indvars.iv444 = phi i64 [ 0, %.lr.ph415 ], [ %indvars.iv.next445, %218 ]
  %196 = load ptr, ptr %193, align 8, !tbaa !51
  %197 = getelementptr inbounds i16, ptr %196, i64 %indvars.iv444
  %198 = load i16, ptr %197, align 2, !tbaa !52
  switch i16 %198, label %207 [
    i16 -2, label %199
    i16 -1, label %212
  ]

199:                                              ; preds = %195
  store i32 %162, ptr %163, align 4, !tbaa !36
  %200 = load ptr, ptr %194, align 8, !tbaa !53
  %201 = getelementptr inbounds i8, ptr %200, i64 8
  %202 = load ptr, ptr %201, align 8, !tbaa !39
  %203 = getelementptr inbounds %struct.ExprList_item, ptr %202, i64 %indvars.iv444
  %204 = load ptr, ptr %203, align 8, !tbaa !40
  %205 = trunc i64 %indvars.iv444 to i32
  %206 = add i32 %190, %205
  tail call void @sqlite3ExprCodeCopy(ptr noundef nonnull %0, ptr noundef %204, i32 noundef %206) #2
  store i32 0, ptr %163, align 4, !tbaa !36
  br label %218

207:                                              ; preds = %195
  %208 = sext i16 %198 to i32
  %209 = load i16, ptr %164, align 4, !tbaa !18
  %210 = icmp eq i16 %198, %209
  %211 = add i32 %162, %208
  %spec.select434 = select i1 %210, i32 %5, i32 %211
  br label %212

212:                                              ; preds = %207, %195
  %.0335 = phi i32 [ %5, %195 ], [ %spec.select434, %207 ]
  %213 = icmp slt i16 %198, 0
  %214 = select i1 %213, i32 87, i32 86
  %215 = trunc i64 %indvars.iv444 to i32
  %216 = add i32 %190, %215
  %217 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %15, i32 noundef %214, i32 noundef %.0335, i32 noundef %216) #2
  br label %218

218:                                              ; preds = %212, %199
  %indvars.iv.next445 = add nuw nsw i64 %indvars.iv444, 1
  %219 = load i16, ptr %191, align 8, !tbaa !50
  %220 = zext i16 %219 to i64
  %221 = icmp ult i64 %indvars.iv.next445, %220
  br i1 %221, label %195, label %._crit_edge416.loopexit, !llvm.loop !54

._crit_edge416.loopexit:                          ; preds = %218
  %.pre455 = load i32, ptr %174, align 4, !tbaa !19
  br label %._crit_edge416

._crit_edge416:                                   ; preds = %._crit_edge416.loopexit, %188
  %222 = phi i32 [ %189, %188 ], [ %.pre455, %._crit_edge416.loopexit ]
  %.lcssa.in = phi i16 [ 0, %188 ], [ %219, %._crit_edge416.loopexit ]
  %.lcssa = zext i16 %.lcssa.in to i32
  %223 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 100, i32 noundef %190, i32 noundef %.lcssa, i32 noundef %222) #2
  %224 = icmp eq ptr %.0330, %.1429
  %or.cond9 = and i1 %165, %224
  %or.cond435 = and i1 %13, %or.cond9
  br i1 %or.cond435, label %225, label %226

225:                                              ; preds = %._crit_edge416
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %181) #2
  br label %333

226:                                              ; preds = %._crit_edge416
  %227 = getelementptr inbounds i8, ptr %.1429, i64 98
  %228 = load i8, ptr %227, align 2, !tbaa !47
  %229 = icmp eq i8 %228, 0
  br i1 %229, label %230, label %231

230:                                              ; preds = %226
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %181) #2
  br label %333

231:                                              ; preds = %226
  %232 = icmp eq i8 %228, 10
  %narrow385 = select i1 %232, i8 2, i8 %228
  %.7.in = select i1 %.not384, i8 %narrow385, i8 %8
  %.7 = zext i8 %.7.in to i32
  %233 = icmp eq i64 %indvars.iv453, 0
  br i1 %233, label %234, label %258

234:                                              ; preds = %231
  %235 = getelementptr inbounds i8, ptr %.1429, i64 40
  %236 = load ptr, ptr %235, align 8, !tbaa !55
  %237 = icmp eq ptr %236, null
  %238 = icmp eq i8 %.7.in, 5
  %239 = and i1 %238, %237
  %or.cond462 = and i1 %239, %224
  br i1 %or.cond462, label %240, label %258

240:                                              ; preds = %234
  %241 = load i32, ptr %166, align 4, !tbaa !29
  %242 = and i32 %241, 262144
  %243 = icmp eq i32 %242, 0
  br i1 %243, label %247, label %244

244:                                              ; preds = %240
  %245 = tail call ptr @sqlite3TriggersExist(ptr noundef nonnull %0, ptr noundef %1, i32 noundef 109, ptr noundef null, ptr noundef null) #2
  %246 = icmp eq ptr %245, null
  br i1 %246, label %._crit_edge456, label %258

._crit_edge456:                                   ; preds = %244
  %.pre457 = load i32, ptr %166, align 4, !tbaa !29
  br label %247

247:                                              ; preds = %._crit_edge456, %240
  %248 = phi i32 [ %.pre457, %._crit_edge456 ], [ %241, %240 ]
  %249 = and i32 %248, 524288
  %250 = icmp eq i32 %249, 0
  br i1 %250, label %257, label %251

251:                                              ; preds = %247
  %252 = load ptr, ptr %167, align 8, !tbaa !56
  %253 = icmp eq ptr %252, null
  br i1 %253, label %254, label %258

254:                                              ; preds = %251
  %255 = tail call ptr @sqlite3FkReferences(ptr noundef nonnull %1) #2
  %256 = icmp eq ptr %255, null
  br i1 %256, label %257, label %258

257:                                              ; preds = %254, %247
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %181) #2
  br label %333

258:                                              ; preds = %254, %251, %244, %234, %231
  %259 = getelementptr inbounds i8, ptr %.1429, i64 94
  %260 = load i16, ptr %259, align 2, !tbaa !16
  %261 = zext i16 %260 to i32
  %262 = trunc i64 %indvars.iv453 to i32
  %263 = add i32 %262, %4
  %264 = tail call i32 @sqlite3VdbeAddOp4Int(ptr noundef %15, i32 noundef 29, i32 noundef %263, i32 noundef %181, i32 noundef %190, i32 noundef %261) #2
  br i1 %224, label %267, label %265

265:                                              ; preds = %258
  %266 = tail call i32 @sqlite3GetTempRange(ptr noundef nonnull %0, i32 noundef %.0349) #2
  br label %267

267:                                              ; preds = %258, %265
  %268 = phi i32 [ %266, %265 ], [ %190, %258 ]
  %269 = icmp eq i8 %.7.in, 5
  %or.cond14 = or i1 %13, %269
  br i1 %or.cond14, label %270, label %.loopexit

270:                                              ; preds = %267
  %271 = load i32, ptr %18, align 8, !tbaa !15
  %272 = and i32 %271, 32
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %274, label %278

274:                                              ; preds = %270
  %275 = tail call i32 @sqlite3VdbeAddOp2(ptr noundef %15, i32 noundef 129, i32 noundef %263, i32 noundef %268) #2
  br i1 %13, label %276, label %.loopexit

276:                                              ; preds = %274
  %277 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 37, i32 noundef %268, i32 noundef %181, i32 noundef %6) #2
  tail call void @sqlite3VdbeChangeP5(ptr noundef %15, i16 noundef zeroext 144) #2
  br label %.loopexit

278:                                              ; preds = %270
  br i1 %224, label %.loopexit400, label %.preheader

.preheader:                                       ; preds = %278
  %279 = load i16, ptr %168, align 2, !tbaa !16
  %.not437 = icmp eq i16 %279, 0
  br i1 %.not437, label %.loopexit400, label %.lr.ph418

.lr.ph418:                                        ; preds = %.preheader, %.lr.ph418
  %indvars.iv447 = phi i64 [ %indvars.iv.next448, %.lr.ph418 ], [ 0, %.preheader ]
  %280 = load ptr, ptr %169, align 8, !tbaa !51
  %281 = getelementptr inbounds i16, ptr %280, i64 %indvars.iv447
  %282 = load i16, ptr %281, align 2, !tbaa !52
  %283 = tail call signext i16 @sqlite3ColumnOfIndex(ptr noundef nonnull %.1429, i16 noundef signext %282) #2
  %284 = sext i16 %283 to i32
  %285 = trunc i64 %indvars.iv447 to i32
  %286 = add i32 %268, %285
  %287 = tail call i32 @sqlite3VdbeAddOp3(ptr noundef %15, i32 noundef 98, i32 noundef %263, i32 noundef %284, i32 noundef %286) #2
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %288 = load i16, ptr %168, align 2, !tbaa !16
  %289 = zext i16 %288 to i64
  %290 = icmp ult i64 %indvars.iv.next448, %289
  br i1 %290, label %.lr.ph418, label %.loopexit400, !llvm.loop !57

.loopexit400:                                     ; preds = %.lr.ph418, %.preheader, %278
  br i1 %13, label %291, label %.loopexit

291:                                              ; preds = %.loopexit400
  %292 = tail call i32 @sqlite3VdbeCurrentAddr(ptr noundef %15) #2
  %293 = load i16, ptr %168, align 2, !tbaa !16
  %.not438 = icmp eq i16 %293, 0
  br i1 %.not438, label %.loopexit, label %.lr.ph423.preheader

.lr.ph423.preheader:                              ; preds = %291
  %294 = getelementptr inbounds i8, ptr %.1429, i64 99
  %295 = load i8, ptr %294, align 1
  %296 = and i8 %295, 3
  %297 = icmp eq i8 %296, 2
  %298 = select i1 %297, i32 %190, i32 %268
  %299 = zext i16 %293 to i32
  %300 = add nsw i32 %292, %299
  br label %.lr.ph423

.lr.ph423:                                        ; preds = %.lr.ph423.preheader, %.lr.ph423
  %indvars.iv450 = phi i64 [ 0, %.lr.ph423.preheader ], [ %indvars.iv.next451, %.lr.ph423 ]
  %.0331421 = phi i32 [ 36, %.lr.ph423.preheader ], [ %spec.select395, %.lr.ph423 ]
  %.0333420 = phi i32 [ %300, %.lr.ph423.preheader ], [ %spec.select394, %.lr.ph423 ]
  %301 = load ptr, ptr %170, align 8, !tbaa !58
  %302 = getelementptr inbounds ptr, ptr %301, i64 %indvars.iv450
  %303 = load ptr, ptr %302, align 8, !tbaa !45
  %304 = tail call ptr @sqlite3LocateCollSeq(ptr noundef nonnull %0, ptr noundef %303) #2
  %305 = load ptr, ptr %169, align 8, !tbaa !51
  %306 = getelementptr inbounds i16, ptr %305, i64 %indvars.iv450
  %307 = load i16, ptr %306, align 2, !tbaa !52
  %308 = sext i16 %307 to i32
  %309 = load i16, ptr %168, align 2, !tbaa !16
  %310 = zext i16 %309 to i64
  %311 = add nuw nsw i64 %310, 4294967295
  %312 = and i64 %311, 4294967295
  %313 = icmp eq i64 %indvars.iv450, %312
  %spec.select394 = select i1 %313, i32 %181, i32 %.0333420
  %spec.select395 = select i1 %313, i32 37, i32 %.0331421
  %314 = add nsw i32 %171, %308
  %315 = trunc i64 %indvars.iv450 to i32
  %316 = add i32 %298, %315
  %317 = tail call i32 @sqlite3VdbeAddOp4(ptr noundef %15, i32 noundef %spec.select395, i32 noundef %314, i32 noundef %spec.select394, i32 noundef %316, ptr noundef %304, i32 noundef -3) #2
  tail call void @sqlite3VdbeChangeP5(ptr noundef %15, i16 noundef zeroext 144) #2
  %indvars.iv.next451 = add nuw nsw i64 %indvars.iv450, 1
  %318 = load i16, ptr %168, align 2, !tbaa !16
  %319 = zext i16 %318 to i64
  %320 = icmp ult i64 %indvars.iv.next451, %319
  br i1 %320, label %.lr.ph423, label %.loopexit, !llvm.loop !59

.loopexit:                                        ; preds = %.lr.ph423, %291, %.loopexit400, %276, %274, %267
  switch i8 %.7.in, label %324 [
    i8 1, label %321
    i8 2, label %321
    i8 3, label %321
    i8 4, label %322
  ]

321:                                              ; preds = %.loopexit, %.loopexit, %.loopexit
  tail call void @sqlite3UniqueConstraint(ptr noundef nonnull %0, i32 noundef %.7, ptr noundef nonnull %.1429) #2
  br label %331

322:                                              ; preds = %.loopexit
  %323 = tail call i32 @sqlite3VdbeGoto(ptr noundef %15, i32 noundef %9) #2
  br label %331

324:                                              ; preds = %.loopexit
  tail call void @sqlite3MultiWrite(ptr noundef nonnull %0) #2
  %325 = load i32, ptr %166, align 4, !tbaa !29
  %326 = and i32 %325, 262144
  %.not387 = icmp eq i32 %326, 0
  br i1 %.not387, label %329, label %327

327:                                              ; preds = %324
  %328 = tail call ptr @sqlite3TriggersExist(ptr noundef nonnull %0, ptr noundef %1, i32 noundef 109, ptr noundef null, ptr noundef null) #2
  br label %329

329:                                              ; preds = %327, %324
  %.0 = phi ptr [ %328, %327 ], [ null, %324 ]
  %330 = zext i1 %224 to i8
  tail call void @sqlite3GenerateRowDelete(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %.0, i32 noundef %3, i32 noundef %4, i32 noundef %268, i16 noundef signext %172, i8 noundef zeroext 0, i8 noundef zeroext 5, i8 noundef zeroext %330, i32 noundef %263) #2
  br label %331

331:                                              ; preds = %329, %322, %321
  %.3347 = phi i32 [ 1, %329 ], [ %.2346427, %322 ], [ %.2346427, %321 ]
  tail call void @sqlite3VdbeResolveLabel(ptr noundef %15, i32 noundef %181) #2
  %.not388 = icmp eq i32 %268, %190
  br i1 %.not388, label %333, label %332

332:                                              ; preds = %331
  tail call void @sqlite3ReleaseTempRange(ptr noundef nonnull %0, i32 noundef %268, i32 noundef %.0349) #2
  br label %333

333:                                              ; preds = %331, %332, %173, %257, %230, %225
  %.2358 = phi i8 [ %.1357, %225 ], [ %.1357, %230 ], [ %.1357, %257 ], [ %.0356426, %173 ], [ %.1357, %332 ], [ %.1357, %331 ]
  %.4348 = phi i32 [ %.2346427, %225 ], [ %.2346427, %230 ], [ %.2346427, %257 ], [ %.2346427, %173 ], [ %.3347, %332 ], [ %.3347, %331 ]
  %334 = getelementptr inbounds i8, ptr %.1429, i64 40
  %indvars.iv.next454 = add nuw nsw i64 %indvars.iv453, 1
  %.1 = load ptr, ptr %334, align 8, !tbaa !45
  %.not381 = icmp eq ptr %.1, null
  br i1 %.not381, label %._crit_edge432, label %173, !llvm.loop !60

._crit_edge432:                                   ; preds = %333, %160
  %.2346.lcssa = phi i32 [ %.1345, %160 ], [ %.4348, %333 ]
  %.not382 = icmp eq i32 %.1352, 0
  br i1 %.not382, label %338, label %335

335:                                              ; preds = %._crit_edge432
  %336 = add nsw i32 %.1352, 1
  %337 = tail call i32 @sqlite3VdbeGoto(ptr noundef %15, i32 noundef %336) #2
  tail call void @sqlite3VdbeJumpHere(ptr noundef %15, i32 noundef %.1355) #2
  br label %338

338:                                              ; preds = %335, %._crit_edge432
  store i32 %.2346.lcssa, ptr %10, align 4, !tbaa !19
  ret void
}

declare ptr @sqlite3FkReferences(ptr noundef) local_unnamed_addr #0

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

declare ptr @sqlite3MPrintf(ptr noundef, ptr noundef, ...) local_unnamed_addr #0

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

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

declare void @sqlite3ExprIfTrue(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

declare void @sqlite3RowidConstraint(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

declare i32 @sqlite3FkRequired(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @sqlite3MultiWrite(ptr noundef) local_unnamed_addr #0

declare void @sqlite3GenerateRowDelete(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i16 noundef signext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i32 noundef) local_unnamed_addr #0

declare void @sqlite3GenerateRowIndexDelete(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @sqlite3ExprIfFalseDup(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @sqlite3ExprCodeCopy(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

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

declare ptr @sqlite3LocateCollSeq(ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @sqlite3UniqueConstraint(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { nounwind }

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

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


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