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

; 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.DbFixer = type { ptr, ptr, i32, ptr, ptr, ptr }
%struct.Token = type { ptr, i32 }
%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.sqlite3 = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i64, i32, i32, i32, i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, [12 x i32], i32, %struct.sqlite3InitInfo, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %union.anon, %struct.Lookaside, ptr, ptr, ptr, ptr, i32, i32, %struct.Hash, ptr, ptr, ptr, %struct.Hash, %struct.Hash, %struct.BusyHandler, [2 x %struct.Db], ptr, i32, i32, i32, i64, i64, ptr }
%struct.sqlite3InitInfo = type { i32, i8, i8, i8, i8 }
%union.anon = type { double }
%struct.Lookaside = type { i32, i16, i8, i32, i32, [3 x i32], ptr, ptr, ptr }
%struct.Hash = type { i32, i32, ptr, ptr }
%struct.BusyHandler = type { ptr, ptr, i32 }
%struct.Db = type { ptr, ptr, i8, i8, ptr }
%struct.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.SrcList = type { i32, i32, [1 x %struct.SrcList_item] }
%struct.SrcList_item = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, %struct.anon.1, i8, i32, ptr, ptr, i64, %union.anon.2, ptr }
%struct.anon.1 = type { i8, i8, [2 x i8] }
%union.anon.2 = type { ptr }
%struct.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.ExprList = type { i32, ptr }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.0 }
%union.anon.0 = type { i32 }
%struct.Expr = type { i8, i8, i32, %union.anon.3, ptr, ptr, %union.anon.4, i32, i32, i16, i16, i16, i8, ptr, ptr }
%union.anon.3 = type { ptr }
%union.anon.4 = type { ptr }
%struct.Schema = type { i32, i32, %struct.Hash, %struct.Hash, %struct.Hash, %struct.Hash, ptr, i8, i8, i16, i32 }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [61 x i8], align 1
@sqlite3StrBINARY = external constant [0 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [27 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 void @sqlite3OomFault(ptr noundef) #1

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

declare ptr @sqlite3GetVdbe(ptr noundef) #1

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

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

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

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

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

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

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

declare i32 @sqlite3ReadSchema(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i32 @sqlite3Strlen30(ptr noundef) #1

declare ptr @sqlite3ExprSkipCollate(ptr noundef) #1

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

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

70:                                               ; preds = %11
  %71 = load ptr, ptr %12, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.Parse, ptr %71, i32 0, i32 16
  %73 = load i32, ptr %72, align 8, !tbaa !23
  %74 = icmp sgt i32 %73, 0
  br i1 %74, label %75, label %76

75:                                               ; preds = %70, %11
  br label %1265

76:                                               ; preds = %70
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.Parse, ptr %77, i32 0, i32 53
  %79 = load i8, ptr %78, align 4, !tbaa !24
  %80 = zext i8 %79 to i32
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %82, label %87

82:                                               ; preds = %76
  %83 = load i8, ptr %22, align 1, !tbaa !11
  %84 = zext i8 %83 to i32
  %85 = icmp ne i32 %84, 2
  br i1 %85, label %86, label %87

86:                                               ; preds = %82
  br label %1265

87:                                               ; preds = %82, %76
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = call i32 @sqlite3ReadSchema(ptr noundef %88)
  %90 = icmp ne i32 0, %89
  br i1 %90, label %91, label %92

91:                                               ; preds = %87
  br label %1265

92:                                               ; preds = %87
  %93 = load ptr, ptr %15, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %181

95:                                               ; preds = %92
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = call i32 @sqlite3TwoPartName(ptr noundef %96, ptr noundef %97, ptr noundef %98, ptr noundef %34)
  store i32 %99, ptr %33, align 4, !tbaa !9
  %100 = load i32, ptr %33, align 4, !tbaa !9
  %101 = icmp slt i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %95
  br label %1265

103:                                              ; preds = %95
  %104 = load ptr, ptr %31, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.sqlite3, ptr %104, i32 0, i32 33
  %106 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %105, i32 0, i32 2
  %107 = load i8, ptr %106, align 1, !tbaa !25
  %108 = icmp ne i8 %107, 0
  br i1 %108, label %133, label %109

109:                                              ; preds = %103
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load ptr, ptr %15, align 8, !tbaa !5
  %112 = call ptr @sqlite3SrcListLookup(ptr noundef %110, ptr noundef %111)
  store ptr %112, ptr %23, align 8, !tbaa !5
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.Token, ptr %113, i32 0, i32 1
  %115 = load i32, ptr %114, align 8, !tbaa !26
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %132

117:                                              ; preds = %109
  %118 = load ptr, ptr %23, align 8, !tbaa !5
  %119 = icmp ne ptr %118, null
  br i1 %119, label %120, label %132

120:                                              ; preds = %117
  %121 = load ptr, ptr %23, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.Table, ptr %121, i32 0, i32 20
  %123 = load ptr, ptr %122, align 8, !tbaa !27
  %124 = load ptr, ptr %31, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.sqlite3, ptr %124, i32 0, i32 4
  %126 = load ptr, ptr %125, align 8, !tbaa !29
  %127 = getelementptr inbounds %struct.Db, ptr %126, i64 1
  %128 = getelementptr inbounds %struct.Db, ptr %127, i32 0, i32 4
  %129 = load ptr, ptr %128, align 8, !tbaa !30
  %130 = icmp eq ptr %123, %129
  br i1 %130, label %131, label %132

131:                                              ; preds = %120
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %131, %120, %117, %109
  br label %133

133:                                              ; preds = %132, %103
  %134 = load ptr, ptr %12, align 8, !tbaa !5
  %135 = load i32, ptr %33, align 4, !tbaa !9
  %136 = load ptr, ptr %34, align 8, !tbaa !5
  call void @sqlite3FixInit(ptr noundef %29, ptr noundef %134, i32 noundef %135, ptr noundef @.str.45, ptr noundef %136)
  %137 = load ptr, ptr %15, align 8, !tbaa !5
  %138 = call i32 @sqlite3FixSrcList(ptr noundef %29, ptr noundef %137)
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %133
  br label %141

141:                                              ; preds = %140, %133
  %142 = load ptr, ptr %12, align 8, !tbaa !5
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.SrcList, ptr %143, i32 0, i32 2
  %145 = getelementptr inbounds [1 x %struct.SrcList_item], ptr %144, i64 0, i64 0
  %146 = call ptr @sqlite3LocateTableItem(ptr noundef %142, i32 noundef 0, ptr noundef %145)
  store ptr %146, ptr %23, align 8, !tbaa !5
  %147 = load ptr, ptr %23, align 8, !tbaa !5
  %148 = icmp eq ptr %147, null
  br i1 %148, label %149, label %150

149:                                              ; preds = %141
  br label %1265

150:                                              ; preds = %141
  %151 = load i32, ptr %33, align 4, !tbaa !9
  %152 = icmp eq i32 %151, 1
  br i1 %152, label %153, label %171

153:                                              ; preds = %150
  %154 = load ptr, ptr %31, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.sqlite3, ptr %154, i32 0, i32 4
  %156 = load ptr, ptr %155, align 8, !tbaa !29
  %157 = load i32, ptr %33, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds %struct.Db, ptr %156, i64 %158
  %160 = getelementptr inbounds %struct.Db, ptr %159, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !30
  %162 = load ptr, ptr %23, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.Table, ptr %162, i32 0, i32 20
  %164 = load ptr, ptr %163, align 8, !tbaa !27
  %165 = icmp ne ptr %161, %164
  br i1 %165, label %166, label %171

166:                                              ; preds = %153
  %167 = load ptr, ptr %12, align 8, !tbaa !5
  %168 = load ptr, ptr %23, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.Table, ptr %168, i32 0, i32 0
  %170 = load ptr, ptr %169, align 8, !tbaa !32
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %167, ptr noundef @.str.46, ptr noundef %170)
  br label %1265

171:                                              ; preds = %153, %150
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.Table, ptr %172, i32 0, i32 9
  %174 = load i32, ptr %173, align 8, !tbaa !33
  %175 = and i32 %174, 32
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %180, label %177

177:                                              ; preds = %171
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef %178)
  store ptr %179, ptr %39, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %177, %171
  br label %194

181:                                              ; preds = %92
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.Parse, ptr %182, i32 0, i32 61
  %184 = load ptr, ptr %183, align 8, !tbaa !34
  store ptr %184, ptr %23, align 8, !tbaa !5
  %185 = load ptr, ptr %23, align 8, !tbaa !5
  %186 = icmp ne ptr %185, null
  br i1 %186, label %188, label %187

187:                                              ; preds = %181
  br label %1265

188:                                              ; preds = %181
  %189 = load ptr, ptr %31, align 8, !tbaa !5
  %190 = load ptr, ptr %23, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.Table, ptr %190, i32 0, i32 20
  %192 = load ptr, ptr %191, align 8, !tbaa !27
  %193 = call i32 @sqlite3SchemaToIndex(ptr noundef %189, ptr noundef %192)
  store i32 %193, ptr %33, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %188, %180
  %195 = load ptr, ptr %31, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.sqlite3, ptr %195, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !29
  %198 = load i32, ptr %33, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds %struct.Db, ptr %197, i64 %199
  store ptr %200, ptr %32, align 8, !tbaa !5
  %201 = load ptr, ptr %23, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.Table, ptr %201, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8, !tbaa !32
  %204 = call i32 @sqlite3_strnicmp(ptr noundef %203, ptr noundef @.str.10, i32 noundef 7)
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %206, label %225

206:                                              ; preds = %194
  %207 = load ptr, ptr %31, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.sqlite3, ptr %207, i32 0, i32 33
  %209 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %208, i32 0, i32 2
  %210 = load i8, ptr %209, align 1, !tbaa !25
  %211 = zext i8 %210 to i32
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %225

213:                                              ; preds = %206
  %214 = load ptr, ptr %23, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.Table, ptr %214, i32 0, i32 0
  %216 = load ptr, ptr %215, align 8, !tbaa !32
  %217 = getelementptr inbounds i8, ptr %216, i64 7
  %218 = call i32 @sqlite3_strnicmp(ptr noundef %217, ptr noundef @.str.47, i32 noundef 9)
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %225

220:                                              ; preds = %213
  %221 = load ptr, ptr %12, align 8, !tbaa !5
  %222 = load ptr, ptr %23, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.Table, ptr %222, i32 0, i32 0
  %224 = load ptr, ptr %223, align 8, !tbaa !32
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %221, ptr noundef @.str.48, ptr noundef %224)
  br label %1265

225:                                              ; preds = %213, %206, %194
  %226 = load ptr, ptr %23, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.Table, ptr %226, i32 0, i32 3
  %228 = load ptr, ptr %227, align 8, !tbaa !35
  %229 = icmp ne ptr %228, null
  br i1 %229, label %230, label %232

230:                                              ; preds = %225
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %231, ptr noundef @.str.49)
  br label %1265

232:                                              ; preds = %225
  %233 = load ptr, ptr %23, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.Table, ptr %233, i32 0, i32 16
  %235 = load i32, ptr %234, align 4, !tbaa !36
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %239

237:                                              ; preds = %232
  %238 = load ptr, ptr %12, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %238, ptr noundef @.str.50)
  br label %1265

239:                                              ; preds = %232
  %240 = load ptr, ptr %34, align 8, !tbaa !5
  %241 = icmp ne ptr %240, null
  br i1 %241, label %242, label %289

242:                                              ; preds = %239
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load ptr, ptr %34, align 8, !tbaa !5
  %245 = call ptr @sqlite3NameFromToken(ptr noundef %243, ptr noundef %244)
  store ptr %245, ptr %25, align 8, !tbaa !5
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = icmp eq ptr %246, null
  br i1 %247, label %248, label %249

248:                                              ; preds = %242
  br label %1265

249:                                              ; preds = %242
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  %251 = load ptr, ptr %25, align 8, !tbaa !5
  %252 = call i32 @sqlite3CheckObjectName(ptr noundef %250, ptr noundef %251)
  %253 = icmp ne i32 0, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %249
  br label %1265

255:                                              ; preds = %249
  %256 = load ptr, ptr %31, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.sqlite3, ptr %256, i32 0, i32 33
  %258 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %257, i32 0, i32 2
  %259 = load i8, ptr %258, align 1, !tbaa !25
  %260 = icmp ne i8 %259, 0
  br i1 %260, label %270, label %261

261:                                              ; preds = %255
  %262 = load ptr, ptr %31, align 8, !tbaa !5
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = call ptr @sqlite3FindTable(ptr noundef %262, ptr noundef %263, ptr noundef null)
  %265 = icmp ne ptr %264, null
  br i1 %265, label %266, label %269

266:                                              ; preds = %261
  %267 = load ptr, ptr %12, align 8, !tbaa !5
  %268 = load ptr, ptr %25, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %267, ptr noundef @.str.51, ptr noundef %268)
  br label %1265

269:                                              ; preds = %261
  br label %270

270:                                              ; preds = %269, %255
  %271 = load ptr, ptr %31, align 8, !tbaa !5
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load ptr, ptr %32, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.Db, ptr %273, i32 0, i32 0
  %275 = load ptr, ptr %274, align 8, !tbaa !37
  %276 = call ptr @sqlite3FindIndex(ptr noundef %271, ptr noundef %272, ptr noundef %275)
  %277 = icmp ne ptr %276, null
  br i1 %277, label %278, label %288

278:                                              ; preds = %270
  %279 = load i32, ptr %21, align 4, !tbaa !9
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %284, label %281

281:                                              ; preds = %278
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = load ptr, ptr %25, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %282, ptr noundef @.str.52, ptr noundef %283)
  br label %287

284:                                              ; preds = %278
  %285 = load ptr, ptr %12, align 8, !tbaa !5
  %286 = load i32, ptr %33, align 4, !tbaa !9
  call void @sqlite3CodeVerifySchema(ptr noundef %285, i32 noundef %286)
  br label %287

287:                                              ; preds = %284, %281
  br label %1265

288:                                              ; preds = %270
  br label %327

289:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %290 = load ptr, ptr %23, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.Table, ptr %290, i32 0, i32 2
  %292 = load ptr, ptr %291, align 8, !tbaa !38
  store ptr %292, ptr %41, align 8, !tbaa !5
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %297, %289
  %294 = load ptr, ptr %41, align 8, !tbaa !5
  %295 = icmp ne ptr %294, null
  br i1 %295, label %296, label %303

296:                                              ; preds = %293
  br label %297

297:                                              ; preds = %296
  %298 = load ptr, ptr %41, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.Index, ptr %298, i32 0, i32 5
  %300 = load ptr, ptr %299, align 8, !tbaa !39
  store ptr %300, ptr %41, align 8, !tbaa !5
  %301 = load i32, ptr %40, align 4, !tbaa !9
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %40, align 4, !tbaa !9
  br label %293, !llvm.loop !41

303:                                              ; preds = %293
  %304 = load ptr, ptr %31, align 8, !tbaa !5
  %305 = load ptr, ptr %23, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.Table, ptr %305, i32 0, i32 0
  %307 = load ptr, ptr %306, align 8, !tbaa !32
  %308 = load i32, ptr %40, align 4, !tbaa !9
  %309 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %304, ptr noundef @.str.53, ptr noundef %307, i32 noundef %308)
  store ptr %309, ptr %25, align 8, !tbaa !5
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = icmp eq ptr %310, null
  br i1 %311, label %312, label %313

312:                                              ; preds = %303
  store i32 2, ptr %42, align 4
  br label %324

313:                                              ; preds = %303
  %314 = load ptr, ptr %12, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.Parse, ptr %314, i32 0, i32 53
  %316 = load i8, ptr %315, align 4, !tbaa !24
  %317 = icmp ne i8 %316, 0
  br i1 %317, label %318, label %323

318:                                              ; preds = %313
  %319 = load ptr, ptr %25, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 7
  %321 = load i8, ptr %320, align 1, !tbaa !11
  %322 = add i8 %321, 1
  store i8 %322, ptr %320, align 1, !tbaa !11
  br label %323

323:                                              ; preds = %318, %313
  store i32 0, ptr %42, align 4
  br label %324

324:                                              ; preds = %323, %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  %325 = load i32, ptr %42, align 4
  switch i32 %325, label %1280 [
    i32 0, label %326
    i32 2, label %1265
  ]

326:                                              ; preds = %324
  br label %327

327:                                              ; preds = %326, %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %328 = load ptr, ptr %32, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.Db, ptr %328, i32 0, i32 0
  %330 = load ptr, ptr %329, align 8, !tbaa !37
  store ptr %330, ptr %43, align 8, !tbaa !5
  %331 = load ptr, ptr %12, align 8, !tbaa !5
  %332 = load i32, ptr %33, align 4, !tbaa !9
  %333 = icmp eq i32 %332, 1
  %334 = zext i1 %333 to i64
  %335 = select i1 %333, ptr @.str.1, ptr @.str
  %336 = load ptr, ptr %43, align 8, !tbaa !5
  %337 = call i32 @sqlite3AuthCheck(ptr noundef %331, i32 noundef 18, ptr noundef %335, ptr noundef null, ptr noundef %336)
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %340

339:                                              ; preds = %327
  store i32 2, ptr %42, align 4
  br label %356

340:                                              ; preds = %327
  store i32 1, ptr %27, align 4, !tbaa !9
  %341 = load i32, ptr %33, align 4, !tbaa !9
  %342 = icmp eq i32 %341, 1
  br i1 %342, label %343, label %344

343:                                              ; preds = %340
  store i32 3, ptr %27, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %343, %340
  %345 = load ptr, ptr %12, align 8, !tbaa !5
  %346 = load i32, ptr %27, align 4, !tbaa !9
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load ptr, ptr %23, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.Table, ptr %348, i32 0, i32 0
  %350 = load ptr, ptr %349, align 8, !tbaa !32
  %351 = load ptr, ptr %43, align 8, !tbaa !5
  %352 = call i32 @sqlite3AuthCheck(ptr noundef %345, i32 noundef %346, ptr noundef %347, ptr noundef %350, ptr noundef %351)
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %355

354:                                              ; preds = %344
  store i32 2, ptr %42, align 4
  br label %356

355:                                              ; preds = %344
  store i32 0, ptr %42, align 4
  br label %356

356:                                              ; preds = %355, %354, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  %357 = load i32, ptr %42, align 4
  switch i32 %357, label %1280 [
    i32 0, label %358
    i32 2, label %1265
  ]

358:                                              ; preds = %356
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = icmp eq ptr %359, null
  br i1 %360, label %361, label %387

361:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #4
  %362 = load ptr, ptr %23, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.Table, ptr %362, i32 0, i32 1
  %364 = load ptr, ptr %363, align 8, !tbaa !43
  %365 = load ptr, ptr %23, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.Table, ptr %365, i32 0, i32 11
  %367 = load i16, ptr %366, align 2, !tbaa !44
  %368 = sext i16 %367 to i32
  %369 = sub nsw i32 %368, 1
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds %struct.Column, ptr %364, i64 %370
  %372 = getelementptr inbounds %struct.Column, ptr %371, i32 0, i32 0
  %373 = load ptr, ptr %372, align 8, !tbaa !45
  call void @sqlite3TokenInit(ptr noundef %44, ptr noundef %373)
  %374 = load ptr, ptr %12, align 8, !tbaa !5
  %375 = load ptr, ptr %31, align 8, !tbaa !5
  %376 = call ptr @sqlite3ExprAlloc(ptr noundef %375, i32 noundef 55, ptr noundef %44, i32 noundef 0)
  %377 = call ptr @sqlite3ExprListAppend(ptr noundef %374, ptr noundef null, ptr noundef %376)
  store ptr %377, ptr %16, align 8, !tbaa !5
  %378 = load ptr, ptr %16, align 8, !tbaa !5
  %379 = icmp eq ptr %378, null
  br i1 %379, label %380, label %381

380:                                              ; preds = %361
  store i32 2, ptr %42, align 4
  br label %384

381:                                              ; preds = %361
  %382 = load ptr, ptr %16, align 8, !tbaa !5
  %383 = load i32, ptr %20, align 4, !tbaa !9
  call void @sqlite3ExprListSetSortOrder(ptr noundef %382, i32 noundef %383)
  store i32 0, ptr %42, align 4
  br label %384

384:                                              ; preds = %381, %380
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #4
  %385 = load i32, ptr %42, align 4
  switch i32 %385, label %1280 [
    i32 0, label %386
    i32 2, label %1265
  ]

386:                                              ; preds = %384
  br label %390

387:                                              ; preds = %358
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  %389 = load ptr, ptr %16, align 8, !tbaa !5
  call void @sqlite3ExprListCheckLength(ptr noundef %388, ptr noundef %389, ptr noundef @.str.45)
  br label %390

390:                                              ; preds = %387, %386
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %420, %390
  %392 = load i32, ptr %27, align 4, !tbaa !9
  %393 = load ptr, ptr %16, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.ExprList, ptr %393, i32 0, i32 0
  %395 = load i32, ptr %394, align 8, !tbaa !47
  %396 = icmp slt i32 %392, %395
  br i1 %396, label %397, label %423

397:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  %398 = load ptr, ptr %16, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ExprList, ptr %398, i32 0, i32 1
  %400 = load ptr, ptr %399, align 8, !tbaa !49
  %401 = load i32, ptr %27, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.ExprList_item, ptr %400, i64 %402
  %404 = getelementptr inbounds %struct.ExprList_item, ptr %403, i32 0, i32 0
  %405 = load ptr, ptr %404, align 8, !tbaa !50
  store ptr %405, ptr %45, align 8, !tbaa !5
  %406 = load ptr, ptr %45, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.Expr, ptr %406, i32 0, i32 0
  %408 = load i8, ptr %407, align 8, !tbaa !52
  %409 = zext i8 %408 to i32
  %410 = icmp eq i32 %409, 53
  br i1 %410, label %411, label %419

411:                                              ; preds = %397
  %412 = load ptr, ptr %45, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.Expr, ptr %412, i32 0, i32 3
  %414 = load ptr, ptr %413, align 8, !tbaa !11
  %415 = call i32 @sqlite3Strlen30(ptr noundef %414)
  %416 = add nsw i32 1, %415
  %417 = load i32, ptr %36, align 4, !tbaa !9
  %418 = add nsw i32 %417, %416
  store i32 %418, ptr %36, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %411, %397
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  br label %420

420:                                              ; preds = %419
  %421 = load i32, ptr %27, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %27, align 4, !tbaa !9
  br label %391, !llvm.loop !54

423:                                              ; preds = %391
  %424 = load ptr, ptr %25, align 8, !tbaa !5
  %425 = call i32 @sqlite3Strlen30(ptr noundef %424)
  store i32 %425, ptr %26, align 4, !tbaa !9
  %426 = load ptr, ptr %39, align 8, !tbaa !5
  %427 = icmp ne ptr %426, null
  br i1 %427, label %428, label %433

428:                                              ; preds = %423
  %429 = load ptr, ptr %39, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.Index, ptr %429, i32 0, i32 13
  %431 = load i16, ptr %430, align 2, !tbaa !55
  %432 = zext i16 %431 to i32
  br label %434

433:                                              ; preds = %423
  br label %434

434:                                              ; preds = %433, %428
  %435 = phi i32 [ %432, %428 ], [ 1, %433 ]
  store i32 %435, ptr %37, align 4, !tbaa !9
  %436 = load ptr, ptr %31, align 8, !tbaa !5
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.ExprList, ptr %437, i32 0, i32 0
  %439 = load i32, ptr %438, align 8, !tbaa !47
  %440 = load i32, ptr %37, align 4, !tbaa !9
  %441 = add nsw i32 %439, %440
  %442 = trunc i32 %441 to i16
  %443 = load i32, ptr %26, align 4, !tbaa !9
  %444 = load i32, ptr %36, align 4, !tbaa !9
  %445 = add nsw i32 %443, %444
  %446 = add nsw i32 %445, 1
  %447 = call ptr @sqlite3AllocateIndexObject(ptr noundef %436, i16 noundef signext %442, i32 noundef %446, ptr noundef %38)
  store ptr %447, ptr %24, align 8, !tbaa !5
  %448 = load ptr, ptr %31, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.sqlite3, ptr %448, i32 0, i32 17
  %450 = load i8, ptr %449, align 1, !tbaa !16
  %451 = icmp ne i8 %450, 0
  br i1 %451, label %452, label %453

452:                                              ; preds = %434
  br label %1265

453:                                              ; preds = %434
  %454 = load ptr, ptr %38, align 8, !tbaa !5
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.Index, ptr %455, i32 0, i32 0
  store ptr %454, ptr %456, align 8, !tbaa !56
  %457 = load i32, ptr %26, align 4, !tbaa !9
  %458 = add nsw i32 %457, 1
  %459 = load ptr, ptr %38, align 8, !tbaa !5
  %460 = sext i32 %458 to i64
  %461 = getelementptr inbounds i8, ptr %459, i64 %460
  store ptr %461, ptr %38, align 8, !tbaa !5
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.Index, ptr %462, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !56
  %465 = load ptr, ptr %25, align 8, !tbaa !5
  %466 = load i32, ptr %26, align 4, !tbaa !9
  %467 = add nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %464, ptr align 1 %465, i64 %468, i1 false)
  %469 = load ptr, ptr %23, align 8, !tbaa !5
  %470 = load ptr, ptr %24, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.Index, ptr %470, i32 0, i32 3
  store ptr %469, ptr %471, align 8, !tbaa !57
  %472 = load i32, ptr %17, align 4, !tbaa !9
  %473 = trunc i32 %472 to i8
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.Index, ptr %474, i32 0, i32 15
  store i8 %473, ptr %475, align 2, !tbaa !58
  %476 = load i32, ptr %17, align 4, !tbaa !9
  %477 = icmp ne i32 %476, 0
  %478 = zext i1 %477 to i32
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.Index, ptr %479, i32 0, i32 16
  %481 = trunc i32 %478 to i8
  %482 = load i8, ptr %480, align 1
  %483 = and i8 %481, 1
  %484 = shl i8 %483, 3
  %485 = and i8 %482, -9
  %486 = or i8 %485, %484
  store i8 %486, ptr %480, align 1
  %487 = zext i8 %483 to i32
  %488 = load i8, ptr %22, align 1, !tbaa !11
  %489 = zext i8 %488 to i32
  %490 = load ptr, ptr %24, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.Index, ptr %490, i32 0, i32 16
  %492 = trunc i32 %489 to i8
  %493 = load i8, ptr %491, align 1
  %494 = and i8 %492, 3
  %495 = and i8 %493, -4
  %496 = or i8 %495, %494
  store i8 %496, ptr %491, align 1
  %497 = zext i8 %494 to i32
  %498 = load ptr, ptr %31, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.sqlite3, ptr %498, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !29
  %501 = load i32, ptr %33, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.Db, ptr %500, i64 %502
  %504 = getelementptr inbounds %struct.Db, ptr %503, i32 0, i32 4
  %505 = load ptr, ptr %504, align 8, !tbaa !30
  %506 = load ptr, ptr %24, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.Index, ptr %506, i32 0, i32 6
  store ptr %505, ptr %507, align 8, !tbaa !59
  %508 = load ptr, ptr %16, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ExprList, ptr %508, i32 0, i32 0
  %510 = load i32, ptr %509, align 8, !tbaa !47
  %511 = trunc i32 %510 to i16
  %512 = load ptr, ptr %24, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.Index, ptr %512, i32 0, i32 13
  store i16 %511, ptr %513, align 2, !tbaa !55
  %514 = load ptr, ptr %19, align 8, !tbaa !5
  %515 = icmp ne ptr %514, null
  br i1 %515, label %516, label %523

516:                                              ; preds = %453
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  %518 = load ptr, ptr %23, align 8, !tbaa !5
  %519 = load ptr, ptr %19, align 8, !tbaa !5
  call void @sqlite3ResolveSelfReference(ptr noundef %517, ptr noundef %518, i32 noundef 2, ptr noundef %519, ptr noundef null)
  %520 = load ptr, ptr %19, align 8, !tbaa !5
  %521 = load ptr, ptr %24, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.Index, ptr %521, i32 0, i32 9
  store ptr %520, ptr %522, align 8, !tbaa !60
  store ptr null, ptr %19, align 8, !tbaa !5
  br label %523

523:                                              ; preds = %516, %453
  %524 = load ptr, ptr %32, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.Db, ptr %524, i32 0, i32 4
  %526 = load ptr, ptr %525, align 8, !tbaa !30
  %527 = getelementptr inbounds %struct.Schema, ptr %526, i32 0, i32 7
  %528 = load i8, ptr %527, align 8, !tbaa !61
  %529 = zext i8 %528 to i32
  %530 = icmp sge i32 %529, 4
  br i1 %530, label %531, label %532

531:                                              ; preds = %523
  store i32 -1, ptr %30, align 4, !tbaa !9
  br label %533

532:                                              ; preds = %523
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %532, %531
  store i32 0, ptr %27, align 4, !tbaa !9
  %534 = load ptr, ptr %16, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ExprList, ptr %534, i32 0, i32 1
  %536 = load ptr, ptr %535, align 8, !tbaa !49
  store ptr %536, ptr %35, align 8, !tbaa !5
  br label %537

537:                                              ; preds = %733, %533
  %538 = load i32, ptr %27, align 4, !tbaa !9
  %539 = load ptr, ptr %16, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ExprList, ptr %539, i32 0, i32 0
  %541 = load i32, ptr %540, align 8, !tbaa !47
  %542 = icmp slt i32 %538, %541
  br i1 %542, label %543, label %738

543:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  %544 = load ptr, ptr %35, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.ExprList_item, ptr %544, i32 0, i32 0
  %546 = load ptr, ptr %545, align 8, !tbaa !50
  call void @sqlite3StringToId(ptr noundef %546)
  %547 = load ptr, ptr %12, align 8, !tbaa !5
  %548 = load ptr, ptr %23, align 8, !tbaa !5
  %549 = load ptr, ptr %35, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ExprList_item, ptr %549, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8, !tbaa !50
  call void @sqlite3ResolveSelfReference(ptr noundef %547, ptr noundef %548, i32 noundef 32, ptr noundef %551, ptr noundef null)
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.Parse, ptr %552, i32 0, i32 16
  %554 = load i32, ptr %553, align 8, !tbaa !23
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %557

556:                                              ; preds = %543
  store i32 2, ptr %42, align 4
  br label %730

557:                                              ; preds = %543
  %558 = load ptr, ptr %35, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ExprList_item, ptr %558, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !50
  %561 = call ptr @sqlite3ExprSkipCollate(ptr noundef %560)
  store ptr %561, ptr %46, align 8, !tbaa !5
  %562 = load ptr, ptr %46, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.Expr, ptr %562, i32 0, i32 0
  %564 = load i8, ptr %563, align 8, !tbaa !52
  %565 = zext i8 %564 to i32
  %566 = icmp ne i32 %565, 152
  br i1 %566, label %567, label %611

567:                                              ; preds = %557
  %568 = load ptr, ptr %23, align 8, !tbaa !5
  %569 = load ptr, ptr %12, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.Parse, ptr %569, i32 0, i32 61
  %571 = load ptr, ptr %570, align 8, !tbaa !34
  %572 = icmp eq ptr %568, %571
  br i1 %572, label %573, label %575

573:                                              ; preds = %567
  %574 = load ptr, ptr %12, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %574, ptr noundef @.str.54)
  store i32 2, ptr %42, align 4
  br label %730

575:                                              ; preds = %567
  %576 = load ptr, ptr %24, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.Index, ptr %576, i32 0, i32 10
  %578 = load ptr, ptr %577, align 8, !tbaa !63
  %579 = icmp eq ptr %578, null
  br i1 %579, label %580, label %599

580:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = load ptr, ptr %16, align 8, !tbaa !5
  %583 = call ptr @sqlite3ExprListDup(ptr noundef %581, ptr noundef %582, i32 noundef 0)
  store ptr %583, ptr %49, align 8, !tbaa !5
  %584 = load ptr, ptr %49, align 8, !tbaa !5
  %585 = load ptr, ptr %24, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.Index, ptr %585, i32 0, i32 10
  store ptr %584, ptr %586, align 8, !tbaa !63
  %587 = load ptr, ptr %31, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.sqlite3, ptr %587, i32 0, i32 17
  %589 = load i8, ptr %588, align 1, !tbaa !16
  %590 = icmp ne i8 %589, 0
  br i1 %590, label %598, label %591

591:                                              ; preds = %580
  %592 = load ptr, ptr %49, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ExprList, ptr %592, i32 0, i32 1
  %594 = load ptr, ptr %593, align 8, !tbaa !49
  %595 = load i32, ptr %27, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct.ExprList_item, ptr %594, i64 %596
  store ptr %597, ptr %35, align 8, !tbaa !5
  br label %598

598:                                              ; preds = %591, %580
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  br label %599

599:                                              ; preds = %598, %575
  store i32 -2, ptr %28, align 4, !tbaa !9
  %600 = load ptr, ptr %24, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.Index, ptr %600, i32 0, i32 1
  %602 = load ptr, ptr %601, align 8, !tbaa !64
  %603 = load i32, ptr %27, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i16, ptr %602, i64 %604
  store i16 -2, ptr %605, align 2, !tbaa !65
  %606 = load ptr, ptr %24, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.Index, ptr %606, i32 0, i32 16
  %608 = load i8, ptr %607, align 1
  %609 = and i8 %608, -9
  %610 = or i8 %609, 0
  store i8 %610, ptr %607, align 1
  br label %650

611:                                              ; preds = %557
  %612 = load ptr, ptr %46, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.Expr, ptr %612, i32 0, i32 9
  %614 = load i16, ptr %613, align 8, !tbaa !66
  %615 = sext i16 %614 to i32
  store i32 %615, ptr %28, align 4, !tbaa !9
  %616 = load i32, ptr %28, align 4, !tbaa !9
  %617 = icmp slt i32 %616, 0
  br i1 %617, label %618, label %623

618:                                              ; preds = %611
  %619 = load ptr, ptr %23, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.Table, ptr %619, i32 0, i32 10
  %621 = load i16, ptr %620, align 4, !tbaa !67
  %622 = sext i16 %621 to i32
  store i32 %622, ptr %28, align 4, !tbaa !9
  br label %641

623:                                              ; preds = %611
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.Table, ptr %624, i32 0, i32 1
  %626 = load ptr, ptr %625, align 8, !tbaa !43
  %627 = load i32, ptr %28, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct.Column, ptr %626, i64 %628
  %630 = getelementptr inbounds %struct.Column, ptr %629, i32 0, i32 3
  %631 = load i8, ptr %630, align 8, !tbaa !68
  %632 = zext i8 %631 to i32
  %633 = icmp eq i32 %632, 0
  br i1 %633, label %634, label %640

634:                                              ; preds = %623
  %635 = load ptr, ptr %24, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.Index, ptr %635, i32 0, i32 16
  %637 = load i8, ptr %636, align 1
  %638 = and i8 %637, -9
  %639 = or i8 %638, 0
  store i8 %639, ptr %636, align 1
  br label %640

640:                                              ; preds = %634, %623
  br label %641

641:                                              ; preds = %640, %618
  %642 = load i32, ptr %28, align 4, !tbaa !9
  %643 = trunc i32 %642 to i16
  %644 = load ptr, ptr %24, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.Index, ptr %644, i32 0, i32 1
  %646 = load ptr, ptr %645, align 8, !tbaa !64
  %647 = load i32, ptr %27, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds i16, ptr %646, i64 %648
  store i16 %643, ptr %649, align 2, !tbaa !65
  br label %650

650:                                              ; preds = %641, %599
  store ptr null, ptr %48, align 8, !tbaa !5
  %651 = load ptr, ptr %35, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.ExprList_item, ptr %651, i32 0, i32 0
  %653 = load ptr, ptr %652, align 8, !tbaa !50
  %654 = getelementptr inbounds %struct.Expr, ptr %653, i32 0, i32 0
  %655 = load i8, ptr %654, align 8, !tbaa !52
  %656 = zext i8 %655 to i32
  %657 = icmp eq i32 %656, 53
  br i1 %657, label %658, label %679

658:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  %659 = load ptr, ptr %35, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ExprList_item, ptr %659, i32 0, i32 0
  %661 = load ptr, ptr %660, align 8, !tbaa !50
  %662 = getelementptr inbounds %struct.Expr, ptr %661, i32 0, i32 3
  %663 = load ptr, ptr %662, align 8, !tbaa !11
  store ptr %663, ptr %48, align 8, !tbaa !5
  %664 = load ptr, ptr %48, align 8, !tbaa !5
  %665 = call i32 @sqlite3Strlen30(ptr noundef %664)
  %666 = add nsw i32 %665, 1
  store i32 %666, ptr %50, align 4, !tbaa !9
  %667 = load ptr, ptr %38, align 8, !tbaa !5
  %668 = load ptr, ptr %48, align 8, !tbaa !5
  %669 = load i32, ptr %50, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %667, ptr align 1 %668, i64 %670, i1 false)
  %671 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %671, ptr %48, align 8, !tbaa !5
  %672 = load i32, ptr %50, align 4, !tbaa !9
  %673 = load ptr, ptr %38, align 8, !tbaa !5
  %674 = sext i32 %672 to i64
  %675 = getelementptr inbounds i8, ptr %673, i64 %674
  store ptr %675, ptr %38, align 8, !tbaa !5
  %676 = load i32, ptr %50, align 4, !tbaa !9
  %677 = load i32, ptr %36, align 4, !tbaa !9
  %678 = sub nsw i32 %677, %676
  store i32 %678, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  br label %692

679:                                              ; preds = %650
  %680 = load i32, ptr %28, align 4, !tbaa !9
  %681 = icmp sge i32 %680, 0
  br i1 %681, label %682, label %691

682:                                              ; preds = %679
  %683 = load ptr, ptr %23, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.Table, ptr %683, i32 0, i32 1
  %685 = load ptr, ptr %684, align 8, !tbaa !43
  %686 = load i32, ptr %28, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.Column, ptr %685, i64 %687
  %689 = getelementptr inbounds %struct.Column, ptr %688, i32 0, i32 2
  %690 = load ptr, ptr %689, align 8, !tbaa !69
  store ptr %690, ptr %48, align 8, !tbaa !5
  br label %691

691:                                              ; preds = %682, %679
  br label %692

692:                                              ; preds = %691, %658
  %693 = load ptr, ptr %48, align 8, !tbaa !5
  %694 = icmp ne ptr %693, null
  br i1 %694, label %696, label %695

695:                                              ; preds = %692
  store ptr @sqlite3StrBINARY, ptr %48, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %695, %692
  %697 = load ptr, ptr %31, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.sqlite3, ptr %697, i32 0, i32 33
  %699 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %698, i32 0, i32 2
  %700 = load i8, ptr %699, align 1, !tbaa !25
  %701 = icmp ne i8 %700, 0
  br i1 %701, label %708, label %702

702:                                              ; preds = %696
  %703 = load ptr, ptr %12, align 8, !tbaa !5
  %704 = load ptr, ptr %48, align 8, !tbaa !5
  %705 = call ptr @sqlite3LocateCollSeq(ptr noundef %703, ptr noundef %704)
  %706 = icmp ne ptr %705, null
  br i1 %706, label %708, label %707

707:                                              ; preds = %702
  store i32 2, ptr %42, align 4
  br label %730

708:                                              ; preds = %702, %696
  %709 = load ptr, ptr %48, align 8, !tbaa !5
  %710 = load ptr, ptr %24, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.Index, ptr %710, i32 0, i32 8
  %712 = load ptr, ptr %711, align 8, !tbaa !70
  %713 = load i32, ptr %27, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds ptr, ptr %712, i64 %714
  store ptr %709, ptr %715, align 8, !tbaa !5
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.ExprList_item, ptr %716, i32 0, i32 3
  %718 = load i8, ptr %717, align 8, !tbaa !71
  %719 = zext i8 %718 to i32
  %720 = load i32, ptr %30, align 4, !tbaa !9
  %721 = and i32 %719, %720
  store i32 %721, ptr %47, align 4, !tbaa !9
  %722 = load i32, ptr %47, align 4, !tbaa !9
  %723 = trunc i32 %722 to i8
  %724 = load ptr, ptr %24, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.Index, ptr %724, i32 0, i32 7
  %726 = load ptr, ptr %725, align 8, !tbaa !72
  %727 = load i32, ptr %27, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds i8, ptr %726, i64 %728
  store i8 %723, ptr %729, align 1, !tbaa !11
  store i32 0, ptr %42, align 4
  br label %730

730:                                              ; preds = %708, %707, %573, %556
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  %731 = load i32, ptr %42, align 4
  switch i32 %731, label %1280 [
    i32 0, label %732
    i32 2, label %1265
  ]

732:                                              ; preds = %730
  br label %733

733:                                              ; preds = %732
  %734 = load i32, ptr %27, align 4, !tbaa !9
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %27, align 4, !tbaa !9
  %736 = load ptr, ptr %35, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ExprList_item, ptr %736, i32 1
  store ptr %737, ptr %35, align 8, !tbaa !5
  br label %537, !llvm.loop !73

738:                                              ; preds = %537
  %739 = load ptr, ptr %39, align 8, !tbaa !5
  %740 = icmp ne ptr %739, null
  br i1 %740, label %741, label %815

741:                                              ; preds = %738
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %742

742:                                              ; preds = %811, %741
  %743 = load i32, ptr %28, align 4, !tbaa !9
  %744 = load ptr, ptr %39, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.Index, ptr %744, i32 0, i32 13
  %746 = load i16, ptr %745, align 2, !tbaa !55
  %747 = zext i16 %746 to i32
  %748 = icmp slt i32 %743, %747
  br i1 %748, label %749, label %814

749:                                              ; preds = %742
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  %750 = load ptr, ptr %39, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.Index, ptr %750, i32 0, i32 1
  %752 = load ptr, ptr %751, align 8, !tbaa !64
  %753 = load i32, ptr %28, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i16, ptr %752, i64 %754
  %756 = load i16, ptr %755, align 2, !tbaa !65
  %757 = sext i16 %756 to i32
  store i32 %757, ptr %51, align 4, !tbaa !9
  %758 = load ptr, ptr %24, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.Index, ptr %758, i32 0, i32 1
  %760 = load ptr, ptr %759, align 8, !tbaa !64
  %761 = load ptr, ptr %24, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.Index, ptr %761, i32 0, i32 13
  %763 = load i16, ptr %762, align 2, !tbaa !55
  %764 = zext i16 %763 to i32
  %765 = load i32, ptr %51, align 4, !tbaa !9
  %766 = call i32 @hasColumn(ptr noundef %760, i32 noundef %764, i32 noundef %765)
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %773

768:                                              ; preds = %749
  %769 = load ptr, ptr %24, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.Index, ptr %769, i32 0, i32 14
  %771 = load i16, ptr %770, align 8, !tbaa !74
  %772 = add i16 %771, -1
  store i16 %772, ptr %770, align 8, !tbaa !74
  br label %810

773:                                              ; preds = %749
  %774 = load i32, ptr %51, align 4, !tbaa !9
  %775 = trunc i32 %774 to i16
  %776 = load ptr, ptr %24, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.Index, ptr %776, i32 0, i32 1
  %778 = load ptr, ptr %777, align 8, !tbaa !64
  %779 = load i32, ptr %27, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds i16, ptr %778, i64 %780
  store i16 %775, ptr %781, align 2, !tbaa !65
  %782 = load ptr, ptr %39, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.Index, ptr %782, i32 0, i32 8
  %784 = load ptr, ptr %783, align 8, !tbaa !70
  %785 = load i32, ptr %28, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds ptr, ptr %784, i64 %786
  %788 = load ptr, ptr %787, align 8, !tbaa !5
  %789 = load ptr, ptr %24, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.Index, ptr %789, i32 0, i32 8
  %791 = load ptr, ptr %790, align 8, !tbaa !70
  %792 = load i32, ptr %27, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds ptr, ptr %791, i64 %793
  store ptr %788, ptr %794, align 8, !tbaa !5
  %795 = load ptr, ptr %39, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.Index, ptr %795, i32 0, i32 7
  %797 = load ptr, ptr %796, align 8, !tbaa !72
  %798 = load i32, ptr %28, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds i8, ptr %797, i64 %799
  %801 = load i8, ptr %800, align 1, !tbaa !11
  %802 = load ptr, ptr %24, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.Index, ptr %802, i32 0, i32 7
  %804 = load ptr, ptr %803, align 8, !tbaa !72
  %805 = load i32, ptr %27, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds i8, ptr %804, i64 %806
  store i8 %801, ptr %807, align 1, !tbaa !11
  %808 = load i32, ptr %27, align 4, !tbaa !9
  %809 = add nsw i32 %808, 1
  store i32 %809, ptr %27, align 4, !tbaa !9
  br label %810

810:                                              ; preds = %773, %768
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  br label %811

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

814:                                              ; preds = %742
  br label %828

815:                                              ; preds = %738
  %816 = load ptr, ptr %24, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.Index, ptr %816, i32 0, i32 1
  %818 = load ptr, ptr %817, align 8, !tbaa !64
  %819 = load i32, ptr %27, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i16, ptr %818, i64 %820
  store i16 -1, ptr %821, align 2, !tbaa !65
  %822 = load ptr, ptr %24, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.Index, ptr %822, i32 0, i32 8
  %824 = load ptr, ptr %823, align 8, !tbaa !70
  %825 = load i32, ptr %27, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds ptr, ptr %824, i64 %826
  store ptr @sqlite3StrBINARY, ptr %827, align 8, !tbaa !5
  br label %828

828:                                              ; preds = %815, %814
  %829 = load ptr, ptr %24, align 8, !tbaa !5
  call void @sqlite3DefaultRowEst(ptr noundef %829)
  %830 = load ptr, ptr %12, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.Parse, ptr %830, i32 0, i32 61
  %832 = load ptr, ptr %831, align 8, !tbaa !34
  %833 = icmp eq ptr %832, null
  br i1 %833, label %834, label %836

834:                                              ; preds = %828
  %835 = load ptr, ptr %24, align 8, !tbaa !5
  call void @estimateIndexWidth(ptr noundef %835)
  br label %836

836:                                              ; preds = %834, %828
  %837 = load ptr, ptr %15, align 8, !tbaa !5
  %838 = icmp ne ptr %837, null
  br i1 %838, label %839, label %888

839:                                              ; preds = %836
  %840 = load ptr, ptr %24, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.Index, ptr %840, i32 0, i32 14
  %842 = load i16, ptr %841, align 8, !tbaa !74
  %843 = zext i16 %842 to i32
  %844 = load ptr, ptr %23, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.Table, ptr %844, i32 0, i32 11
  %846 = load i16, ptr %845, align 2, !tbaa !44
  %847 = sext i16 %846 to i32
  %848 = icmp sge i32 %843, %847
  br i1 %848, label %849, label %888

849:                                              ; preds = %839
  %850 = load ptr, ptr %24, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.Index, ptr %850, i32 0, i32 16
  %852 = load i8, ptr %851, align 1
  %853 = and i8 %852, -33
  %854 = or i8 %853, 32
  store i8 %854, ptr %851, align 1
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %855

855:                                              ; preds = %884, %849
  %856 = load i32, ptr %28, align 4, !tbaa !9
  %857 = load ptr, ptr %23, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.Table, ptr %857, i32 0, i32 11
  %859 = load i16, ptr %858, align 2, !tbaa !44
  %860 = sext i16 %859 to i32
  %861 = icmp slt i32 %856, %860
  br i1 %861, label %862, label %887

862:                                              ; preds = %855
  %863 = load i32, ptr %28, align 4, !tbaa !9
  %864 = load ptr, ptr %23, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.Table, ptr %864, i32 0, i32 10
  %866 = load i16, ptr %865, align 4, !tbaa !67
  %867 = sext i16 %866 to i32
  %868 = icmp eq i32 %863, %867
  br i1 %868, label %869, label %870

869:                                              ; preds = %862
  br label %884

870:                                              ; preds = %862
  %871 = load ptr, ptr %24, align 8, !tbaa !5
  %872 = load i32, ptr %28, align 4, !tbaa !9
  %873 = trunc i32 %872 to i16
  %874 = call signext i16 @sqlite3ColumnOfIndex(ptr noundef %871, i16 noundef signext %873)
  %875 = sext i16 %874 to i32
  %876 = icmp sge i32 %875, 0
  br i1 %876, label %877, label %878

877:                                              ; preds = %870
  br label %884

878:                                              ; preds = %870
  %879 = load ptr, ptr %24, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.Index, ptr %879, i32 0, i32 16
  %881 = load i8, ptr %880, align 1
  %882 = and i8 %881, -33
  %883 = or i8 %882, 0
  store i8 %883, ptr %880, align 1
  br label %887

884:                                              ; preds = %877, %869
  %885 = load i32, ptr %28, align 4, !tbaa !9
  %886 = add nsw i32 %885, 1
  store i32 %886, ptr %28, align 4, !tbaa !9
  br label %855, !llvm.loop !76

887:                                              ; preds = %878, %855
  br label %888

888:                                              ; preds = %887, %839, %836
  %889 = load ptr, ptr %23, align 8, !tbaa !5
  %890 = load ptr, ptr %12, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.Parse, ptr %890, i32 0, i32 61
  %892 = load ptr, ptr %891, align 8, !tbaa !34
  %893 = icmp eq ptr %889, %892
  br i1 %893, label %894, label %1038

894:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  %895 = load ptr, ptr %23, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.Table, ptr %895, i32 0, i32 2
  %897 = load ptr, ptr %896, align 8, !tbaa !38
  store ptr %897, ptr %52, align 8, !tbaa !5
  br label %898

898:                                              ; preds = %1030, %894
  %899 = load ptr, ptr %52, align 8, !tbaa !5
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %1034

901:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  %902 = load ptr, ptr %52, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.Index, ptr %902, i32 0, i32 13
  %904 = load i16, ptr %903, align 2, !tbaa !55
  %905 = zext i16 %904 to i32
  %906 = load ptr, ptr %24, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.Index, ptr %906, i32 0, i32 13
  %908 = load i16, ptr %907, align 2, !tbaa !55
  %909 = zext i16 %908 to i32
  %910 = icmp ne i32 %905, %909
  br i1 %910, label %911, label %912

911:                                              ; preds = %901
  store i32 20, ptr %42, align 4
  br label %1027

912:                                              ; preds = %901
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %913

913:                                              ; preds = %963, %912
  %914 = load i32, ptr %53, align 4, !tbaa !9
  %915 = load ptr, ptr %52, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.Index, ptr %915, i32 0, i32 13
  %917 = load i16, ptr %916, align 2, !tbaa !55
  %918 = zext i16 %917 to i32
  %919 = icmp slt i32 %914, %918
  br i1 %919, label %920, label %966

920:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  %921 = load ptr, ptr %52, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.Index, ptr %921, i32 0, i32 1
  %923 = load ptr, ptr %922, align 8, !tbaa !64
  %924 = load i32, ptr %53, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i16, ptr %923, i64 %925
  %927 = load i16, ptr %926, align 2, !tbaa !65
  %928 = sext i16 %927 to i32
  %929 = load ptr, ptr %24, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.Index, ptr %929, i32 0, i32 1
  %931 = load ptr, ptr %930, align 8, !tbaa !64
  %932 = load i32, ptr %53, align 4, !tbaa !9
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds i16, ptr %931, i64 %933
  %935 = load i16, ptr %934, align 2, !tbaa !65
  %936 = sext i16 %935 to i32
  %937 = icmp ne i32 %928, %936
  br i1 %937, label %938, label %939

938:                                              ; preds = %920
  store i32 21, ptr %42, align 4
  br label %960

939:                                              ; preds = %920
  %940 = load ptr, ptr %52, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.Index, ptr %940, i32 0, i32 8
  %942 = load ptr, ptr %941, align 8, !tbaa !70
  %943 = load i32, ptr %53, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds ptr, ptr %942, i64 %944
  %946 = load ptr, ptr %945, align 8, !tbaa !5
  store ptr %946, ptr %54, align 8, !tbaa !5
  %947 = load ptr, ptr %24, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.Index, ptr %947, i32 0, i32 8
  %949 = load ptr, ptr %948, align 8, !tbaa !70
  %950 = load i32, ptr %53, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds ptr, ptr %949, i64 %951
  %953 = load ptr, ptr %952, align 8, !tbaa !5
  store ptr %953, ptr %55, align 8, !tbaa !5
  %954 = load ptr, ptr %54, align 8, !tbaa !5
  %955 = load ptr, ptr %55, align 8, !tbaa !5
  %956 = call i32 @sqlite3StrICmp(ptr noundef %954, ptr noundef %955)
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %959

958:                                              ; preds = %939
  store i32 21, ptr %42, align 4
  br label %960

959:                                              ; preds = %939
  store i32 0, ptr %42, align 4
  br label %960

960:                                              ; preds = %959, %958, %938
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  %961 = load i32, ptr %42, align 4
  switch i32 %961, label %1280 [
    i32 0, label %962
    i32 21, label %966
  ]

962:                                              ; preds = %960
  br label %963

963:                                              ; preds = %962
  %964 = load i32, ptr %53, align 4, !tbaa !9
  %965 = add nsw i32 %964, 1
  store i32 %965, ptr %53, align 4, !tbaa !9
  br label %913, !llvm.loop !77

966:                                              ; preds = %960, %913
  %967 = load i32, ptr %53, align 4, !tbaa !9
  %968 = load ptr, ptr %52, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.Index, ptr %968, i32 0, i32 13
  %970 = load i16, ptr %969, align 2, !tbaa !55
  %971 = zext i16 %970 to i32
  %972 = icmp eq i32 %967, %971
  br i1 %972, label %973, label %1026

973:                                              ; preds = %966
  %974 = load ptr, ptr %52, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.Index, ptr %974, i32 0, i32 15
  %976 = load i8, ptr %975, align 2, !tbaa !58
  %977 = zext i8 %976 to i32
  %978 = load ptr, ptr %24, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.Index, ptr %978, i32 0, i32 15
  %980 = load i8, ptr %979, align 2, !tbaa !58
  %981 = zext i8 %980 to i32
  %982 = icmp ne i32 %977, %981
  br i1 %982, label %983, label %1010

983:                                              ; preds = %973
  %984 = load ptr, ptr %52, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.Index, ptr %984, i32 0, i32 15
  %986 = load i8, ptr %985, align 2, !tbaa !58
  %987 = zext i8 %986 to i32
  %988 = icmp eq i32 %987, 10
  br i1 %988, label %997, label %989

989:                                              ; preds = %983
  %990 = load ptr, ptr %24, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.Index, ptr %990, i32 0, i32 15
  %992 = load i8, ptr %991, align 2, !tbaa !58
  %993 = zext i8 %992 to i32
  %994 = icmp eq i32 %993, 10
  br i1 %994, label %997, label %995

995:                                              ; preds = %989
  %996 = load ptr, ptr %12, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef %996, ptr noundef @.str.55, i32 noundef 0)
  br label %997

997:                                              ; preds = %995, %989, %983
  %998 = load ptr, ptr %52, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.Index, ptr %998, i32 0, i32 15
  %1000 = load i8, ptr %999, align 2, !tbaa !58
  %1001 = zext i8 %1000 to i32
  %1002 = icmp eq i32 %1001, 10
  br i1 %1002, label %1003, label %1009

1003:                                             ; preds = %997
  %1004 = load ptr, ptr %24, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.Index, ptr %1004, i32 0, i32 15
  %1006 = load i8, ptr %1005, align 2, !tbaa !58
  %1007 = load ptr, ptr %52, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.Index, ptr %1007, i32 0, i32 15
  store i8 %1006, ptr %1008, align 2, !tbaa !58
  br label %1009

1009:                                             ; preds = %1003, %997
  br label %1010

1010:                                             ; preds = %1009, %973
  %1011 = load i8, ptr %22, align 1, !tbaa !11
  %1012 = zext i8 %1011 to i32
  %1013 = icmp eq i32 %1012, 2
  br i1 %1013, label %1014, label %1025

1014:                                             ; preds = %1010
  %1015 = load i8, ptr %22, align 1, !tbaa !11
  %1016 = zext i8 %1015 to i32
  %1017 = load ptr, ptr %52, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.Index, ptr %1017, i32 0, i32 16
  %1019 = trunc i32 %1016 to i8
  %1020 = load i8, ptr %1018, align 1
  %1021 = and i8 %1019, 3
  %1022 = and i8 %1020, -4
  %1023 = or i8 %1022, %1021
  store i8 %1023, ptr %1018, align 1
  %1024 = zext i8 %1021 to i32
  br label %1025

1025:                                             ; preds = %1014, %1010
  store i32 2, ptr %42, align 4
  br label %1027

1026:                                             ; preds = %966
  store i32 0, ptr %42, align 4
  br label %1027

1027:                                             ; preds = %1026, %1025, %911
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  %1028 = load i32, ptr %42, align 4
  switch i32 %1028, label %1035 [
    i32 0, label %1029
    i32 20, label %1030
  ]

1029:                                             ; preds = %1027
  br label %1030

1030:                                             ; preds = %1029, %1027
  %1031 = load ptr, ptr %52, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.Index, ptr %1031, i32 0, i32 5
  %1033 = load ptr, ptr %1032, align 8, !tbaa !39
  store ptr %1033, ptr %52, align 8, !tbaa !5
  br label %898, !llvm.loop !78

1034:                                             ; preds = %898
  store i32 0, ptr %42, align 4
  br label %1035

1035:                                             ; preds = %1034, %1027
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  %1036 = load i32, ptr %42, align 4
  switch i32 %1036, label %1280 [
    i32 0, label %1037
    i32 2, label %1265
  ]

1037:                                             ; preds = %1035
  br label %1038

1038:                                             ; preds = %1037, %888
  %1039 = load ptr, ptr %31, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.sqlite3, ptr %1039, i32 0, i32 33
  %1041 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %1040, i32 0, i32 2
  %1042 = load i8, ptr %1041, align 1, !tbaa !25
  %1043 = icmp ne i8 %1042, 0
  br i1 %1043, label %1044, label %1076

1044:                                             ; preds = %1038
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  %1045 = load ptr, ptr %24, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.Index, ptr %1045, i32 0, i32 6
  %1047 = load ptr, ptr %1046, align 8, !tbaa !59
  %1048 = getelementptr inbounds %struct.Schema, ptr %1047, i32 0, i32 3
  %1049 = load ptr, ptr %24, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.Index, ptr %1049, i32 0, i32 0
  %1051 = load ptr, ptr %1050, align 8, !tbaa !56
  %1052 = load ptr, ptr %24, align 8, !tbaa !5
  %1053 = call ptr @sqlite3HashInsert(ptr noundef %1048, ptr noundef %1051, ptr noundef %1052)
  store ptr %1053, ptr %56, align 8, !tbaa !5
  %1054 = load ptr, ptr %56, align 8, !tbaa !5
  %1055 = icmp ne ptr %1054, null
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1044
  %1057 = load ptr, ptr %31, align 8, !tbaa !5
  call void @sqlite3OomFault(ptr noundef %1057)
  store i32 2, ptr %42, align 4
  br label %1073

1058:                                             ; preds = %1044
  %1059 = load ptr, ptr %31, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.sqlite3, ptr %1059, i32 0, i32 6
  %1061 = load i32, ptr %1060, align 4, !tbaa !79
  %1062 = or i32 %1061, 2
  store i32 %1062, ptr %1060, align 4, !tbaa !79
  %1063 = load ptr, ptr %15, align 8, !tbaa !5
  %1064 = icmp ne ptr %1063, null
  br i1 %1064, label %1065, label %1072

1065:                                             ; preds = %1058
  %1066 = load ptr, ptr %31, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.sqlite3, ptr %1066, i32 0, i32 33
  %1068 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %1067, i32 0, i32 0
  %1069 = load i32, ptr %1068, align 4, !tbaa !80
  %1070 = load ptr, ptr %24, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.Index, ptr %1070, i32 0, i32 11
  store i32 %1069, ptr %1071, align 8, !tbaa !81
  br label %1072

1072:                                             ; preds = %1065, %1058
  store i32 0, ptr %42, align 4
  br label %1073

1073:                                             ; preds = %1072, %1056
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  %1074 = load i32, ptr %42, align 4
  switch i32 %1074, label %1280 [
    i32 0, label %1075
    i32 2, label %1265
  ]

1075:                                             ; preds = %1073
  br label %1196

1076:                                             ; preds = %1038
  %1077 = load ptr, ptr %23, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.Table, ptr %1077, i32 0, i32 9
  %1079 = load i32, ptr %1078, align 8, !tbaa !33
  %1080 = and i32 %1079, 32
  %1081 = icmp eq i32 %1080, 0
  br i1 %1081, label %1085, label %1082

1082:                                             ; preds = %1076
  %1083 = load ptr, ptr %15, align 8, !tbaa !5
  %1084 = icmp ne ptr %1083, null
  br i1 %1084, label %1085, label %1195

1085:                                             ; preds = %1082, %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  %1086 = load ptr, ptr %12, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.Parse, ptr %1086, i32 0, i32 18
  %1088 = load i32, ptr %1087, align 8, !tbaa !82
  %1089 = add nsw i32 %1088, 1
  store i32 %1089, ptr %1087, align 8, !tbaa !82
  store i32 %1089, ptr %59, align 4, !tbaa !9
  %1090 = load ptr, ptr %12, align 8, !tbaa !5
  %1091 = call ptr @sqlite3GetVdbe(ptr noundef %1090)
  store ptr %1091, ptr %57, align 8, !tbaa !5
  %1092 = load ptr, ptr %57, align 8, !tbaa !5
  %1093 = icmp eq ptr %1092, null
  br i1 %1093, label %1094, label %1095

1094:                                             ; preds = %1085
  store i32 2, ptr %42, align 4
  br label %1192

1095:                                             ; preds = %1085
  %1096 = load ptr, ptr %12, align 8, !tbaa !5
  %1097 = load i32, ptr %33, align 4, !tbaa !9
  call void @sqlite3BeginWriteOperation(ptr noundef %1096, i32 noundef 1, i32 noundef %1097)
  %1098 = load ptr, ptr %57, align 8, !tbaa !5
  %1099 = call i32 @sqlite3VdbeAddOp0(ptr noundef %1098, i32 noundef 162)
  %1100 = load ptr, ptr %24, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.Index, ptr %1100, i32 0, i32 11
  store i32 %1099, ptr %1101, align 8, !tbaa !81
  %1102 = load ptr, ptr %57, align 8, !tbaa !5
  %1103 = load i32, ptr %33, align 4, !tbaa !9
  %1104 = load i32, ptr %59, align 4, !tbaa !9
  %1105 = call i32 @sqlite3VdbeAddOp2(ptr noundef %1102, i32 noundef 134, i32 noundef %1103, i32 noundef %1104)
  %1106 = load ptr, ptr %18, align 8, !tbaa !5
  %1107 = icmp ne ptr %1106, null
  br i1 %1107, label %1108, label %1149

1108:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #4
  %1109 = load ptr, ptr %12, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.Parse, ptr %1109, i32 0, i32 49
  %1111 = getelementptr inbounds %struct.Token, ptr %1110, i32 0, i32 0
  %1112 = load ptr, ptr %1111, align 8, !tbaa !83
  %1113 = load ptr, ptr %34, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.Token, ptr %1113, i32 0, i32 0
  %1115 = load ptr, ptr %1114, align 8, !tbaa !84
  %1116 = ptrtoint ptr %1112 to i64
  %1117 = ptrtoint ptr %1115 to i64
  %1118 = sub i64 %1116, %1117
  %1119 = trunc i64 %1118 to i32
  %1120 = load ptr, ptr %12, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.Parse, ptr %1120, i32 0, i32 49
  %1122 = getelementptr inbounds %struct.Token, ptr %1121, i32 0, i32 1
  %1123 = load i32, ptr %1122, align 8, !tbaa !85
  %1124 = add i32 %1119, %1123
  store i32 %1124, ptr %60, align 4, !tbaa !9
  %1125 = load ptr, ptr %34, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.Token, ptr %1125, i32 0, i32 0
  %1127 = load ptr, ptr %1126, align 8, !tbaa !84
  %1128 = load i32, ptr %60, align 4, !tbaa !9
  %1129 = sub nsw i32 %1128, 1
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds i8, ptr %1127, i64 %1130
  %1132 = load i8, ptr %1131, align 1, !tbaa !11
  %1133 = sext i8 %1132 to i32
  %1134 = icmp eq i32 %1133, 59
  br i1 %1134, label %1135, label %1138

1135:                                             ; preds = %1108
  %1136 = load i32, ptr %60, align 4, !tbaa !9
  %1137 = add nsw i32 %1136, -1
  store i32 %1137, ptr %60, align 4, !tbaa !9
  br label %1138

1138:                                             ; preds = %1135, %1108
  %1139 = load ptr, ptr %31, align 8, !tbaa !5
  %1140 = load i32, ptr %17, align 4, !tbaa !9
  %1141 = icmp eq i32 %1140, 0
  %1142 = zext i1 %1141 to i64
  %1143 = select i1 %1141, ptr @.str.20, ptr @.str.57
  %1144 = load i32, ptr %60, align 4, !tbaa !9
  %1145 = load ptr, ptr %34, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.Token, ptr %1145, i32 0, i32 0
  %1147 = load ptr, ptr %1146, align 8, !tbaa !84
  %1148 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %1139, ptr noundef @.str.56, ptr noundef %1143, i32 noundef %1144, ptr noundef %1147)
  store ptr %1148, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  br label %1150

1149:                                             ; preds = %1095
  store ptr null, ptr %58, align 8, !tbaa !5
  br label %1150

1150:                                             ; preds = %1149, %1138
  %1151 = load ptr, ptr %12, align 8, !tbaa !5
  %1152 = load ptr, ptr %31, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.sqlite3, ptr %1152, i32 0, i32 4
  %1154 = load ptr, ptr %1153, align 8, !tbaa !29
  %1155 = load i32, ptr %33, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds %struct.Db, ptr %1154, i64 %1156
  %1158 = getelementptr inbounds %struct.Db, ptr %1157, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8, !tbaa !37
  %1160 = load ptr, ptr %24, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.Index, ptr %1160, i32 0, i32 0
  %1162 = load ptr, ptr %1161, align 8, !tbaa !56
  %1163 = load ptr, ptr %23, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.Table, ptr %1163, i32 0, i32 0
  %1165 = load ptr, ptr %1164, align 8, !tbaa !32
  %1166 = load i32, ptr %59, align 4, !tbaa !9
  %1167 = load ptr, ptr %58, align 8, !tbaa !5
  call void (ptr, ptr, ...) @sqlite3NestedParse(ptr noundef %1151, ptr noundef @.str.58, ptr noundef %1159, ptr noundef @.str, ptr noundef %1162, ptr noundef %1165, i32 noundef %1166, ptr noundef %1167)
  %1168 = load ptr, ptr %31, align 8, !tbaa !5
  %1169 = load ptr, ptr %58, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1168, ptr noundef %1169)
  %1170 = load ptr, ptr %15, align 8, !tbaa !5
  %1171 = icmp ne ptr %1170, null
  br i1 %1171, label %1172, label %1187

1172:                                             ; preds = %1150
  %1173 = load ptr, ptr %12, align 8, !tbaa !5
  %1174 = load ptr, ptr %24, align 8, !tbaa !5
  %1175 = load i32, ptr %59, align 4, !tbaa !9
  call void @sqlite3RefillIndex(ptr noundef %1173, ptr noundef %1174, i32 noundef %1175)
  %1176 = load ptr, ptr %12, align 8, !tbaa !5
  %1177 = load i32, ptr %33, align 4, !tbaa !9
  call void @sqlite3ChangeCookie(ptr noundef %1176, i32 noundef %1177)
  %1178 = load ptr, ptr %57, align 8, !tbaa !5
  %1179 = load i32, ptr %33, align 4, !tbaa !9
  %1180 = load ptr, ptr %31, align 8, !tbaa !5
  %1181 = load ptr, ptr %24, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.Index, ptr %1181, i32 0, i32 0
  %1183 = load ptr, ptr %1182, align 8, !tbaa !56
  %1184 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %1180, ptr noundef @.str.59, ptr noundef %1183)
  call void @sqlite3VdbeAddParseSchemaOp(ptr noundef %1178, i32 noundef %1179, ptr noundef %1184)
  %1185 = load ptr, ptr %57, align 8, !tbaa !5
  %1186 = call i32 @sqlite3VdbeAddOp0(ptr noundef %1185, i32 noundef 151)
  br label %1187

1187:                                             ; preds = %1172, %1150
  %1188 = load ptr, ptr %57, align 8, !tbaa !5
  %1189 = load ptr, ptr %24, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.Index, ptr %1189, i32 0, i32 11
  %1191 = load i32, ptr %1190, align 8, !tbaa !81
  call void @sqlite3VdbeJumpHere(ptr noundef %1188, i32 noundef %1191)
  store i32 0, ptr %42, align 4
  br label %1192

1192:                                             ; preds = %1187, %1094
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  %1193 = load i32, ptr %42, align 4
  switch i32 %1193, label %1280 [
    i32 0, label %1194
    i32 2, label %1265
  ]

1194:                                             ; preds = %1192
  br label %1195

1195:                                             ; preds = %1194, %1082
  br label %1196

1196:                                             ; preds = %1195, %1075
  %1197 = load ptr, ptr %31, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.sqlite3, ptr %1197, i32 0, i32 33
  %1199 = getelementptr inbounds %struct.sqlite3InitInfo, ptr %1198, i32 0, i32 2
  %1200 = load i8, ptr %1199, align 1, !tbaa !25
  %1201 = zext i8 %1200 to i32
  %1202 = icmp ne i32 %1201, 0
  br i1 %1202, label %1206, label %1203

1203:                                             ; preds = %1196
  %1204 = load ptr, ptr %15, align 8, !tbaa !5
  %1205 = icmp eq ptr %1204, null
  br i1 %1205, label %1206, label %1264

1206:                                             ; preds = %1203, %1196
  %1207 = load i32, ptr %17, align 4, !tbaa !9
  %1208 = icmp ne i32 %1207, 5
  br i1 %1208, label %1222, label %1209

1209:                                             ; preds = %1206
  %1210 = load ptr, ptr %23, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.Table, ptr %1210, i32 0, i32 2
  %1212 = load ptr, ptr %1211, align 8, !tbaa !38
  %1213 = icmp eq ptr %1212, null
  br i1 %1213, label %1222, label %1214

1214:                                             ; preds = %1209
  %1215 = load ptr, ptr %23, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.Table, ptr %1215, i32 0, i32 2
  %1217 = load ptr, ptr %1216, align 8, !tbaa !38
  %1218 = getelementptr inbounds %struct.Index, ptr %1217, i32 0, i32 15
  %1219 = load i8, ptr %1218, align 2, !tbaa !58
  %1220 = zext i8 %1219 to i32
  %1221 = icmp eq i32 %1220, 5
  br i1 %1221, label %1222, label %1231

1222:                                             ; preds = %1214, %1209, %1206
  %1223 = load ptr, ptr %23, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.Table, ptr %1223, i32 0, i32 2
  %1225 = load ptr, ptr %1224, align 8, !tbaa !38
  %1226 = load ptr, ptr %24, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.Index, ptr %1226, i32 0, i32 5
  store ptr %1225, ptr %1227, align 8, !tbaa !39
  %1228 = load ptr, ptr %24, align 8, !tbaa !5
  %1229 = load ptr, ptr %23, align 8, !tbaa !5
  %1230 = getelementptr inbounds %struct.Table, ptr %1229, i32 0, i32 2
  store ptr %1228, ptr %1230, align 8, !tbaa !38
  br label %1263

1231:                                             ; preds = %1214
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  %1232 = load ptr, ptr %23, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.Table, ptr %1232, i32 0, i32 2
  %1234 = load ptr, ptr %1233, align 8, !tbaa !38
  store ptr %1234, ptr %61, align 8, !tbaa !5
  br label %1235

1235:                                             ; preds = %1250, %1231
  %1236 = load ptr, ptr %61, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.Index, ptr %1236, i32 0, i32 5
  %1238 = load ptr, ptr %1237, align 8, !tbaa !39
  %1239 = icmp ne ptr %1238, null
  br i1 %1239, label %1240, label %1248

1240:                                             ; preds = %1235
  %1241 = load ptr, ptr %61, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.Index, ptr %1241, i32 0, i32 5
  %1243 = load ptr, ptr %1242, align 8, !tbaa !39
  %1244 = getelementptr inbounds %struct.Index, ptr %1243, i32 0, i32 15
  %1245 = load i8, ptr %1244, align 2, !tbaa !58
  %1246 = zext i8 %1245 to i32
  %1247 = icmp ne i32 %1246, 5
  br label %1248

1248:                                             ; preds = %1240, %1235
  %1249 = phi i1 [ false, %1235 ], [ %1247, %1240 ]
  br i1 %1249, label %1250, label %1254

1250:                                             ; preds = %1248
  %1251 = load ptr, ptr %61, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.Index, ptr %1251, i32 0, i32 5
  %1253 = load ptr, ptr %1252, align 8, !tbaa !39
  store ptr %1253, ptr %61, align 8, !tbaa !5
  br label %1235, !llvm.loop !86

1254:                                             ; preds = %1248
  %1255 = load ptr, ptr %61, align 8, !tbaa !5
  %1256 = getelementptr inbounds %struct.Index, ptr %1255, i32 0, i32 5
  %1257 = load ptr, ptr %1256, align 8, !tbaa !39
  %1258 = load ptr, ptr %24, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.Index, ptr %1258, i32 0, i32 5
  store ptr %1257, ptr %1259, align 8, !tbaa !39
  %1260 = load ptr, ptr %24, align 8, !tbaa !5
  %1261 = load ptr, ptr %61, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.Index, ptr %1261, i32 0, i32 5
  store ptr %1260, ptr %1262, align 8, !tbaa !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  br label %1263

1263:                                             ; preds = %1254, %1222
  store ptr null, ptr %24, align 8, !tbaa !5
  br label %1264

1264:                                             ; preds = %1263, %1203
  br label %1265

1265:                                             ; preds = %1264, %1192, %1073, %1035, %730, %452, %384, %356, %324, %287, %266, %254, %248, %237, %230, %220, %187, %166, %149, %102, %91, %86, %75
  %1266 = load ptr, ptr %24, align 8, !tbaa !5
  %1267 = icmp ne ptr %1266, null
  br i1 %1267, label %1268, label %1271

1268:                                             ; preds = %1265
  %1269 = load ptr, ptr %31, align 8, !tbaa !5
  %1270 = load ptr, ptr %24, align 8, !tbaa !5
  call void @freeIndex(ptr noundef %1269, ptr noundef %1270)
  br label %1271

1271:                                             ; preds = %1268, %1265
  %1272 = load ptr, ptr %31, align 8, !tbaa !5
  %1273 = load ptr, ptr %19, align 8, !tbaa !5
  call void @sqlite3ExprDelete(ptr noundef %1272, ptr noundef %1273)
  %1274 = load ptr, ptr %31, align 8, !tbaa !5
  %1275 = load ptr, ptr %16, align 8, !tbaa !5
  call void @sqlite3ExprListDelete(ptr noundef %1274, ptr noundef %1275)
  %1276 = load ptr, ptr %31, align 8, !tbaa !5
  %1277 = load ptr, ptr %15, align 8, !tbaa !5
  call void @sqlite3SrcListDelete(ptr noundef %1276, ptr noundef %1277)
  %1278 = load ptr, ptr %31, align 8, !tbaa !5
  %1279 = load ptr, ptr %25, align 8, !tbaa !5
  call void @sqlite3DbFree(ptr noundef %1278, ptr noundef %1279)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  ret void

1280:                                             ; preds = %1192, %1073, %1035, %960, %730, %384, %356, %324
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!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, !7, i64 85}
!17 = !{!"sqlite3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !18, i64 48, !18, 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, !19, 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, !20, i64 344, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !10, i64 432, !10, i64 436, !21, i64 440, !6, i64 464, !6, i64 472, !6, i64 480, !21, i64 488, !21, i64 512, !22, i64 536, !7, i64 560, !6, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !18, i64 648, !18, i64 656, !6, i64 664}
!18 = !{!"long long", !7, i64 0}
!19 = !{!"sqlite3InitInfo", !10, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7}
!20 = !{!"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}
!21 = !{!"Hash", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!22 = !{!"BusyHandler", !6, i64 0, !6, i64 8, !10, i64 16}
!23 = !{!13, !10, i64 48}
!24 = !{!13, !7, i64 468}
!25 = !{!17, !7, i64 169}
!26 = !{!14, !10, i64 8}
!27 = !{!28, !6, i64 112}
!28 = !{!"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}
!29 = !{!17, !6, i64 32}
!30 = !{!31, !6, i64 24}
!31 = !{!"Db", !6, i64 0, !6, i64 8, !7, i64 16, !7, i64 17, !6, i64 24}
!32 = !{!28, !6, i64 0}
!33 = !{!28, !10, i64 64}
!34 = !{!13, !6, i64 512}
!35 = !{!28, !6, i64 24}
!36 = !{!28, !10, i64 84}
!37 = !{!31, !6, i64 0}
!38 = !{!28, !6, i64 16}
!39 = !{!40, !6, i64 40}
!40 = !{!"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}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!28, !6, i64 8}
!44 = !{!28, !15, i64 70}
!45 = !{!46, !6, i64 0}
!46 = !{!"Column", !6, i64 0, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!47 = !{!48, !10, i64 0}
!48 = !{!"ExprList", !10, i64 0, !6, i64 8}
!49 = !{!48, !6, i64 8}
!50 = !{!51, !6, i64 0}
!51 = !{!"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}
!52 = !{!53, !7, i64 0}
!53 = !{!"Expr", !7, i64 0, !7, i64 1, !10, i64 4, !7, i64 8, !6, i64 16, !6, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !15, i64 50, !15, i64 52, !7, i64 54, !6, i64 56, !6, i64 64}
!54 = distinct !{!54, !42}
!55 = !{!40, !15, i64 94}
!56 = !{!40, !6, i64 0}
!57 = !{!40, !6, i64 24}
!58 = !{!40, !7, i64 98}
!59 = !{!40, !6, i64 48}
!60 = !{!40, !6, i64 72}
!61 = !{!62, !7, i64 112}
!62 = !{!"Schema", !10, i64 0, !10, i64 4, !21, i64 8, !21, i64 32, !21, i64 56, !21, i64 80, !6, i64 104, !7, i64 112, !7, i64 113, !15, i64 114, !10, i64 116}
!63 = !{!40, !6, i64 80}
!64 = !{!40, !6, i64 8}
!65 = !{!15, !15, i64 0}
!66 = !{!53, !15, i64 48}
!67 = !{!28, !15, i64 68}
!68 = !{!46, !7, i64 24}
!69 = !{!46, !6, i64 16}
!70 = !{!40, !6, i64 64}
!71 = !{!51, !7, i64 24}
!72 = !{!40, !6, i64 56}
!73 = distinct !{!73, !42}
!74 = !{!40, !15, i64 96}
!75 = distinct !{!75, !42}
!76 = distinct !{!76, !42}
!77 = distinct !{!77, !42}
!78 = distinct !{!78, !42}
!79 = !{!17, !10, i64 44}
!80 = !{!17, !10, i64 164}
!81 = !{!40, !10, i64 88}
!82 = !{!13, !10, i64 56}
!83 = !{!13, !6, i64 448}
!84 = !{!14, !6, i64 0}
!85 = !{!13, !10, i64 456}
!86 = distinct !{!86, !42}


; 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.DbFixer = type { ptr, ptr, i32, ptr, ptr, ptr }
%struct.Token = type { ptr, i32 }
%struct.Db = type { ptr, ptr, i8, i8, ptr }
%struct.Column = type { ptr, ptr, ptr, i8, i8, i8, i8 }
%struct.ExprList_item = type { ptr, ptr, ptr, i8, i8, %union.anon.0 }
%union.anon.0 = type { i32 }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [61 x i8], align 1
@sqlite3StrBINARY = external constant [0 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [27 x i8], align 1

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

declare void @sqlite3OomFault(ptr noundef) local_unnamed_addr #1

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

declare ptr @sqlite3GetVdbe(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

declare i32 @sqlite3ReadSchema(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i32 @sqlite3Strlen30(ptr noundef) local_unnamed_addr #1

declare ptr @sqlite3ExprSkipCollate(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local void @sqlite3CreateIndex(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef readnone %6, ptr noundef %7, i32 noundef %8, i32 noundef %9, i8 noundef zeroext %10) local_unnamed_addr #2 {
  %12 = alloca %struct.DbFixer, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.Token, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #4
  %16 = load ptr, ptr %0, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  store ptr null, ptr %13, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  store ptr null, ptr %14, align 8, !tbaa !13
  %17 = getelementptr inbounds i8, ptr %16, i64 85
  %18 = load i8, ptr %17, align 1, !tbaa !14
  %.not = icmp eq i8 %18, 0
  br i1 %.not, label %19, label %.thread527

19:                                               ; preds = %11
  %20 = getelementptr inbounds i8, ptr %0, i64 48
  %21 = load i32, ptr %20, align 8, !tbaa !21
  %22 = icmp sgt i32 %21, 0
  br i1 %22, label %.thread527, label %23

23:                                               ; preds = %19
  %24 = getelementptr inbounds i8, ptr %0, i64 468
  %25 = load i8, ptr %24, align 4, !tbaa !22
  %26 = icmp ne i8 %25, 0
  %27 = icmp ne i8 %10, 2
  %or.cond = and i1 %27, %26
  br i1 %or.cond, label %.thread527, label %28

28:                                               ; preds = %23
  %29 = tail call i32 @sqlite3ReadSchema(ptr noundef nonnull %0) #4
  %.not422 = icmp eq i32 %29, 0
  br i1 %.not422, label %30, label %.thread527

30:                                               ; preds = %28
  %31 = icmp ne ptr %3, null
  br i1 %31, label %32, label %76

32:                                               ; preds = %30
  %33 = call i32 @sqlite3TwoPartName(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %13)
  %34 = icmp slt i32 %33, 0
  br i1 %34, label %.thread527, label %35

35:                                               ; preds = %32
  %36 = getelementptr inbounds i8, ptr %16, i64 169
  %37 = load i8, ptr %36, align 1, !tbaa !23
  %.not424 = icmp eq i8 %37, 0
  br i1 %.not424, label %38, label %52

38:                                               ; preds = %35
  %39 = call ptr @sqlite3SrcListLookup(ptr noundef nonnull %0, ptr noundef nonnull %3) #4
  %40 = getelementptr inbounds i8, ptr %2, i64 8
  %41 = load i32, ptr %40, align 8, !tbaa !24
  %42 = icmp eq i32 %41, 0
  %43 = icmp ne ptr %39, null
  %or.cond4 = select i1 %42, i1 %43, i1 false
  br i1 %or.cond4, label %44, label %52

44:                                               ; preds = %38
  %45 = getelementptr inbounds i8, ptr %39, i64 112
  %46 = load ptr, ptr %45, align 8, !tbaa !25
  %47 = getelementptr inbounds i8, ptr %16, i64 32
  %48 = load ptr, ptr %47, align 8, !tbaa !27
  %49 = getelementptr inbounds i8, ptr %48, i64 56
  %50 = load ptr, ptr %49, align 8, !tbaa !28
  %51 = icmp eq ptr %46, %50
  %spec.select = select i1 %51, i32 1, i32 %33
  br label %52

52:                                               ; preds = %44, %38, %35
  %.0384 = phi i32 [ %33, %35 ], [ %33, %38 ], [ %spec.select, %44 ]
  %53 = load ptr, ptr %13, align 8, !tbaa !13
  call void @sqlite3FixInit(ptr noundef nonnull %12, ptr noundef nonnull %0, i32 noundef %.0384, ptr noundef nonnull @.str.45, ptr noundef %53) #4
  %54 = call i32 @sqlite3FixSrcList(ptr noundef nonnull %12, ptr noundef nonnull %3) #4
  %55 = getelementptr inbounds i8, ptr %3, i64 8
  %56 = call ptr @sqlite3LocateTableItem(ptr noundef nonnull %0, i32 noundef 0, ptr noundef nonnull %55)
  %57 = icmp eq ptr %56, null
  br i1 %57, label %.thread527, label %58

58:                                               ; preds = %52
  %59 = icmp eq i32 %.0384, 1
  br i1 %59, label %60, label %69

60:                                               ; preds = %58
  %61 = getelementptr inbounds i8, ptr %16, i64 32
  %62 = load ptr, ptr %61, align 8, !tbaa !27
  %63 = getelementptr inbounds i8, ptr %62, i64 56
  %64 = load ptr, ptr %63, align 8, !tbaa !28
  %65 = getelementptr inbounds i8, ptr %56, i64 112
  %66 = load ptr, ptr %65, align 8, !tbaa !25
  %.not425 = icmp eq ptr %64, %66
  br i1 %.not425, label %69, label %67

67:                                               ; preds = %60
  %68 = load ptr, ptr %56, align 8, !tbaa !30
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.46, ptr noundef %68) #4
  br label %.thread527

69:                                               ; preds = %60, %58
  %70 = getelementptr inbounds i8, ptr %56, i64 64
  %71 = load i32, ptr %70, align 8, !tbaa !31
  %72 = and i32 %71, 32
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %83, label %74

74:                                               ; preds = %69
  %75 = call ptr @sqlite3PrimaryKeyIndex(ptr noundef nonnull %56)
  br label %83

76:                                               ; preds = %30
  %77 = getelementptr inbounds i8, ptr %0, i64 512
  %78 = load ptr, ptr %77, align 8, !tbaa !32
  %.not423 = icmp eq ptr %78, null
  br i1 %.not423, label %.thread527, label %79

79:                                               ; preds = %76
  %80 = getelementptr inbounds i8, ptr %78, i64 112
  %81 = load ptr, ptr %80, align 8, !tbaa !25
  %82 = tail call i32 @sqlite3SchemaToIndex(ptr noundef nonnull %16, ptr noundef %81) #4
  br label %83

83:                                               ; preds = %69, %74, %79
  %.0395 = phi ptr [ null, %69 ], [ %75, %74 ], [ null, %79 ]
  %.1385 = phi i32 [ %.0384, %69 ], [ %.0384, %74 ], [ %82, %79 ]
  %.0370 = phi ptr [ %56, %69 ], [ %56, %74 ], [ %78, %79 ]
  %84 = getelementptr inbounds i8, ptr %16, i64 32
  %85 = load ptr, ptr %84, align 8, !tbaa !27
  %86 = sext i32 %.1385 to i64
  %87 = getelementptr inbounds %struct.Db, ptr %85, i64 %86
  %88 = load ptr, ptr %.0370, align 8, !tbaa !30
  %89 = call i32 @sqlite3_strnicmp(ptr noundef %88, ptr noundef nonnull @.str.10, i32 noundef 7) #4
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %101

91:                                               ; preds = %83
  %92 = getelementptr inbounds i8, ptr %16, i64 169
  %93 = load i8, ptr %92, align 1, !tbaa !23
  %94 = icmp eq i8 %93, 0
  br i1 %94, label %95, label %101

95:                                               ; preds = %91
  %96 = load ptr, ptr %.0370, align 8, !tbaa !30
  %97 = getelementptr inbounds i8, ptr %96, i64 7
  %98 = call i32 @sqlite3_strnicmp(ptr noundef nonnull %97, ptr noundef nonnull @.str.47, i32 noundef 9) #4
  %.not426 = icmp eq i32 %98, 0
  br i1 %.not426, label %101, label %99

99:                                               ; preds = %95
  %100 = load ptr, ptr %.0370, align 8, !tbaa !30
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.48, ptr noundef %100) #4
  br label %.thread527

101:                                              ; preds = %95, %91, %83
  %102 = getelementptr inbounds i8, ptr %.0370, i64 24
  %103 = load ptr, ptr %102, align 8, !tbaa !33
  %.not427 = icmp eq ptr %103, null
  br i1 %.not427, label %105, label %104

104:                                              ; preds = %101
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.49) #4
  br label %.thread527

105:                                              ; preds = %101
  %106 = getelementptr inbounds i8, ptr %.0370, i64 84
  %107 = load i32, ptr %106, align 4, !tbaa !34
  %.not428 = icmp eq i32 %107, 0
  br i1 %.not428, label %109, label %108

108:                                              ; preds = %105
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.50) #4
  br label %.thread527

109:                                              ; preds = %105
  %110 = load ptr, ptr %13, align 8, !tbaa !13
  %.not429 = icmp eq ptr %110, null
  br i1 %.not429, label %128, label %111

111:                                              ; preds = %109
  %112 = call ptr @sqlite3NameFromToken(ptr noundef nonnull %16, ptr noundef nonnull %110)
  %113 = icmp eq ptr %112, null
  br i1 %113, label %.thread527, label %114

114:                                              ; preds = %111
  %115 = call i32 @sqlite3CheckObjectName(ptr noundef nonnull %0, ptr noundef nonnull %112)
  %.not432 = icmp eq i32 %115, 0
  br i1 %.not432, label %116, label %.thread527

116:                                              ; preds = %114
  %117 = getelementptr inbounds i8, ptr %16, i64 169
  %118 = load i8, ptr %117, align 1, !tbaa !23
  %.not433 = icmp eq i8 %118, 0
  br i1 %.not433, label %119, label %122

119:                                              ; preds = %116
  %120 = call ptr @sqlite3FindTable(ptr noundef nonnull %16, ptr noundef nonnull %112, ptr noundef null)
  %.not434 = icmp eq ptr %120, null
  br i1 %.not434, label %122, label %121

121:                                              ; preds = %119
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.51, ptr noundef nonnull %112) #4
  br label %.thread527

122:                                              ; preds = %119, %116
  %123 = load ptr, ptr %87, align 8, !tbaa !35
  %124 = call ptr @sqlite3FindIndex(ptr noundef nonnull %16, ptr noundef nonnull %112, ptr noundef %123)
  %.not435 = icmp eq ptr %124, null
  br i1 %.not435, label %.thread, label %125

125:                                              ; preds = %122
  %.not461 = icmp eq i32 %9, 0
  br i1 %.not461, label %126, label %127

126:                                              ; preds = %125
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.52, ptr noundef nonnull %112) #4
  br label %.thread527

127:                                              ; preds = %125
  call void @sqlite3CodeVerifySchema(ptr noundef nonnull %0, i32 noundef %.1385)
  br label %.thread527

128:                                              ; preds = %109
  %129 = getelementptr inbounds i8, ptr %.0370, i64 16
  %.0401555 = load ptr, ptr %129, align 8, !tbaa !13
  %.not430556 = icmp eq ptr %.0401555, null
  br i1 %.not430556, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %128, %.lr.ph
  %.0401558 = phi ptr [ %.0401, %.lr.ph ], [ %.0401555, %128 ]
  %.0402557 = phi i32 [ %131, %.lr.ph ], [ 1, %128 ]
  %130 = getelementptr inbounds i8, ptr %.0401558, i64 40
  %131 = add nuw nsw i32 %.0402557, 1
  %.0401 = load ptr, ptr %130, align 8, !tbaa !13
  %.not430 = icmp eq ptr %.0401, null
  br i1 %.not430, label %._crit_edge, label %.lr.ph, !llvm.loop !36

._crit_edge:                                      ; preds = %.lr.ph, %128
  %.0402.lcssa = phi i32 [ 1, %128 ], [ %131, %.lr.ph ]
  %132 = load ptr, ptr %.0370, align 8, !tbaa !30
  %133 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %16, ptr noundef nonnull @.str.53, ptr noundef %132, i32 noundef %.0402.lcssa) #4
  %134 = icmp eq ptr %133, null
  br i1 %134, label %.thread527, label %135

135:                                              ; preds = %._crit_edge
  %136 = load i8, ptr %24, align 4, !tbaa !22
  %.not431 = icmp eq i8 %136, 0
  br i1 %.not431, label %.thread, label %137

137:                                              ; preds = %135
  %138 = getelementptr inbounds i8, ptr %133, i64 7
  %139 = load i8, ptr %138, align 1, !tbaa !38
  %140 = add i8 %139, 1
  store i8 %140, ptr %138, align 1, !tbaa !38
  br label %.thread

.thread:                                          ; preds = %135, %137, %122
  %.0372 = phi ptr [ %112, %122 ], [ %133, %137 ], [ %133, %135 ]
  %141 = load ptr, ptr %87, align 8, !tbaa !35
  %142 = icmp eq i32 %.1385, 1
  %143 = select i1 %142, ptr @.str.1, ptr @.str
  %144 = call i32 @sqlite3AuthCheck(ptr noundef nonnull %0, i32 noundef 18, ptr noundef nonnull %143, ptr noundef null, ptr noundef %141) #4
  %.not436 = icmp eq i32 %144, 0
  br i1 %.not436, label %145, label %.thread527

145:                                              ; preds = %.thread
  %spec.store.select = select i1 %142, i32 3, i32 1
  %146 = load ptr, ptr %.0370, align 8, !tbaa !30
  %147 = call i32 @sqlite3AuthCheck(ptr noundef nonnull %0, i32 noundef %spec.store.select, ptr noundef nonnull %.0372, ptr noundef %146, ptr noundef %141) #4
  %.not437 = icmp eq i32 %147, 0
  br i1 %.not437, label %148, label %.thread527

148:                                              ; preds = %145
  %149 = icmp eq ptr %4, null
  br i1 %149, label %150, label %163

150:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #4
  %151 = getelementptr inbounds i8, ptr %.0370, i64 8
  %152 = load ptr, ptr %151, align 8, !tbaa !39
  %153 = getelementptr inbounds i8, ptr %.0370, i64 70
  %154 = load i16, ptr %153, align 2, !tbaa !40
  %155 = sext i16 %154 to i64
  %156 = getelementptr %struct.Column, ptr %152, i64 %155
  %157 = getelementptr i8, ptr %156, i64 -32
  %158 = load ptr, ptr %157, align 8, !tbaa !41
  call void @sqlite3TokenInit(ptr noundef nonnull %15, ptr noundef %158) #4
  %159 = call ptr @sqlite3ExprAlloc(ptr noundef %16, i32 noundef 55, ptr noundef nonnull %15, i32 noundef 0) #4
  %160 = call ptr @sqlite3ExprListAppend(ptr noundef nonnull %0, ptr noundef null, ptr noundef %159) #4
  %161 = icmp eq ptr %160, null
  br i1 %161, label %162, label %.thread487

.thread487:                                       ; preds = %150
  call void @sqlite3ExprListSetSortOrder(ptr noundef nonnull %160, i32 noundef %8) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #4
  br label %164

162:                                              ; preds = %150
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #4
  br label %.thread527

163:                                              ; preds = %148
  call void @sqlite3ExprListCheckLength(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull @.str.45) #4
  br label %164

164:                                              ; preds = %.thread487, %163
  %.0366 = phi ptr [ %4, %163 ], [ %160, %.thread487 ]
  %165 = load i32, ptr %.0366, align 8, !tbaa !43
  %166 = icmp sgt i32 %165, 0
  br i1 %166, label %.lr.ph562, label %._crit_edge563

.lr.ph562:                                        ; preds = %164
  %167 = getelementptr inbounds i8, ptr %.0366, i64 8
  br label %168

168:                                              ; preds = %.lr.ph562, %181
  %169 = phi i32 [ %165, %.lr.ph562 ], [ %182, %181 ]
  %indvars.iv = phi i64 [ 0, %.lr.ph562 ], [ %indvars.iv.next, %181 ]
  %.0390559 = phi i32 [ 0, %.lr.ph562 ], [ %.1391, %181 ]
  %170 = load ptr, ptr %167, align 8, !tbaa !45
  %171 = getelementptr inbounds %struct.ExprList_item, ptr %170, i64 %indvars.iv
  %172 = load ptr, ptr %171, align 8, !tbaa !46
  %173 = load i8, ptr %172, align 8, !tbaa !48
  %174 = icmp eq i8 %173, 53
  br i1 %174, label %175, label %181

175:                                              ; preds = %168
  %176 = getelementptr inbounds i8, ptr %172, i64 8
  %177 = load ptr, ptr %176, align 8, !tbaa !38
  %178 = call i32 @sqlite3Strlen30(ptr noundef %177) #4
  %179 = add i32 %.0390559, 1
  %180 = add i32 %179, %178
  %.pre = load i32, ptr %.0366, align 8, !tbaa !43
  br label %181

181:                                              ; preds = %175, %168
  %182 = phi i32 [ %.pre, %175 ], [ %169, %168 ]
  %.1391 = phi i32 [ %180, %175 ], [ %.0390559, %168 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %183 = sext i32 %182 to i64
  %184 = icmp slt i64 %indvars.iv.next, %183
  br i1 %184, label %168, label %._crit_edge563, !llvm.loop !50

._crit_edge563:                                   ; preds = %181, %164
  %.0390.lcssa = phi i32 [ 0, %164 ], [ %.1391, %181 ]
  %185 = call i32 @sqlite3Strlen30(ptr noundef nonnull %.0372) #4
  %.not438 = icmp eq ptr %.0395, null
  br i1 %.not438, label %190, label %186

186:                                              ; preds = %._crit_edge563
  %187 = getelementptr inbounds i8, ptr %.0395, i64 94
  %188 = load i16, ptr %187, align 2, !tbaa !51
  %189 = zext i16 %188 to i32
  br label %190

190:                                              ; preds = %._crit_edge563, %186
  %191 = phi i32 [ %189, %186 ], [ 1, %._crit_edge563 ]
  %192 = load i32, ptr %.0366, align 8, !tbaa !43
  %193 = add nsw i32 %192, %191
  %194 = trunc i32 %193 to i16
  %195 = add i32 %.0390.lcssa, 1
  %196 = add i32 %195, %185
  %197 = call ptr @sqlite3AllocateIndexObject(ptr noundef %16, i16 noundef signext %194, i32 noundef %196, ptr noundef nonnull %14)
  %198 = load i8, ptr %17, align 1, !tbaa !14
  %.not439 = icmp eq i8 %198, 0
  br i1 %.not439, label %199, label %551

199:                                              ; preds = %190
  %200 = load ptr, ptr %14, align 8, !tbaa !13
  store ptr %200, ptr %197, align 8, !tbaa !53
  %201 = add nsw i32 %185, 1
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds i8, ptr %200, i64 %202
  store ptr %203, ptr %14, align 8, !tbaa !13
  %204 = load ptr, ptr %197, align 8, !tbaa !53
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %204, ptr nonnull align 1 %.0372, i64 %202, i1 false)
  %205 = getelementptr inbounds i8, ptr %197, i64 24
  store ptr %.0370, ptr %205, align 8, !tbaa !54
  %206 = trunc i32 %5 to i8
  %207 = getelementptr inbounds i8, ptr %197, i64 98
  store i8 %206, ptr %207, align 2, !tbaa !55
  %.not440 = icmp eq i32 %5, 0
  %208 = getelementptr inbounds i8, ptr %197, i64 99
  %209 = load i8, ptr %208, align 1
  %210 = select i1 %.not440, i8 0, i8 8
  %211 = and i8 %209, -12
  %212 = and i8 %10, 3
  %213 = or disjoint i8 %212, %210
  %214 = or disjoint i8 %213, %211
  store i8 %214, ptr %208, align 1
  %215 = load ptr, ptr %84, align 8, !tbaa !27
  %216 = getelementptr inbounds %struct.Db, ptr %215, i64 %86, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !28
  %218 = getelementptr inbounds i8, ptr %197, i64 48
  store ptr %217, ptr %218, align 8, !tbaa !56
  %219 = load i32, ptr %.0366, align 8, !tbaa !43
  %220 = trunc i32 %219 to i16
  %221 = getelementptr inbounds i8, ptr %197, i64 94
  store i16 %220, ptr %221, align 2, !tbaa !51
  %.not441 = icmp eq ptr %7, null
  br i1 %.not441, label %224, label %222

222:                                              ; preds = %199
  call void @sqlite3ResolveSelfReference(ptr noundef nonnull %0, ptr noundef nonnull %.0370, i32 noundef 2, ptr noundef nonnull %7, ptr noundef null) #4
  %223 = getelementptr inbounds i8, ptr %197, i64 72
  store ptr %7, ptr %223, align 8, !tbaa !57
  %.pre605 = load i32, ptr %.0366, align 8, !tbaa !43
  br label %224

224:                                              ; preds = %222, %199
  %225 = phi i32 [ %.pre605, %222 ], [ %219, %199 ]
  %226 = getelementptr inbounds i8, ptr %87, i64 24
  %227 = load ptr, ptr %226, align 8, !tbaa !28
  %228 = getelementptr inbounds i8, ptr %227, i64 112
  %229 = load i8, ptr %228, align 8, !tbaa !58
  %230 = icmp ugt i8 %229, 3
  %231 = icmp sgt i32 %225, 0
  br i1 %231, label %.lr.ph569, label %._crit_edge570

.lr.ph569:                                        ; preds = %224
  %232 = getelementptr inbounds i8, ptr %.0366, i64 8
  %233 = load ptr, ptr %232, align 8, !tbaa !45
  %234 = getelementptr inbounds i8, ptr %0, i64 512
  %235 = getelementptr inbounds i8, ptr %197, i64 80
  %236 = getelementptr inbounds i8, ptr %197, i64 8
  %237 = getelementptr inbounds i8, ptr %.0370, i64 8
  %238 = getelementptr inbounds i8, ptr %.0370, i64 68
  %239 = getelementptr inbounds i8, ptr %16, i64 169
  %240 = getelementptr inbounds i8, ptr %197, i64 64
  %241 = getelementptr inbounds i8, ptr %197, i64 56
  br label %242

242:                                              ; preds = %.lr.ph569, %315
  %indvars.iv596 = phi i64 [ 0, %.lr.ph569 ], [ %indvars.iv.next597, %315 ]
  %.0386566 = phi ptr [ %233, %.lr.ph569 ], [ %323, %315 ]
  %243 = load ptr, ptr %.0386566, align 8, !tbaa !46
  call void @sqlite3StringToId(ptr noundef %243)
  %244 = load ptr, ptr %.0386566, align 8, !tbaa !46
  call void @sqlite3ResolveSelfReference(ptr noundef nonnull %0, ptr noundef nonnull %.0370, i32 noundef 32, ptr noundef %244, ptr noundef null) #4
  %245 = load i32, ptr %20, align 8, !tbaa !21
  %.not455 = icmp eq i32 %245, 0
  br i1 %.not455, label %246, label %.thread537

246:                                              ; preds = %242
  %247 = load ptr, ptr %.0386566, align 8, !tbaa !46
  %248 = call ptr @sqlite3ExprSkipCollate(ptr noundef %247) #4
  %249 = load i8, ptr %248, align 8, !tbaa !48
  %.not456 = icmp eq i8 %249, -104
  br i1 %.not456, label %264, label %250

250:                                              ; preds = %246
  %251 = load ptr, ptr %234, align 8, !tbaa !32
  %252 = icmp eq ptr %.0370, %251
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.54) #4
  br label %.thread537

254:                                              ; preds = %250
  %255 = load ptr, ptr %235, align 8, !tbaa !60
  %256 = icmp eq ptr %255, null
  br i1 %256, label %257, label %.thread490

257:                                              ; preds = %254
  %258 = call ptr @sqlite3ExprListDup(ptr noundef %16, ptr noundef nonnull %.0366, i32 noundef 0) #4
  store ptr %258, ptr %235, align 8, !tbaa !60
  %259 = load i8, ptr %17, align 1, !tbaa !14
  %.not457 = icmp eq i8 %259, 0
  br i1 %.not457, label %260, label %.thread490

260:                                              ; preds = %257
  %261 = getelementptr inbounds i8, ptr %258, i64 8
  %262 = load ptr, ptr %261, align 8, !tbaa !45
  %263 = getelementptr inbounds %struct.ExprList_item, ptr %262, i64 %indvars.iv596
  br label %.thread490

264:                                              ; preds = %246
  %265 = getelementptr inbounds i8, ptr %248, i64 48
  %266 = load i16, ptr %265, align 8, !tbaa !61
  %267 = sext i16 %266 to i32
  %268 = icmp slt i16 %266, 0
  br i1 %268, label %269, label %272

269:                                              ; preds = %264
  %270 = load i16, ptr %238, align 4, !tbaa !62
  %271 = sext i16 %270 to i32
  br label %281

272:                                              ; preds = %264
  %273 = load ptr, ptr %237, align 8, !tbaa !39
  %274 = zext nneg i32 %267 to i64
  %275 = getelementptr inbounds %struct.Column, ptr %273, i64 %274, i32 3
  %276 = load i8, ptr %275, align 8, !tbaa !63
  %277 = icmp eq i8 %276, 0
  br i1 %277, label %278, label %281

278:                                              ; preds = %272
  %279 = load i8, ptr %208, align 1
  %280 = and i8 %279, -9
  store i8 %280, ptr %208, align 1
  br label %281

281:                                              ; preds = %269, %278, %272
  %.0378 = phi i32 [ %271, %269 ], [ %267, %278 ], [ %267, %272 ]
  %282 = trunc nsw i32 %.0378 to i16
  %283 = load ptr, ptr %236, align 8, !tbaa !64
  %284 = getelementptr inbounds i16, ptr %283, i64 %indvars.iv596
  store i16 %282, ptr %284, align 2, !tbaa !65
  %285 = load ptr, ptr %.0386566, align 8, !tbaa !46
  %286 = load i8, ptr %285, align 8, !tbaa !48
  %287 = icmp eq i8 %286, 53
  br i1 %287, label %295, label %305

.thread490:                                       ; preds = %254, %260, %257
  %.2388 = phi ptr [ %.0386566, %254 ], [ %.0386566, %257 ], [ %263, %260 ]
  %288 = load ptr, ptr %236, align 8, !tbaa !64
  %289 = getelementptr inbounds i16, ptr %288, i64 %indvars.iv596
  store i16 -2, ptr %289, align 2, !tbaa !65
  %290 = load i8, ptr %208, align 1
  %291 = and i8 %290, -9
  store i8 %291, ptr %208, align 1
  %292 = load ptr, ptr %.2388, align 8, !tbaa !46
  %293 = load i8, ptr %292, align 8, !tbaa !48
  %294 = icmp eq i8 %293, 53
  br i1 %294, label %295, label %.thread497

295:                                              ; preds = %.thread490, %281
  %296 = phi ptr [ %292, %.thread490 ], [ %285, %281 ]
  %.3389495 = phi ptr [ %.2388, %.thread490 ], [ %.0386566, %281 ]
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  %298 = load ptr, ptr %297, align 8, !tbaa !38
  %299 = call i32 @sqlite3Strlen30(ptr noundef %298) #4
  %300 = add nsw i32 %299, 1
  %301 = load ptr, ptr %14, align 8, !tbaa !13
  %302 = sext i32 %300 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %301, ptr align 1 %298, i64 %302, i1 false)
  %303 = load ptr, ptr %14, align 8, !tbaa !13
  %304 = getelementptr inbounds i8, ptr %303, i64 %302
  store ptr %304, ptr %14, align 8, !tbaa !13
  br label %.thread497

305:                                              ; preds = %281
  %306 = icmp sgt i32 %.0378, -1
  br i1 %306, label %307, label %.thread497

307:                                              ; preds = %305
  %308 = load ptr, ptr %237, align 8, !tbaa !39
  %309 = zext nneg i32 %.0378 to i64
  %310 = getelementptr inbounds %struct.Column, ptr %308, i64 %309, i32 2
  %311 = load ptr, ptr %310, align 8, !tbaa !66
  br label %.thread497

.thread497:                                       ; preds = %.thread490, %305, %307, %295
  %.3389493 = phi ptr [ %.3389495, %295 ], [ %.0386566, %307 ], [ %.0386566, %305 ], [ %.2388, %.thread490 ]
  %.0383 = phi ptr [ %303, %295 ], [ %311, %307 ], [ null, %305 ], [ null, %.thread490 ]
  %.not458 = icmp eq ptr %.0383, null
  %spec.store.select5 = select i1 %.not458, ptr @sqlite3StrBINARY, ptr %.0383
  %312 = load i8, ptr %239, align 1, !tbaa !23
  %.not459 = icmp eq i8 %312, 0
  br i1 %.not459, label %313, label %315

313:                                              ; preds = %.thread497
  %314 = call ptr @sqlite3LocateCollSeq(ptr noundef nonnull %0, ptr noundef nonnull %spec.store.select5)
  %.not460 = icmp eq ptr %314, null
  br i1 %.not460, label %.thread537, label %315

315:                                              ; preds = %313, %.thread497
  %316 = load ptr, ptr %240, align 8, !tbaa !67
  %317 = getelementptr inbounds ptr, ptr %316, i64 %indvars.iv596
  store ptr %spec.store.select5, ptr %317, align 8, !tbaa !13
  %318 = getelementptr inbounds i8, ptr %.3389493, i64 24
  %319 = load i8, ptr %318, align 8, !tbaa !68
  %320 = select i1 %230, i8 %319, i8 0
  %321 = load ptr, ptr %241, align 8, !tbaa !69
  %322 = getelementptr inbounds i8, ptr %321, i64 %indvars.iv596
  store i8 %320, ptr %322, align 1, !tbaa !38
  %indvars.iv.next597 = add nuw nsw i64 %indvars.iv596, 1
  %323 = getelementptr inbounds i8, ptr %.3389493, i64 32
  %324 = load i32, ptr %.0366, align 8, !tbaa !43
  %325 = sext i32 %324 to i64
  %326 = icmp slt i64 %indvars.iv.next597, %325
  br i1 %326, label %242, label %._crit_edge570.loopexit, !llvm.loop !70

._crit_edge570.loopexit:                          ; preds = %315
  %327 = trunc nuw nsw i64 %indvars.iv.next597 to i32
  br label %._crit_edge570

._crit_edge570:                                   ; preds = %._crit_edge570.loopexit, %224
  %.1377.lcssa = phi i32 [ 0, %224 ], [ %327, %._crit_edge570.loopexit ]
  br i1 %.not438, label %368, label %.preheader549

.preheader549:                                    ; preds = %._crit_edge570
  %328 = getelementptr inbounds i8, ptr %.0395, i64 94
  %329 = load i16, ptr %328, align 2, !tbaa !51
  %.not590 = icmp eq i16 %329, 0
  br i1 %.not590, label %.loopexit550, label %.lr.ph574

.lr.ph574:                                        ; preds = %.preheader549
  %330 = getelementptr inbounds i8, ptr %.0395, i64 8
  %331 = getelementptr inbounds i8, ptr %197, i64 8
  %332 = getelementptr inbounds i8, ptr %197, i64 96
  %333 = getelementptr inbounds i8, ptr %.0395, i64 64
  %334 = getelementptr inbounds i8, ptr %197, i64 64
  %335 = getelementptr inbounds i8, ptr %.0395, i64 56
  %336 = getelementptr inbounds i8, ptr %197, i64 56
  br label %337

337:                                              ; preds = %.lr.ph574, %364
  %indvars.iv599 = phi i64 [ 0, %.lr.ph574 ], [ %indvars.iv.next600, %364 ]
  %.2573 = phi i32 [ %.1377.lcssa, %.lr.ph574 ], [ %.3, %364 ]
  %338 = load ptr, ptr %330, align 8, !tbaa !64
  %339 = getelementptr inbounds i16, ptr %338, i64 %indvars.iv599
  %340 = load i16, ptr %339, align 2, !tbaa !65
  %341 = sext i16 %340 to i32
  %342 = load ptr, ptr %331, align 8, !tbaa !64
  %343 = load i16, ptr %221, align 2, !tbaa !51
  %344 = zext i16 %343 to i32
  %345 = call i32 @hasColumn(ptr noundef %342, i32 noundef %344, i32 noundef %341)
  %.not454 = icmp eq i32 %345, 0
  br i1 %.not454, label %349, label %346

346:                                              ; preds = %337
  %347 = load i16, ptr %332, align 8, !tbaa !71
  %348 = add i16 %347, -1
  store i16 %348, ptr %332, align 8, !tbaa !71
  br label %364

349:                                              ; preds = %337
  %350 = load ptr, ptr %331, align 8, !tbaa !64
  %351 = sext i32 %.2573 to i64
  %352 = getelementptr inbounds i16, ptr %350, i64 %351
  store i16 %340, ptr %352, align 2, !tbaa !65
  %353 = load ptr, ptr %333, align 8, !tbaa !67
  %354 = getelementptr inbounds ptr, ptr %353, i64 %indvars.iv599
  %355 = load ptr, ptr %354, align 8, !tbaa !13
  %356 = load ptr, ptr %334, align 8, !tbaa !67
  %357 = getelementptr inbounds ptr, ptr %356, i64 %351
  store ptr %355, ptr %357, align 8, !tbaa !13
  %358 = load ptr, ptr %335, align 8, !tbaa !69
  %359 = getelementptr inbounds i8, ptr %358, i64 %indvars.iv599
  %360 = load i8, ptr %359, align 1, !tbaa !38
  %361 = load ptr, ptr %336, align 8, !tbaa !69
  %362 = getelementptr inbounds i8, ptr %361, i64 %351
  store i8 %360, ptr %362, align 1, !tbaa !38
  %363 = add nsw i32 %.2573, 1
  br label %364

364:                                              ; preds = %349, %346
  %.3 = phi i32 [ %.2573, %346 ], [ %363, %349 ]
  %indvars.iv.next600 = add nuw nsw i64 %indvars.iv599, 1
  %365 = load i16, ptr %328, align 2, !tbaa !51
  %366 = zext i16 %365 to i64
  %367 = icmp ult i64 %indvars.iv.next600, %366
  br i1 %367, label %337, label %.loopexit550, !llvm.loop !72

368:                                              ; preds = %._crit_edge570
  %369 = getelementptr inbounds i8, ptr %197, i64 8
  %370 = load ptr, ptr %369, align 8, !tbaa !64
  %371 = zext nneg i32 %.1377.lcssa to i64
  %372 = getelementptr inbounds i16, ptr %370, i64 %371
  store i16 -1, ptr %372, align 2, !tbaa !65
  %373 = getelementptr inbounds i8, ptr %197, i64 64
  %374 = load ptr, ptr %373, align 8, !tbaa !67
  %375 = getelementptr inbounds ptr, ptr %374, i64 %371
  store ptr @sqlite3StrBINARY, ptr %375, align 8, !tbaa !13
  br label %.loopexit550

.loopexit550:                                     ; preds = %364, %.preheader549, %368
  call void @sqlite3DefaultRowEst(ptr noundef nonnull %197)
  %376 = getelementptr inbounds i8, ptr %0, i64 512
  %377 = load ptr, ptr %376, align 8, !tbaa !32
  %378 = icmp eq ptr %377, null
  br i1 %378, label %379, label %380

379:                                              ; preds = %.loopexit550
  call void @estimateIndexWidth(ptr noundef nonnull %197)
  br label %380

380:                                              ; preds = %379, %.loopexit550
  br i1 %31, label %381, label %.loopexit

381:                                              ; preds = %380
  %382 = getelementptr inbounds i8, ptr %197, i64 96
  %383 = load i16, ptr %382, align 8, !tbaa !71
  %384 = zext i16 %383 to i32
  %385 = getelementptr inbounds i8, ptr %.0370, i64 70
  %386 = load i16, ptr %385, align 2, !tbaa !40
  %387 = sext i16 %386 to i32
  %.not442 = icmp slt i32 %384, %387
  br i1 %.not442, label %.loopexit, label %388

388:                                              ; preds = %381
  %389 = load i8, ptr %208, align 1
  %390 = or i8 %389, 32
  store i8 %390, ptr %208, align 1
  %391 = load i16, ptr %385, align 2, !tbaa !40
  %392 = icmp sgt i16 %391, 0
  br i1 %392, label %.lr.ph577, label %.loopexit

.lr.ph577:                                        ; preds = %388
  %393 = getelementptr inbounds i8, ptr %.0370, i64 68
  br label %394

394:                                              ; preds = %.lr.ph577, %406
  %395 = phi i16 [ %391, %.lr.ph577 ], [ %407, %406 ]
  %.3381575 = phi i32 [ 0, %.lr.ph577 ], [ %408, %406 ]
  %396 = load i16, ptr %393, align 4, !tbaa !62
  %397 = sext i16 %396 to i32
  %398 = icmp eq i32 %.3381575, %397
  br i1 %398, label %406, label %399

399:                                              ; preds = %394
  %400 = trunc i32 %.3381575 to i16
  %401 = call signext i16 @sqlite3ColumnOfIndex(ptr noundef nonnull %197, i16 noundef signext %400)
  %402 = icmp sgt i16 %401, -1
  br i1 %402, label %._crit_edge606, label %403

._crit_edge606:                                   ; preds = %399
  %.pre607 = load i16, ptr %385, align 2, !tbaa !40
  br label %406

403:                                              ; preds = %399
  %404 = load i8, ptr %208, align 1
  %405 = and i8 %404, -33
  store i8 %405, ptr %208, align 1
  br label %.loopexit

406:                                              ; preds = %._crit_edge606, %394
  %407 = phi i16 [ %.pre607, %._crit_edge606 ], [ %395, %394 ]
  %408 = add nuw nsw i32 %.3381575, 1
  %409 = sext i16 %407 to i32
  %410 = icmp slt i32 %408, %409
  br i1 %410, label %394, label %.loopexit, !llvm.loop !73

.loopexit:                                        ; preds = %406, %388, %403, %381, %380
  %411 = load ptr, ptr %376, align 8, !tbaa !32
  %412 = icmp eq ptr %.0370, %411
  br i1 %412, label %413, label %.thread514

413:                                              ; preds = %.loopexit
  %414 = getelementptr inbounds i8, ptr %.0370, i64 16
  %.0375585 = load ptr, ptr %414, align 8, !tbaa !13
  %.not443586 = icmp eq ptr %.0375585, null
  br i1 %.not443586, label %.thread514, label %.lr.ph589

.lr.ph589:                                        ; preds = %413
  %415 = getelementptr inbounds i8, ptr %197, i64 8
  %416 = getelementptr inbounds i8, ptr %197, i64 64
  br label %417

417:                                              ; preds = %.lr.ph589, %466
  %.0375587 = phi ptr [ %.0375585, %.lr.ph589 ], [ %.0375, %466 ]
  %418 = getelementptr inbounds i8, ptr %.0375587, i64 94
  %419 = load i16, ptr %418, align 2, !tbaa !51
  %420 = load i16, ptr %221, align 2, !tbaa !51
  %.not444 = icmp eq i16 %419, %420
  br i1 %.not444, label %.preheader548, label %466

.preheader548:                                    ; preds = %417
  %421 = getelementptr inbounds i8, ptr %.0375587, i64 8
  %422 = getelementptr inbounds i8, ptr %.0375587, i64 64
  %.not591 = icmp eq i16 %419, 0
  br i1 %.not591, label %.thread508, label %.lr.ph579.preheader

.lr.ph579.preheader:                              ; preds = %.preheader548
  %423 = load ptr, ptr %421, align 8, !tbaa !64
  %424 = load i16, ptr %423, align 2, !tbaa !65
  %425 = load ptr, ptr %415, align 8, !tbaa !64
  %426 = load i16, ptr %425, align 2, !tbaa !65
  %.not445618 = icmp eq i16 %424, %426
  br i1 %.not445618, label %.lr.ph620, label %.thread508.loopexit

.lr.ph579:                                        ; preds = %440
  %427 = load ptr, ptr %421, align 8, !tbaa !64
  %428 = getelementptr inbounds i16, ptr %427, i64 %indvars.iv.next603
  %429 = load i16, ptr %428, align 2, !tbaa !65
  %430 = load ptr, ptr %415, align 8, !tbaa !64
  %431 = getelementptr inbounds i16, ptr %430, i64 %indvars.iv.next603
  %432 = load i16, ptr %431, align 2, !tbaa !65
  %.not445 = icmp eq i16 %429, %432
  br i1 %.not445, label %.lr.ph620, label %.thread508.loopexit, !llvm.loop !74

.lr.ph620:                                        ; preds = %.lr.ph579.preheader, %.lr.ph579
  %indvars.iv602619 = phi i64 [ %indvars.iv.next603, %.lr.ph579 ], [ 0, %.lr.ph579.preheader ]
  %433 = load ptr, ptr %422, align 8, !tbaa !67
  %434 = getelementptr inbounds ptr, ptr %433, i64 %indvars.iv602619
  %435 = load ptr, ptr %434, align 8, !tbaa !13
  %436 = load ptr, ptr %416, align 8, !tbaa !67
  %437 = getelementptr inbounds ptr, ptr %436, i64 %indvars.iv602619
  %438 = load ptr, ptr %437, align 8, !tbaa !13
  %439 = call i32 @sqlite3StrICmp(ptr noundef %435, ptr noundef %438) #4
  %.not446 = icmp eq i32 %439, 0
  %.pre608.pre = load i16, ptr %418, align 2, !tbaa !51
  br i1 %.not446, label %440, label %.thread508.loopexit

440:                                              ; preds = %.lr.ph620
  %indvars.iv.next603 = add nuw nsw i64 %indvars.iv602619, 1
  %441 = zext i16 %.pre608.pre to i64
  %442 = icmp ult i64 %indvars.iv.next603, %441
  br i1 %442, label %.lr.ph579, label %.thread508.loopexit, !llvm.loop !74

.thread508.loopexit:                              ; preds = %440, %.lr.ph579, %.lr.ph620, %.lr.ph579.preheader
  %.pre608 = phi i16 [ %419, %.lr.ph579.preheader ], [ %.pre608.pre, %.lr.ph620 ], [ %.pre608.pre, %.lr.ph579 ], [ %.pre608.pre, %440 ]
  %.0374.lcssa.ph.in = phi i64 [ 0, %.lr.ph579.preheader ], [ %indvars.iv.next603, %440 ], [ %indvars.iv.next603, %.lr.ph579 ], [ %indvars.iv602619, %.lr.ph620 ]
  %.0374.lcssa.ph = trunc i64 %.0374.lcssa.ph.in to i32
  br label %.thread508

.thread508:                                       ; preds = %.thread508.loopexit, %.preheader548
  %443 = phi i16 [ 0, %.preheader548 ], [ %.pre608, %.thread508.loopexit ]
  %.0374.lcssa = phi i32 [ 0, %.preheader548 ], [ %.0374.lcssa.ph, %.thread508.loopexit ]
  %444 = zext i16 %443 to i32
  %445 = icmp eq i32 %.0374.lcssa, %444
  br i1 %445, label %446, label %466

446:                                              ; preds = %.thread508
  %447 = getelementptr inbounds i8, ptr %.0375587, i64 98
  %448 = load i8, ptr %447, align 2, !tbaa !55
  %449 = load i8, ptr %207, align 2, !tbaa !55
  %.not447 = icmp eq i8 %448, %449
  br i1 %.not447, label %459, label %450

450:                                              ; preds = %446
  %451 = icmp eq i8 %448, 10
  %452 = icmp eq i8 %449, 10
  %or.cond473 = or i1 %451, %452
  br i1 %or.cond473, label %454, label %453

453:                                              ; preds = %450
  call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %0, ptr noundef nonnull @.str.55, i32 noundef 0) #4
  %.pre609 = load i8, ptr %447, align 2, !tbaa !55
  br label %454

454:                                              ; preds = %453, %450
  %455 = phi i8 [ %.pre609, %453 ], [ %448, %450 ]
  %456 = icmp eq i8 %455, 10
  br i1 %456, label %457, label %459

457:                                              ; preds = %454
  %458 = load i8, ptr %207, align 2, !tbaa !55
  store i8 %458, ptr %447, align 2, !tbaa !55
  br label %459

459:                                              ; preds = %454, %457, %446
  %460 = icmp eq i8 %10, 2
  br i1 %460, label %461, label %.thread537

461:                                              ; preds = %459
  %462 = getelementptr inbounds i8, ptr %.0375587, i64 99
  %463 = load i8, ptr %462, align 1
  %464 = and i8 %463, -4
  %465 = or disjoint i8 %464, 2
  store i8 %465, ptr %462, align 1
  br label %.thread537

466:                                              ; preds = %417, %.thread508
  %467 = getelementptr inbounds i8, ptr %.0375587, i64 40
  %.0375 = load ptr, ptr %467, align 8, !tbaa !13
  %.not443 = icmp eq ptr %.0375, null
  br i1 %.not443, label %.thread514, label %417, !llvm.loop !75

.thread514:                                       ; preds = %466, %413, %.loopexit
  %468 = getelementptr inbounds i8, ptr %16, i64 164
  %469 = getelementptr inbounds i8, ptr %16, i64 169
  %470 = load i8, ptr %469, align 1, !tbaa !23
  %.not448 = icmp eq i8 %470, 0
  br i1 %.not448, label %484, label %471

471:                                              ; preds = %.thread514
  %472 = load ptr, ptr %218, align 8, !tbaa !56
  %473 = getelementptr inbounds i8, ptr %472, i64 32
  %474 = load ptr, ptr %197, align 8, !tbaa !53
  %475 = call ptr @sqlite3HashInsert(ptr noundef nonnull %473, ptr noundef %474, ptr noundef nonnull %197) #4
  %.not450 = icmp eq ptr %475, null
  br i1 %.not450, label %476, label %483

476:                                              ; preds = %471
  %477 = getelementptr inbounds i8, ptr %16, i64 44
  %478 = load i32, ptr %477, align 4, !tbaa !76
  %479 = or i32 %478, 2
  store i32 %479, ptr %477, align 4, !tbaa !76
  br i1 %31, label %480, label %.thread524

480:                                              ; preds = %476
  %481 = load i32, ptr %468, align 4, !tbaa !77
  %482 = getelementptr inbounds i8, ptr %197, i64 88
  store i32 %481, ptr %482, align 8, !tbaa !78
  br label %.thread518

483:                                              ; preds = %471
  call void @sqlite3OomFault(ptr noundef nonnull %16) #4
  br label %.thread537

484:                                              ; preds = %.thread514
  %485 = getelementptr inbounds i8, ptr %.0370, i64 64
  %486 = load i32, ptr %485, align 8, !tbaa !31
  %487 = and i32 %486, 32
  %488 = icmp eq i32 %487, 0
  %or.cond7 = or i1 %31, %488
  br i1 %or.cond7, label %489, label %.thread524

489:                                              ; preds = %484
  %490 = getelementptr inbounds i8, ptr %0, i64 56
  %491 = load i32, ptr %490, align 8, !tbaa !79
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %490, align 8, !tbaa !79
  %493 = call ptr @sqlite3GetVdbe(ptr noundef nonnull %0) #4
  %494 = icmp eq ptr %493, null
  br i1 %494, label %551, label %495

495:                                              ; preds = %489
  call void @sqlite3BeginWriteOperation(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %.1385)
  %496 = call i32 @sqlite3VdbeAddOp0(ptr noundef nonnull %493, i32 noundef 162) #4
  %497 = getelementptr inbounds i8, ptr %197, i64 88
  store i32 %496, ptr %497, align 8, !tbaa !78
  %498 = call i32 @sqlite3VdbeAddOp2(ptr noundef nonnull %493, i32 noundef 134, i32 noundef %.1385, i32 noundef %492) #4
  %.not449 = icmp eq ptr %6, null
  br i1 %.not449, label %519, label %499

499:                                              ; preds = %495
  %500 = getelementptr inbounds i8, ptr %0, i64 448
  %501 = load ptr, ptr %500, align 8, !tbaa !80
  %502 = load ptr, ptr %13, align 8, !tbaa !13
  %503 = load ptr, ptr %502, align 8, !tbaa !81
  %504 = ptrtoint ptr %501 to i64
  %505 = ptrtoint ptr %503 to i64
  %506 = sub i64 %504, %505
  %507 = trunc i64 %506 to i32
  %508 = getelementptr inbounds i8, ptr %0, i64 456
  %509 = load i32, ptr %508, align 8, !tbaa !82
  %510 = add i32 %509, %507
  %511 = sext i32 %510 to i64
  %512 = getelementptr i8, ptr %503, i64 %511
  %513 = getelementptr i8, ptr %512, i64 -1
  %514 = load i8, ptr %513, align 1, !tbaa !38
  %515 = icmp eq i8 %514, 59
  %516 = sext i1 %515 to i32
  %spec.select478 = add nsw i32 %510, %516
  %517 = select i1 %.not440, ptr @.str.20, ptr @.str.57
  %518 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef nonnull %16, ptr noundef nonnull @.str.56, ptr noundef nonnull %517, i32 noundef %spec.select478, ptr noundef %503) #4
  br label %519

519:                                              ; preds = %495, %499
  %.0367 = phi ptr [ %518, %499 ], [ null, %495 ]
  %520 = load ptr, ptr %84, align 8, !tbaa !27
  %521 = getelementptr inbounds %struct.Db, ptr %520, i64 %86
  %522 = load ptr, ptr %521, align 8, !tbaa !35
  %523 = load ptr, ptr %197, align 8, !tbaa !53
  %524 = load ptr, ptr %.0370, align 8, !tbaa !30
  call void (ptr, ptr, ...) @sqlite3NestedParse(ptr noundef nonnull %0, ptr noundef nonnull @.str.58, ptr noundef %522, ptr noundef nonnull @.str, ptr noundef %523, ptr noundef %524, i32 noundef %492, ptr noundef %.0367)
  call void @sqlite3DbFree(ptr noundef nonnull %16, ptr noundef %.0367) #4
  br i1 %31, label %525, label %.thread521

525:                                              ; preds = %519
  call void @sqlite3RefillIndex(ptr noundef nonnull %0, ptr noundef nonnull %197, i32 noundef %492)
  call void @sqlite3ChangeCookie(ptr noundef nonnull %0, i32 noundef %.1385)
  %526 = load ptr, ptr %197, align 8, !tbaa !53
  %527 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef nonnull %16, ptr noundef nonnull @.str.59, ptr noundef %526) #4
  call void @sqlite3VdbeAddParseSchemaOp(ptr noundef nonnull %493, i32 noundef %.1385, ptr noundef %527) #4
  %528 = call i32 @sqlite3VdbeAddOp0(ptr noundef nonnull %493, i32 noundef 151) #4
  br label %.thread521

.thread521:                                       ; preds = %519, %525
  %529 = load i32, ptr %497, align 8, !tbaa !78
  call void @sqlite3VdbeJumpHere(ptr noundef nonnull %493, i32 noundef %529) #4
  br label %.thread518

.thread518:                                       ; preds = %480, %.thread521
  %530 = load i8, ptr %469, align 1, !tbaa !23
  %531 = icmp ne i8 %530, 0
  %532 = icmp eq ptr %3, null
  %or.cond9 = or i1 %532, %531
  br i1 %or.cond9, label %.thread524, label %.thread537

.thread524:                                       ; preds = %476, %484, %.thread518
  %.not451 = icmp eq i32 %5, 5
  %533 = getelementptr inbounds i8, ptr %.0370, i64 16
  %534 = load ptr, ptr %533, align 8, !tbaa !83
  br i1 %.not451, label %535, label %.thread524._crit_edge

535:                                              ; preds = %.thread524
  %536 = icmp eq ptr %534, null
  br i1 %536, label %.thread524._crit_edge, label %537

537:                                              ; preds = %535
  %538 = getelementptr inbounds i8, ptr %534, i64 98
  %539 = load i8, ptr %538, align 2, !tbaa !55
  %540 = icmp eq i8 %539, 5
  br i1 %540, label %.thread524._crit_edge, label %.preheader

.thread524._crit_edge:                            ; preds = %.thread524, %537, %535
  %541 = phi ptr [ %534, %537 ], [ null, %535 ], [ %534, %.thread524 ]
  %542 = getelementptr inbounds i8, ptr %.0370, i64 16
  %543 = getelementptr inbounds i8, ptr %197, i64 40
  store ptr %541, ptr %543, align 8, !tbaa !84
  store ptr %197, ptr %542, align 8, !tbaa !83
  br label %.thread527

.preheader:                                       ; preds = %537, %546
  %.0 = phi ptr [ %545, %546 ], [ %534, %537 ]
  %544 = getelementptr inbounds i8, ptr %.0, i64 40
  %545 = load ptr, ptr %544, align 8, !tbaa !84
  %.not452 = icmp eq ptr %545, null
  br i1 %.not452, label %.critedge, label %546

546:                                              ; preds = %.preheader
  %547 = getelementptr inbounds i8, ptr %545, i64 98
  %548 = load i8, ptr %547, align 2, !tbaa !55
  %.not453 = icmp eq i8 %548, 5
  br i1 %.not453, label %.critedge, label %.preheader, !llvm.loop !85

.critedge:                                        ; preds = %.preheader, %546
  %549 = getelementptr inbounds i8, ptr %.0, i64 40
  %550 = getelementptr inbounds i8, ptr %197, i64 40
  store ptr %545, ptr %550, align 8, !tbaa !84
  store ptr %197, ptr %549, align 8, !tbaa !84
  br label %.thread527

551:                                              ; preds = %489, %190
  %.1369 = phi ptr [ %7, %190 ], [ null, %489 ]
  %.not462 = icmp eq ptr %197, null
  br i1 %.not462, label %.thread527, label %.thread537

.thread537:                                       ; preds = %313, %242, %253, %459, %461, %.thread518, %483, %551
  %.1369545 = phi ptr [ %.1369, %551 ], [ null, %483 ], [ null, %.thread518 ], [ null, %461 ], [ null, %459 ], [ null, %253 ], [ null, %242 ], [ null, %313 ]
  call void @freeIndex(ptr noundef %16, ptr noundef nonnull %197)
  br label %.thread527

.thread527:                                       ; preds = %145, %.thread, %._crit_edge, %.thread524._crit_edge, %.critedge, %76, %121, %162, %126, %127, %114, %111, %108, %104, %99, %67, %52, %32, %28, %23, %19, %11, %.thread537, %551
  %.1535 = phi ptr [ %.0366, %.thread537 ], [ %.0366, %551 ], [ %4, %._crit_edge ], [ %.0366, %.thread524._crit_edge ], [ %.0366, %.critedge ], [ %4, %76 ], [ %4, %121 ], [ null, %162 ], [ %4, %126 ], [ %4, %127 ], [ %4, %114 ], [ %4, %111 ], [ %4, %108 ], [ %4, %104 ], [ %4, %99 ], [ %4, %67 ], [ %4, %52 ], [ %4, %32 ], [ %4, %28 ], [ %4, %23 ], [ %4, %19 ], [ %4, %11 ], [ %4, %.thread ], [ %4, %145 ]
  %.1369534 = phi ptr [ %.1369545, %.thread537 ], [ %.1369, %551 ], [ %7, %._crit_edge ], [ null, %.thread524._crit_edge ], [ null, %.critedge ], [ %7, %76 ], [ %7, %121 ], [ %7, %162 ], [ %7, %126 ], [ %7, %127 ], [ %7, %114 ], [ %7, %111 ], [ %7, %108 ], [ %7, %104 ], [ %7, %99 ], [ %7, %67 ], [ %7, %52 ], [ %7, %32 ], [ %7, %28 ], [ %7, %23 ], [ %7, %19 ], [ %7, %11 ], [ %7, %.thread ], [ %7, %145 ]
  %.1373533 = phi ptr [ %.0372, %.thread537 ], [ %.0372, %551 ], [ null, %._crit_edge ], [ %.0372, %.thread524._crit_edge ], [ %.0372, %.critedge ], [ null, %76 ], [ %112, %121 ], [ %.0372, %162 ], [ %112, %126 ], [ %112, %127 ], [ %112, %114 ], [ null, %111 ], [ null, %108 ], [ null, %104 ], [ null, %99 ], [ null, %67 ], [ null, %52 ], [ null, %32 ], [ null, %28 ], [ null, %23 ], [ null, %19 ], [ null, %11 ], [ %.0372, %.thread ], [ %.0372, %145 ]
  call void @sqlite3ExprDelete(ptr noundef %16, ptr noundef %.1369534) #4
  call void @sqlite3ExprListDelete(ptr noundef %16, ptr noundef %.1535) #4
  call void @sqlite3SrcListDelete(ptr noundef %16, ptr noundef %3)
  call void @sqlite3DbFree(ptr noundef %16, ptr noundef %.1373533) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #4
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !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 = !{!7, !7, i64 0}
!14 = !{!15, !8, i64 85}
!15 = !{!"sqlite3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 44, !16, i64 48, !16, 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, !17, 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, !18, i64 344, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !10, i64 432, !10, i64 436, !19, i64 440, !7, i64 464, !7, i64 472, !7, i64 480, !19, i64 488, !19, i64 512, !20, i64 536, !8, i64 560, !7, i64 624, !10, i64 632, !10, i64 636, !10, i64 640, !16, i64 648, !16, i64 656, !7, i64 664}
!16 = !{!"long long", !8, i64 0}
!17 = !{!"sqlite3InitInfo", !10, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7}
!18 = !{!"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}
!19 = !{!"Hash", !10, i64 0, !10, i64 4, !7, i64 8, !7, i64 16}
!20 = !{!"BusyHandler", !7, i64 0, !7, i64 8, !10, i64 16}
!21 = !{!6, !10, i64 48}
!22 = !{!6, !8, i64 468}
!23 = !{!15, !8, i64 169}
!24 = !{!11, !10, i64 8}
!25 = !{!26, !7, i64 112}
!26 = !{!"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}
!27 = !{!15, !7, i64 32}
!28 = !{!29, !7, i64 24}
!29 = !{!"Db", !7, i64 0, !7, i64 8, !8, i64 16, !8, i64 17, !7, i64 24}
!30 = !{!26, !7, i64 0}
!31 = !{!26, !10, i64 64}
!32 = !{!6, !7, i64 512}
!33 = !{!26, !7, i64 24}
!34 = !{!26, !10, i64 84}
!35 = !{!29, !7, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!8, !8, i64 0}
!39 = !{!26, !7, i64 8}
!40 = !{!26, !12, i64 70}
!41 = !{!42, !7, i64 0}
!42 = !{!"Column", !7, i64 0, !7, i64 8, !7, i64 16, !8, i64 24, !8, i64 25, !8, i64 26, !8, i64 27}
!43 = !{!44, !10, i64 0}
!44 = !{!"ExprList", !10, i64 0, !7, i64 8}
!45 = !{!44, !7, i64 8}
!46 = !{!47, !7, i64 0}
!47 = !{!"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}
!48 = !{!49, !8, i64 0}
!49 = !{!"Expr", !8, i64 0, !8, i64 1, !10, i64 4, !8, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !12, i64 50, !12, i64 52, !8, i64 54, !7, i64 56, !7, i64 64}
!50 = distinct !{!50, !37}
!51 = !{!52, !12, i64 94}
!52 = !{!"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}
!53 = !{!52, !7, i64 0}
!54 = !{!52, !7, i64 24}
!55 = !{!52, !8, i64 98}
!56 = !{!52, !7, i64 48}
!57 = !{!52, !7, i64 72}
!58 = !{!59, !8, i64 112}
!59 = !{!"Schema", !10, i64 0, !10, i64 4, !19, i64 8, !19, i64 32, !19, i64 56, !19, i64 80, !7, i64 104, !8, i64 112, !8, i64 113, !12, i64 114, !10, i64 116}
!60 = !{!52, !7, i64 80}
!61 = !{!49, !12, i64 48}
!62 = !{!26, !12, i64 68}
!63 = !{!42, !8, i64 24}
!64 = !{!52, !7, i64 8}
!65 = !{!12, !12, i64 0}
!66 = !{!42, !7, i64 16}
!67 = !{!52, !7, i64 64}
!68 = !{!47, !8, i64 24}
!69 = !{!52, !7, i64 56}
!70 = distinct !{!70, !37}
!71 = !{!52, !12, i64 96}
!72 = distinct !{!72, !37}
!73 = distinct !{!73, !37}
!74 = distinct !{!74, !37}
!75 = distinct !{!75, !37}
!76 = !{!15, !10, i64 44}
!77 = !{!15, !10, i64 164}
!78 = !{!52, !10, i64 88}
!79 = !{!6, !10, i64 56}
!80 = !{!6, !7, i64 448}
!81 = !{!11, !7, i64 0}
!82 = !{!6, !10, i64 456}
!83 = !{!26, !7, i64 16}
!84 = !{!52, !7, i64 40}
!85 = distinct !{!85, !37}


; 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