; LLVM IR from flomar/sqlmemdb :: sqlite (sqlite3)

; 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.Sqlite3Config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.sqlite3_mem_methods, %struct.sqlite3_mutex_methods, %struct.sqlite3_pcache_methods2, ptr, i32, i32, i32, i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32 }
%struct.sqlite3_mem_methods = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.sqlite3_mutex_methods = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.sqlite3_pcache_methods2 = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__va_list_tag = type { i32, i32, ptr, ptr }

@sqlite3Config = external hidden global %struct.Sqlite3Config, align 8

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

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3MisuseError(i32 noundef) #1

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

; Function Attrs: 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) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.va_start.p0(ptr) #3

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.va_end.p0(ptr) #3

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3_config(i32 noundef %0, ...) #1 {
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca [1 x %struct.__va_list_tag], align 16
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  store i32 %0, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  store i32 0, ptr %5, align 4, !tbaa !5
  %9 = load i32, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 26), align 4, !tbaa !9
  %10 = icmp ne i32 %9, 0
  br i1 %10, label %11, label %13

11:                                               ; preds = %1
  %12 = call i32 @sqlite3MisuseError(i32 noundef 154071)
  store i32 %12, ptr %2, align 4
  store i32 1, ptr %6, align 4
  br label %426

13:                                               ; preds = %1
  %14 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  call void @llvm.va_start.p0(ptr %14)
  %15 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %15, label %422 [
    i32 1, label %16
    i32 2, label %17
    i32 3, label %18
    i32 10, label %19
    i32 11, label %36
    i32 4, label %53
    i32 5, label %70
    i32 9, label %91
    i32 27, label %108
    i32 7, label %125
    i32 24, label %174
    i32 14, label %196
    i32 15, label %197
    i32 18, label %198
    i32 19, label %215
    i32 13, label %236
    i32 16, label %269
    i32 17, label %302
    i32 20, label %319
    i32 22, label %336
    i32 25, label %388
    i32 26, label %405
  ]

16:                                               ; preds = %13
  store i32 0, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 1), align 4, !tbaa !16
  store i32 0, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 2), align 8, !tbaa !17
  br label %423

17:                                               ; preds = %13
  store i32 1, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 1), align 4, !tbaa !16
  store i32 0, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 2), align 8, !tbaa !17
  br label %423

18:                                               ; preds = %13
  store i32 1, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 1), align 4, !tbaa !16
  store i32 1, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 2), align 8, !tbaa !17
  br label %423

19:                                               ; preds = %13
  %20 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %21 = getelementptr inbounds %struct.__va_list_tag, ptr %20, i32 0, i32 0
  %22 = load i32, ptr %21, align 16
  %23 = icmp ule i32 %22, 40
  br i1 %23, label %24, label %29

24:                                               ; preds = %19
  %25 = getelementptr inbounds %struct.__va_list_tag, ptr %20, i32 0, i32 3
  %26 = load ptr, ptr %25, align 16
  %27 = getelementptr i8, ptr %26, i32 %22
  %28 = add i32 %22, 8
  store i32 %28, ptr %21, align 16
  br label %33

29:                                               ; preds = %19
  %30 = getelementptr inbounds %struct.__va_list_tag, ptr %20, i32 0, i32 2
  %31 = load ptr, ptr %30, align 8
  %32 = getelementptr i8, ptr %31, i32 8
  store ptr %32, ptr %30, align 8
  br label %33

33:                                               ; preds = %29, %24
  %34 = phi ptr [ %27, %24 ], [ %31, %29 ]
  %35 = load ptr, ptr %34, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 12), ptr align 8 %35, i64 72, i1 false), !tbaa.struct !19
  br label %423

36:                                               ; preds = %13
  %37 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %38 = getelementptr inbounds %struct.__va_list_tag, ptr %37, i32 0, i32 0
  %39 = load i32, ptr %38, align 16
  %40 = icmp ule i32 %39, 40
  br i1 %40, label %41, label %46

41:                                               ; preds = %36
  %42 = getelementptr inbounds %struct.__va_list_tag, ptr %37, i32 0, i32 3
  %43 = load ptr, ptr %42, align 16
  %44 = getelementptr i8, ptr %43, i32 %39
  %45 = add i32 %39, 8
  store i32 %45, ptr %38, align 16
  br label %50

46:                                               ; preds = %36
  %47 = getelementptr inbounds %struct.__va_list_tag, ptr %37, i32 0, i32 2
  %48 = load ptr, ptr %47, align 8
  %49 = getelementptr i8, ptr %48, i32 8
  store ptr %49, ptr %47, align 8
  br label %50

50:                                               ; preds = %46, %41
  %51 = phi ptr [ %44, %41 ], [ %48, %46 ]
  %52 = load ptr, ptr %51, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 12), i64 72, i1 false), !tbaa.struct !19
  br label %423

53:                                               ; preds = %13
  %54 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %55 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 0
  %56 = load i32, ptr %55, align 16
  %57 = icmp ule i32 %56, 40
  br i1 %57, label %58, label %63

58:                                               ; preds = %53
  %59 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 3
  %60 = load ptr, ptr %59, align 16
  %61 = getelementptr i8, ptr %60, i32 %56
  %62 = add i32 %56, 8
  store i32 %62, ptr %55, align 16
  br label %67

63:                                               ; preds = %53
  %64 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 2
  %65 = load ptr, ptr %64, align 8
  %66 = getelementptr i8, ptr %65, i32 8
  store ptr %66, ptr %64, align 8
  br label %67

67:                                               ; preds = %63, %58
  %68 = phi ptr [ %61, %58 ], [ %65, %63 ]
  %69 = load ptr, ptr %68, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 11), ptr align 8 %69, i64 64, i1 false), !tbaa.struct !20
  br label %423

70:                                               ; preds = %13
  %71 = load ptr, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 11), align 8, !tbaa !21
  %72 = icmp eq ptr %71, null
  br i1 %72, label %73, label %74

73:                                               ; preds = %70
  call void @sqlite3MemSetDefault()
  br label %74

74:                                               ; preds = %73, %70
  %75 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %76 = getelementptr inbounds %struct.__va_list_tag, ptr %75, i32 0, i32 0
  %77 = load i32, ptr %76, align 16
  %78 = icmp ule i32 %77, 40
  br i1 %78, label %79, label %84

79:                                               ; preds = %74
  %80 = getelementptr inbounds %struct.__va_list_tag, ptr %75, i32 0, i32 3
  %81 = load ptr, ptr %80, align 16
  %82 = getelementptr i8, ptr %81, i32 %77
  %83 = add i32 %77, 8
  store i32 %83, ptr %76, align 16
  br label %88

84:                                               ; preds = %74
  %85 = getelementptr inbounds %struct.__va_list_tag, ptr %75, i32 0, i32 2
  %86 = load ptr, ptr %85, align 8
  %87 = getelementptr i8, ptr %86, i32 8
  store ptr %87, ptr %85, align 8
  br label %88

88:                                               ; preds = %84, %79
  %89 = phi ptr [ %82, %79 ], [ %86, %84 ]
  %90 = load ptr, ptr %89, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %90, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 11), i64 64, i1 false), !tbaa.struct !20
  br label %423

91:                                               ; preds = %13
  %92 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %93 = getelementptr inbounds %struct.__va_list_tag, ptr %92, i32 0, i32 0
  %94 = load i32, ptr %93, align 16
  %95 = icmp ule i32 %94, 40
  br i1 %95, label %96, label %101

96:                                               ; preds = %91
  %97 = getelementptr inbounds %struct.__va_list_tag, ptr %92, i32 0, i32 3
  %98 = load ptr, ptr %97, align 16
  %99 = getelementptr i8, ptr %98, i32 %94
  %100 = add i32 %94, 8
  store i32 %100, ptr %93, align 16
  br label %105

101:                                              ; preds = %91
  %102 = getelementptr inbounds %struct.__va_list_tag, ptr %92, i32 0, i32 2
  %103 = load ptr, ptr %102, align 8
  %104 = getelementptr i8, ptr %103, i32 8
  store ptr %104, ptr %102, align 8
  br label %105

105:                                              ; preds = %101, %96
  %106 = phi ptr [ %99, %96 ], [ %103, %101 ]
  %107 = load i32, ptr %106, align 4, !tbaa !5
  store i32 %107, ptr @sqlite3Config, align 8, !tbaa !22
  br label %423

108:                                              ; preds = %13
  %109 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %110 = getelementptr inbounds %struct.__va_list_tag, ptr %109, i32 0, i32 0
  %111 = load i32, ptr %110, align 16
  %112 = icmp ule i32 %111, 40
  br i1 %112, label %113, label %118

113:                                              ; preds = %108
  %114 = getelementptr inbounds %struct.__va_list_tag, ptr %109, i32 0, i32 3
  %115 = load ptr, ptr %114, align 16
  %116 = getelementptr i8, ptr %115, i32 %111
  %117 = add i32 %111, 8
  store i32 %117, ptr %110, align 16
  br label %122

118:                                              ; preds = %108
  %119 = getelementptr inbounds %struct.__va_list_tag, ptr %109, i32 0, i32 2
  %120 = load ptr, ptr %119, align 8
  %121 = getelementptr i8, ptr %120, i32 8
  store ptr %121, ptr %119, align 8
  br label %122

122:                                              ; preds = %118, %113
  %123 = phi ptr [ %116, %113 ], [ %120, %118 ]
  %124 = load i32, ptr %123, align 4, !tbaa !5
  store i32 %124, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 5), align 4, !tbaa !23
  br label %423

125:                                              ; preds = %13
  %126 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %127 = getelementptr inbounds %struct.__va_list_tag, ptr %126, i32 0, i32 0
  %128 = load i32, ptr %127, align 16
  %129 = icmp ule i32 %128, 40
  br i1 %129, label %130, label %135

130:                                              ; preds = %125
  %131 = getelementptr inbounds %struct.__va_list_tag, ptr %126, i32 0, i32 3
  %132 = load ptr, ptr %131, align 16
  %133 = getelementptr i8, ptr %132, i32 %128
  %134 = add i32 %128, 8
  store i32 %134, ptr %127, align 16
  br label %139

135:                                              ; preds = %125
  %136 = getelementptr inbounds %struct.__va_list_tag, ptr %126, i32 0, i32 2
  %137 = load ptr, ptr %136, align 8
  %138 = getelementptr i8, ptr %137, i32 8
  store ptr %138, ptr %136, align 8
  br label %139

139:                                              ; preds = %135, %130
  %140 = phi ptr [ %133, %130 ], [ %137, %135 ]
  %141 = load ptr, ptr %140, align 8, !tbaa !18
  store ptr %141, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 20), align 8, !tbaa !24
  %142 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %143 = getelementptr inbounds %struct.__va_list_tag, ptr %142, i32 0, i32 0
  %144 = load i32, ptr %143, align 16
  %145 = icmp ule i32 %144, 40
  br i1 %145, label %146, label %151

146:                                              ; preds = %139
  %147 = getelementptr inbounds %struct.__va_list_tag, ptr %142, i32 0, i32 3
  %148 = load ptr, ptr %147, align 16
  %149 = getelementptr i8, ptr %148, i32 %144
  %150 = add i32 %144, 8
  store i32 %150, ptr %143, align 16
  br label %155

151:                                              ; preds = %139
  %152 = getelementptr inbounds %struct.__va_list_tag, ptr %142, i32 0, i32 2
  %153 = load ptr, ptr %152, align 8
  %154 = getelementptr i8, ptr %153, i32 8
  store ptr %154, ptr %152, align 8
  br label %155

155:                                              ; preds = %151, %146
  %156 = phi ptr [ %149, %146 ], [ %153, %151 ]
  %157 = load i32, ptr %156, align 4, !tbaa !5
  store i32 %157, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 21), align 8, !tbaa !25
  %158 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %159 = getelementptr inbounds %struct.__va_list_tag, ptr %158, i32 0, i32 0
  %160 = load i32, ptr %159, align 16
  %161 = icmp ule i32 %160, 40
  br i1 %161, label %162, label %167

162:                                              ; preds = %155
  %163 = getelementptr inbounds %struct.__va_list_tag, ptr %158, i32 0, i32 3
  %164 = load ptr, ptr %163, align 16
  %165 = getelementptr i8, ptr %164, i32 %160
  %166 = add i32 %160, 8
  store i32 %166, ptr %159, align 16
  br label %171

167:                                              ; preds = %155
  %168 = getelementptr inbounds %struct.__va_list_tag, ptr %158, i32 0, i32 2
  %169 = load ptr, ptr %168, align 8
  %170 = getelementptr i8, ptr %169, i32 8
  store ptr %170, ptr %168, align 8
  br label %171

171:                                              ; preds = %167, %162
  %172 = phi ptr [ %165, %162 ], [ %169, %167 ]
  %173 = load i32, ptr %172, align 4, !tbaa !5
  store i32 %173, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 22), align 4, !tbaa !26
  br label %423

174:                                              ; preds = %13
  %175 = call i32 @sqlite3HeaderSizeBtree()
  %176 = call i32 @sqlite3HeaderSizePcache()
  %177 = add nsw i32 %175, %176
  %178 = call i32 @sqlite3HeaderSizePcache1()
  %179 = add nsw i32 %177, %178
  %180 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %181 = getelementptr inbounds %struct.__va_list_tag, ptr %180, i32 0, i32 0
  %182 = load i32, ptr %181, align 16
  %183 = icmp ule i32 %182, 40
  br i1 %183, label %184, label %189

184:                                              ; preds = %174
  %185 = getelementptr inbounds %struct.__va_list_tag, ptr %180, i32 0, i32 3
  %186 = load ptr, ptr %185, align 16
  %187 = getelementptr i8, ptr %186, i32 %182
  %188 = add i32 %182, 8
  store i32 %188, ptr %181, align 16
  br label %193

189:                                              ; preds = %174
  %190 = getelementptr inbounds %struct.__va_list_tag, ptr %180, i32 0, i32 2
  %191 = load ptr, ptr %190, align 8
  %192 = getelementptr i8, ptr %191, i32 8
  store ptr %192, ptr %190, align 8
  br label %193

193:                                              ; preds = %189, %184
  %194 = phi ptr [ %187, %184 ], [ %191, %189 ]
  %195 = load ptr, ptr %194, align 8, !tbaa !18
  store i32 %179, ptr %195, align 4, !tbaa !5
  br label %423

196:                                              ; preds = %13
  br label %423

197:                                              ; preds = %13
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %423

198:                                              ; preds = %13
  %199 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %200 = getelementptr inbounds %struct.__va_list_tag, ptr %199, i32 0, i32 0
  %201 = load i32, ptr %200, align 16
  %202 = icmp ule i32 %201, 40
  br i1 %202, label %203, label %208

203:                                              ; preds = %198
  %204 = getelementptr inbounds %struct.__va_list_tag, ptr %199, i32 0, i32 3
  %205 = load ptr, ptr %204, align 16
  %206 = getelementptr i8, ptr %205, i32 %201
  %207 = add i32 %201, 8
  store i32 %207, ptr %200, align 16
  br label %212

208:                                              ; preds = %198
  %209 = getelementptr inbounds %struct.__va_list_tag, ptr %199, i32 0, i32 2
  %210 = load ptr, ptr %209, align 8
  %211 = getelementptr i8, ptr %210, i32 8
  store ptr %211, ptr %209, align 8
  br label %212

212:                                              ; preds = %208, %203
  %213 = phi ptr [ %206, %203 ], [ %210, %208 ]
  %214 = load ptr, ptr %213, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 13), ptr align 8 %214, i64 104, i1 false), !tbaa.struct !27
  br label %423

215:                                              ; preds = %13
  %216 = load ptr, ptr getelementptr inbounds (%struct.sqlite3_pcache_methods2, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 13), i32 0, i32 2), align 8, !tbaa !28
  %217 = icmp eq ptr %216, null
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  call void @sqlite3PCacheSetDefault()
  br label %219

219:                                              ; preds = %218, %215
  %220 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %221 = getelementptr inbounds %struct.__va_list_tag, ptr %220, i32 0, i32 0
  %222 = load i32, ptr %221, align 16
  %223 = icmp ule i32 %222, 40
  br i1 %223, label %224, label %229

224:                                              ; preds = %219
  %225 = getelementptr inbounds %struct.__va_list_tag, ptr %220, i32 0, i32 3
  %226 = load ptr, ptr %225, align 16
  %227 = getelementptr i8, ptr %226, i32 %222
  %228 = add i32 %222, 8
  store i32 %228, ptr %221, align 16
  br label %233

229:                                              ; preds = %219
  %230 = getelementptr inbounds %struct.__va_list_tag, ptr %220, i32 0, i32 2
  %231 = load ptr, ptr %230, align 8
  %232 = getelementptr i8, ptr %231, i32 8
  store ptr %232, ptr %230, align 8
  br label %233

233:                                              ; preds = %229, %224
  %234 = phi ptr [ %227, %224 ], [ %231, %229 ]
  %235 = load ptr, ptr %234, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %235, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 13), i64 104, i1 false), !tbaa.struct !27
  br label %423

236:                                              ; preds = %13
  %237 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %238 = getelementptr inbounds %struct.__va_list_tag, ptr %237, i32 0, i32 0
  %239 = load i32, ptr %238, align 16
  %240 = icmp ule i32 %239, 40
  br i1 %240, label %241, label %246

241:                                              ; preds = %236
  %242 = getelementptr inbounds %struct.__va_list_tag, ptr %237, i32 0, i32 3
  %243 = load ptr, ptr %242, align 16
  %244 = getelementptr i8, ptr %243, i32 %239
  %245 = add i32 %239, 8
  store i32 %245, ptr %238, align 16
  br label %250

246:                                              ; preds = %236
  %247 = getelementptr inbounds %struct.__va_list_tag, ptr %237, i32 0, i32 2
  %248 = load ptr, ptr %247, align 8
  %249 = getelementptr i8, ptr %248, i32 8
  store ptr %249, ptr %247, align 8
  br label %250

250:                                              ; preds = %246, %241
  %251 = phi ptr [ %244, %241 ], [ %248, %246 ]
  %252 = load i32, ptr %251, align 4, !tbaa !5
  store i32 %252, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 8), align 8, !tbaa !29
  %253 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %254 = getelementptr inbounds %struct.__va_list_tag, ptr %253, i32 0, i32 0
  %255 = load i32, ptr %254, align 16
  %256 = icmp ule i32 %255, 40
  br i1 %256, label %257, label %262

257:                                              ; preds = %250
  %258 = getelementptr inbounds %struct.__va_list_tag, ptr %253, i32 0, i32 3
  %259 = load ptr, ptr %258, align 16
  %260 = getelementptr i8, ptr %259, i32 %255
  %261 = add i32 %255, 8
  store i32 %261, ptr %254, align 16
  br label %266

262:                                              ; preds = %250
  %263 = getelementptr inbounds %struct.__va_list_tag, ptr %253, i32 0, i32 2
  %264 = load ptr, ptr %263, align 8
  %265 = getelementptr i8, ptr %264, i32 8
  store ptr %265, ptr %263, align 8
  br label %266

266:                                              ; preds = %262, %257
  %267 = phi ptr [ %260, %257 ], [ %264, %262 ]
  %268 = load i32, ptr %267, align 4, !tbaa !5
  store i32 %268, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 9), align 4, !tbaa !30
  br label %423

269:                                              ; preds = %13
  %270 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %271 = getelementptr inbounds %struct.__va_list_tag, ptr %270, i32 0, i32 0
  %272 = load i32, ptr %271, align 16
  %273 = icmp ule i32 %272, 40
  br i1 %273, label %274, label %279

274:                                              ; preds = %269
  %275 = getelementptr inbounds %struct.__va_list_tag, ptr %270, i32 0, i32 3
  %276 = load ptr, ptr %275, align 16
  %277 = getelementptr i8, ptr %276, i32 %272
  %278 = add i32 %272, 8
  store i32 %278, ptr %271, align 16
  br label %283

279:                                              ; preds = %269
  %280 = getelementptr inbounds %struct.__va_list_tag, ptr %270, i32 0, i32 2
  %281 = load ptr, ptr %280, align 8
  %282 = getelementptr i8, ptr %281, i32 8
  store ptr %282, ptr %280, align 8
  br label %283

283:                                              ; preds = %279, %274
  %284 = phi ptr [ %277, %274 ], [ %281, %279 ]
  %285 = load ptr, ptr %284, align 8, !tbaa !18
  store ptr %285, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 33), align 8, !tbaa !31
  %286 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %287 = getelementptr inbounds %struct.__va_list_tag, ptr %286, i32 0, i32 0
  %288 = load i32, ptr %287, align 16
  %289 = icmp ule i32 %288, 40
  br i1 %289, label %290, label %295

290:                                              ; preds = %283
  %291 = getelementptr inbounds %struct.__va_list_tag, ptr %286, i32 0, i32 3
  %292 = load ptr, ptr %291, align 16
  %293 = getelementptr i8, ptr %292, i32 %288
  %294 = add i32 %288, 8
  store i32 %294, ptr %287, align 16
  br label %299

295:                                              ; preds = %283
  %296 = getelementptr inbounds %struct.__va_list_tag, ptr %286, i32 0, i32 2
  %297 = load ptr, ptr %296, align 8
  %298 = getelementptr i8, ptr %297, i32 8
  store ptr %298, ptr %296, align 8
  br label %299

299:                                              ; preds = %295, %290
  %300 = phi ptr [ %293, %290 ], [ %297, %295 ]
  %301 = load ptr, ptr %300, align 8, !tbaa !18
  store ptr %301, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 34), align 8, !tbaa !32
  br label %423

302:                                              ; preds = %13
  %303 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %304 = getelementptr inbounds %struct.__va_list_tag, ptr %303, i32 0, i32 0
  %305 = load i32, ptr %304, align 16
  %306 = icmp ule i32 %305, 40
  br i1 %306, label %307, label %312

307:                                              ; preds = %302
  %308 = getelementptr inbounds %struct.__va_list_tag, ptr %303, i32 0, i32 3
  %309 = load ptr, ptr %308, align 16
  %310 = getelementptr i8, ptr %309, i32 %305
  %311 = add i32 %305, 8
  store i32 %311, ptr %304, align 16
  br label %316

312:                                              ; preds = %302
  %313 = getelementptr inbounds %struct.__va_list_tag, ptr %303, i32 0, i32 2
  %314 = load ptr, ptr %313, align 8
  %315 = getelementptr i8, ptr %314, i32 8
  store ptr %315, ptr %313, align 8
  br label %316

316:                                              ; preds = %312, %307
  %317 = phi ptr [ %310, %307 ], [ %314, %312 ]
  %318 = load i32, ptr %317, align 4, !tbaa !5
  store i32 %318, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 3), align 4, !tbaa !33
  br label %423

319:                                              ; preds = %13
  %320 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %321 = getelementptr inbounds %struct.__va_list_tag, ptr %320, i32 0, i32 0
  %322 = load i32, ptr %321, align 16
  %323 = icmp ule i32 %322, 40
  br i1 %323, label %324, label %329

324:                                              ; preds = %319
  %325 = getelementptr inbounds %struct.__va_list_tag, ptr %320, i32 0, i32 3
  %326 = load ptr, ptr %325, align 16
  %327 = getelementptr i8, ptr %326, i32 %322
  %328 = add i32 %322, 8
  store i32 %328, ptr %321, align 16
  br label %333

329:                                              ; preds = %319
  %330 = getelementptr inbounds %struct.__va_list_tag, ptr %320, i32 0, i32 2
  %331 = load ptr, ptr %330, align 8
  %332 = getelementptr i8, ptr %331, i32 8
  store ptr %332, ptr %330, align 8
  br label %333

333:                                              ; preds = %329, %324
  %334 = phi ptr [ %327, %324 ], [ %331, %329 ]
  %335 = load i32, ptr %334, align 4, !tbaa !5
  store i32 %335, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 4), align 8, !tbaa !34
  br label %423

336:                                              ; preds = %13
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  %337 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %338 = getelementptr inbounds %struct.__va_list_tag, ptr %337, i32 0, i32 0
  %339 = load i32, ptr %338, align 16
  %340 = icmp ule i32 %339, 40
  br i1 %340, label %341, label %346

341:                                              ; preds = %336
  %342 = getelementptr inbounds %struct.__va_list_tag, ptr %337, i32 0, i32 3
  %343 = load ptr, ptr %342, align 16
  %344 = getelementptr i8, ptr %343, i32 %339
  %345 = add i32 %339, 8
  store i32 %345, ptr %338, align 16
  br label %350

346:                                              ; preds = %336
  %347 = getelementptr inbounds %struct.__va_list_tag, ptr %337, i32 0, i32 2
  %348 = load ptr, ptr %347, align 8
  %349 = getelementptr i8, ptr %348, i32 8
  store ptr %349, ptr %347, align 8
  br label %350

350:                                              ; preds = %346, %341
  %351 = phi ptr [ %344, %341 ], [ %348, %346 ]
  %352 = load i64, ptr %351, align 8, !tbaa !35
  store i64 %352, ptr %7, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %353 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %354 = getelementptr inbounds %struct.__va_list_tag, ptr %353, i32 0, i32 0
  %355 = load i32, ptr %354, align 16
  %356 = icmp ule i32 %355, 40
  br i1 %356, label %357, label %362

357:                                              ; preds = %350
  %358 = getelementptr inbounds %struct.__va_list_tag, ptr %353, i32 0, i32 3
  %359 = load ptr, ptr %358, align 16
  %360 = getelementptr i8, ptr %359, i32 %355
  %361 = add i32 %355, 8
  store i32 %361, ptr %354, align 16
  br label %366

362:                                              ; preds = %350
  %363 = getelementptr inbounds %struct.__va_list_tag, ptr %353, i32 0, i32 2
  %364 = load ptr, ptr %363, align 8
  %365 = getelementptr i8, ptr %364, i32 8
  store ptr %365, ptr %363, align 8
  br label %366

366:                                              ; preds = %362, %357
  %367 = phi ptr [ %360, %357 ], [ %364, %362 ]
  %368 = load i64, ptr %367, align 8, !tbaa !35
  store i64 %368, ptr %8, align 8, !tbaa !35
  %369 = load i64, ptr %8, align 8, !tbaa !35
  %370 = icmp slt i64 %369, 0
  br i1 %370, label %374, label %371

371:                                              ; preds = %366
  %372 = load i64, ptr %8, align 8, !tbaa !35
  %373 = icmp sgt i64 %372, 2147418112
  br i1 %373, label %374, label %375

374:                                              ; preds = %371, %366
  store i64 2147418112, ptr %8, align 8, !tbaa !35
  br label %375

375:                                              ; preds = %374, %371
  %376 = load i64, ptr %7, align 8, !tbaa !35
  %377 = icmp slt i64 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  store i64 0, ptr %7, align 8, !tbaa !35
  br label %379

379:                                              ; preds = %378, %375
  %380 = load i64, ptr %7, align 8, !tbaa !35
  %381 = load i64, ptr %8, align 8, !tbaa !35
  %382 = icmp sgt i64 %380, %381
  br i1 %382, label %383, label %385

383:                                              ; preds = %379
  %384 = load i64, ptr %8, align 8, !tbaa !35
  store i64 %384, ptr %7, align 8, !tbaa !35
  br label %385

385:                                              ; preds = %383, %379
  %386 = load i64, ptr %8, align 8, !tbaa !35
  store i64 %386, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 19), align 8, !tbaa !36
  %387 = load i64, ptr %7, align 8, !tbaa !35
  store i64 %387, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 18), align 8, !tbaa !37
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  br label %423

388:                                              ; preds = %13
  %389 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %390 = getelementptr inbounds %struct.__va_list_tag, ptr %389, i32 0, i32 0
  %391 = load i32, ptr %390, align 16
  %392 = icmp ule i32 %391, 40
  br i1 %392, label %393, label %398

393:                                              ; preds = %388
  %394 = getelementptr inbounds %struct.__va_list_tag, ptr %389, i32 0, i32 3
  %395 = load ptr, ptr %394, align 16
  %396 = getelementptr i8, ptr %395, i32 %391
  %397 = add i32 %391, 8
  store i32 %397, ptr %390, align 16
  br label %402

398:                                              ; preds = %388
  %399 = getelementptr inbounds %struct.__va_list_tag, ptr %389, i32 0, i32 2
  %400 = load ptr, ptr %399, align 8
  %401 = getelementptr i8, ptr %400, i32 8
  store ptr %401, ptr %399, align 8
  br label %402

402:                                              ; preds = %398, %393
  %403 = phi ptr [ %396, %393 ], [ %400, %398 ]
  %404 = load i32, ptr %403, align 4, !tbaa !5
  store i32 %404, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 25), align 8, !tbaa !38
  br label %423

405:                                              ; preds = %13
  %406 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %407 = getelementptr inbounds %struct.__va_list_tag, ptr %406, i32 0, i32 0
  %408 = load i32, ptr %407, align 16
  %409 = icmp ule i32 %408, 40
  br i1 %409, label %410, label %415

410:                                              ; preds = %405
  %411 = getelementptr inbounds %struct.__va_list_tag, ptr %406, i32 0, i32 3
  %412 = load ptr, ptr %411, align 16
  %413 = getelementptr i8, ptr %412, i32 %408
  %414 = add i32 %408, 8
  store i32 %414, ptr %407, align 16
  br label %419

415:                                              ; preds = %405
  %416 = getelementptr inbounds %struct.__va_list_tag, ptr %406, i32 0, i32 2
  %417 = load ptr, ptr %416, align 8
  %418 = getelementptr i8, ptr %417, i32 8
  store ptr %418, ptr %416, align 8
  br label %419

419:                                              ; preds = %415, %410
  %420 = phi ptr [ %413, %410 ], [ %417, %415 ]
  %421 = load i32, ptr %420, align 4, !tbaa !5
  store i32 %421, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 10), align 8, !tbaa !39
  br label %423

422:                                              ; preds = %13
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %423

423:                                              ; preds = %422, %419, %402, %385, %333, %316, %299, %266, %233, %212, %197, %196, %193, %171, %122, %105, %88, %67, %50, %33, %18, %17, %16
  %424 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  call void @llvm.va_end.p0(ptr %424)
  %425 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %425, ptr %2, align 4
  store i32 1, ptr %6, align 4
  br label %426

426:                                              ; preds = %423, %11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #4
  %427 = load i32, ptr %2, align 4
  ret i32 %427
}

; Function Attrs: nounwind uwtable
declare hidden void @sqlite3MemSetDefault() #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizeBtree() #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizePcache() #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizePcache1() #1

; Function Attrs: nounwind uwtable
declare hidden void @sqlite3PCacheSetDefault() #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nosync nounwind willreturn }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 356}
!10 = !{!"Sqlite3Config", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !11, i64 48, !13, i64 112, !14, i64 184, !12, i64 288, !6, i64 296, !6, i64 300, !6, i64 304, !15, i64 312, !15, i64 320, !12, i64 328, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !6, i64 364, !6, i64 368, !6, i64 372, !6, i64 376, !12, i64 384, !12, i64 392, !12, i64 400, !12, i64 408, !6, i64 416, !6, i64 420, !6, i64 424, !6, i64 428}
!11 = !{!"sqlite3_mem_methods", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"sqlite3_mutex_methods", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64}
!14 = !{!"sqlite3_pcache_methods2", !6, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96}
!15 = !{!"long long", !7, i64 0}
!16 = !{!10, !6, i64 4}
!17 = !{!10, !6, i64 8}
!18 = !{!12, !12, i64 0}
!19 = !{i64 0, i64 8, !18, i64 8, i64 8, !18, i64 16, i64 8, !18, i64 24, i64 8, !18, i64 32, i64 8, !18, i64 40, i64 8, !18, i64 48, i64 8, !18, i64 56, i64 8, !18, i64 64, i64 8, !18}
!20 = !{i64 0, i64 8, !18, i64 8, i64 8, !18, i64 16, i64 8, !18, i64 24, i64 8, !18, i64 32, i64 8, !18, i64 40, i64 8, !18, i64 48, i64 8, !18, i64 56, i64 8, !18}
!21 = !{!10, !12, i64 48}
!22 = !{!10, !6, i64 0}
!23 = !{!10, !6, i64 20}
!24 = !{!10, !12, i64 328}
!25 = !{!10, !6, i64 336}
!26 = !{!10, !6, i64 340}
!27 = !{i64 0, i64 4, !5, i64 8, i64 8, !18, i64 16, i64 8, !18, i64 24, i64 8, !18, i64 32, i64 8, !18, i64 40, i64 8, !18, i64 48, i64 8, !18, i64 56, i64 8, !18, i64 64, i64 8, !18, i64 72, i64 8, !18, i64 80, i64 8, !18, i64 88, i64 8, !18, i64 96, i64 8, !18}
!28 = !{!10, !12, i64 200}
!29 = !{!10, !6, i64 32}
!30 = !{!10, !6, i64 36}
!31 = !{!10, !12, i64 392}
!32 = !{!10, !12, i64 400}
!33 = !{!10, !6, i64 12}
!34 = !{!10, !6, i64 16}
!35 = !{!15, !15, i64 0}
!36 = !{!10, !15, i64 320}
!37 = !{!10, !15, i64 312}
!38 = !{!10, !6, i64 352}
!39 = !{!10, !6, i64 40}


; 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.Sqlite3Config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.sqlite3_mem_methods, %struct.sqlite3_mutex_methods, %struct.sqlite3_pcache_methods2, ptr, i32, i32, i32, i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32 }
%struct.sqlite3_mem_methods = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.sqlite3_mutex_methods = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.sqlite3_pcache_methods2 = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__va_list_tag = type { i32, i32, ptr, ptr }

@sqlite3Config = external hidden local_unnamed_addr global %struct.Sqlite3Config, align 8

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

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

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

; Function Attrs: 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) #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.va_start.p0(ptr) #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.va_end.p0(ptr) #3

; Function Attrs: nounwind uwtable
define dso_local i32 @sqlite3_config(i32 noundef %0, ...) local_unnamed_addr #1 {
  %2 = alloca [1 x %struct.__va_list_tag], align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #5
  %3 = load i32, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 356), align 4, !tbaa !5
  %.not = icmp eq i32 %3, 0
  br i1 %.not, label %6, label %4

4:                                                ; preds = %1
  %5 = tail call i32 @sqlite3MisuseError(i32 noundef 154071)
  br label %361

6:                                                ; preds = %1
  call void @llvm.va_start.p0(ptr nonnull %2)
  switch i32 %0, label %359 [
    i32 1, label %7
    i32 2, label %8
    i32 3, label %9
    i32 10, label %10
    i32 11, label %26
    i32 4, label %42
    i32 5, label %58
    i32 9, label %78
    i32 27, label %94
    i32 7, label %110
    i32 24, label %150
    i32 14, label %360
    i32 15, label %171
    i32 18, label %172
    i32 19, label %188
    i32 13, label %208
    i32 16, label %236
    i32 17, label %264
    i32 20, label %280
    i32 22, label %296
    i32 25, label %327
    i32 26, label %343
  ]

7:                                                ; preds = %6
  store i32 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i32 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 8), align 8, !tbaa !16
  br label %360

8:                                                ; preds = %6
  store i32 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i32 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 8), align 8, !tbaa !16
  br label %360

9:                                                ; preds = %6
  store i32 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i32 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 8), align 8, !tbaa !16
  br label %360

10:                                               ; preds = %6
  %11 = load i32, ptr %2, align 16
  %12 = icmp ult i32 %11, 41
  br i1 %12, label %13, label %19

13:                                               ; preds = %10
  %14 = getelementptr inbounds i8, ptr %2, i64 16
  %15 = load ptr, ptr %14, align 16
  %16 = zext nneg i32 %11 to i64
  %17 = getelementptr i8, ptr %15, i64 %16
  %18 = add nuw nsw i32 %11, 8
  store i32 %18, ptr %2, align 16
  br label %23

19:                                               ; preds = %10
  %20 = getelementptr inbounds i8, ptr %2, i64 8
  %21 = load ptr, ptr %20, align 8
  %22 = getelementptr i8, ptr %21, i64 8
  store ptr %22, ptr %20, align 8
  br label %23

23:                                               ; preds = %19, %13
  %24 = phi ptr [ %17, %13 ], [ %21, %19 ]
  %25 = load ptr, ptr %24, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @sqlite3Config, i64 112), ptr noundef nonnull align 8 dereferenceable(72) %25, i64 72, i1 false), !tbaa.struct !18
  br label %360

26:                                               ; preds = %6
  %27 = load i32, ptr %2, align 16
  %28 = icmp ult i32 %27, 41
  br i1 %28, label %29, label %35

29:                                               ; preds = %26
  %30 = getelementptr inbounds i8, ptr %2, i64 16
  %31 = load ptr, ptr %30, align 16
  %32 = zext nneg i32 %27 to i64
  %33 = getelementptr i8, ptr %31, i64 %32
  %34 = add nuw nsw i32 %27, 8
  store i32 %34, ptr %2, align 16
  br label %39

35:                                               ; preds = %26
  %36 = getelementptr inbounds i8, ptr %2, i64 8
  %37 = load ptr, ptr %36, align 8
  %38 = getelementptr i8, ptr %37, i64 8
  store ptr %38, ptr %36, align 8
  br label %39

39:                                               ; preds = %35, %29
  %40 = phi ptr [ %33, %29 ], [ %37, %35 ]
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %41, ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @sqlite3Config, i64 112), i64 72, i1 false), !tbaa.struct !18
  br label %360

42:                                               ; preds = %6
  %43 = load i32, ptr %2, align 16
  %44 = icmp ult i32 %43, 41
  br i1 %44, label %45, label %51

45:                                               ; preds = %42
  %46 = getelementptr inbounds i8, ptr %2, i64 16
  %47 = load ptr, ptr %46, align 16
  %48 = zext nneg i32 %43 to i64
  %49 = getelementptr i8, ptr %47, i64 %48
  %50 = add nuw nsw i32 %43, 8
  store i32 %50, ptr %2, align 16
  br label %55

51:                                               ; preds = %42
  %52 = getelementptr inbounds i8, ptr %2, i64 8
  %53 = load ptr, ptr %52, align 8
  %54 = getelementptr i8, ptr %53, i64 8
  store ptr %54, ptr %52, align 8
  br label %55

55:                                               ; preds = %51, %45
  %56 = phi ptr [ %49, %45 ], [ %53, %51 ]
  %57 = load ptr, ptr %56, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) getelementptr inbounds (i8, ptr @sqlite3Config, i64 48), ptr noundef nonnull align 8 dereferenceable(64) %57, i64 64, i1 false), !tbaa.struct !19
  br label %360

58:                                               ; preds = %6
  %59 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 48), align 8, !tbaa !20
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %62

61:                                               ; preds = %58
  call void @sqlite3MemSetDefault()
  br label %62

62:                                               ; preds = %61, %58
  %63 = load i32, ptr %2, align 16
  %64 = icmp ult i32 %63, 41
  br i1 %64, label %65, label %71

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %2, i64 16
  %67 = load ptr, ptr %66, align 16
  %68 = zext nneg i32 %63 to i64
  %69 = getelementptr i8, ptr %67, i64 %68
  %70 = add nuw nsw i32 %63, 8
  store i32 %70, ptr %2, align 16
  br label %75

71:                                               ; preds = %62
  %72 = getelementptr inbounds i8, ptr %2, i64 8
  %73 = load ptr, ptr %72, align 8
  %74 = getelementptr i8, ptr %73, i64 8
  store ptr %74, ptr %72, align 8
  br label %75

75:                                               ; preds = %71, %65
  %76 = phi ptr [ %69, %65 ], [ %73, %71 ]
  %77 = load ptr, ptr %76, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %77, ptr noundef nonnull align 8 dereferenceable(64) getelementptr inbounds (i8, ptr @sqlite3Config, i64 48), i64 64, i1 false), !tbaa.struct !19
  br label %360

78:                                               ; preds = %6
  %79 = load i32, ptr %2, align 16
  %80 = icmp ult i32 %79, 41
  br i1 %80, label %81, label %87

81:                                               ; preds = %78
  %82 = getelementptr inbounds i8, ptr %2, i64 16
  %83 = load ptr, ptr %82, align 16
  %84 = zext nneg i32 %79 to i64
  %85 = getelementptr i8, ptr %83, i64 %84
  %86 = add nuw nsw i32 %79, 8
  store i32 %86, ptr %2, align 16
  br label %91

87:                                               ; preds = %78
  %88 = getelementptr inbounds i8, ptr %2, i64 8
  %89 = load ptr, ptr %88, align 8
  %90 = getelementptr i8, ptr %89, i64 8
  store ptr %90, ptr %88, align 8
  br label %91

91:                                               ; preds = %87, %81
  %92 = phi ptr [ %85, %81 ], [ %89, %87 ]
  %93 = load i32, ptr %92, align 4, !tbaa !21
  store i32 %93, ptr @sqlite3Config, align 8, !tbaa !22
  br label %360

94:                                               ; preds = %6
  %95 = load i32, ptr %2, align 16
  %96 = icmp ult i32 %95, 41
  br i1 %96, label %97, label %103

97:                                               ; preds = %94
  %98 = getelementptr inbounds i8, ptr %2, i64 16
  %99 = load ptr, ptr %98, align 16
  %100 = zext nneg i32 %95 to i64
  %101 = getelementptr i8, ptr %99, i64 %100
  %102 = add nuw nsw i32 %95, 8
  store i32 %102, ptr %2, align 16
  br label %107

103:                                              ; preds = %94
  %104 = getelementptr inbounds i8, ptr %2, i64 8
  %105 = load ptr, ptr %104, align 8
  %106 = getelementptr i8, ptr %105, i64 8
  store ptr %106, ptr %104, align 8
  br label %107

107:                                              ; preds = %103, %97
  %108 = phi ptr [ %101, %97 ], [ %105, %103 ]
  %109 = load i32, ptr %108, align 4, !tbaa !21
  store i32 %109, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 20), align 4, !tbaa !23
  br label %360

110:                                              ; preds = %6
  %111 = load i32, ptr %2, align 16
  %112 = icmp ult i32 %111, 41
  br i1 %112, label %117, label %.thread

.thread:                                          ; preds = %110
  %113 = getelementptr inbounds i8, ptr %2, i64 8
  %114 = load ptr, ptr %113, align 8
  %115 = getelementptr i8, ptr %114, i64 8
  store ptr %115, ptr %113, align 8
  %116 = load ptr, ptr %114, align 8, !tbaa !17
  store ptr %116, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 328), align 8, !tbaa !24
  br label %.thread43

117:                                              ; preds = %110
  %118 = getelementptr inbounds i8, ptr %2, i64 16
  %119 = load ptr, ptr %118, align 16
  %120 = zext nneg i32 %111 to i64
  %121 = getelementptr i8, ptr %119, i64 %120
  %122 = add nuw nsw i32 %111, 8
  store i32 %122, ptr %2, align 16
  %123 = load ptr, ptr %121, align 8, !tbaa !17
  store ptr %123, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 328), align 8, !tbaa !24
  %124 = icmp ult i32 %111, 33
  br i1 %124, label %129, label %.thread43

.thread43:                                        ; preds = %117, %.thread
  %125 = getelementptr inbounds i8, ptr %2, i64 8
  %126 = load ptr, ptr %125, align 8
  %127 = getelementptr i8, ptr %126, i64 8
  store ptr %127, ptr %125, align 8
  %128 = load i32, ptr %126, align 4, !tbaa !21
  store i32 %128, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 336), align 8, !tbaa !25
  br label %143

129:                                              ; preds = %117
  %130 = getelementptr inbounds i8, ptr %2, i64 16
  %131 = load ptr, ptr %130, align 16
  %132 = zext nneg i32 %122 to i64
  %133 = getelementptr i8, ptr %131, i64 %132
  %134 = add nuw nsw i32 %111, 16
  store i32 %134, ptr %2, align 16
  %135 = load i32, ptr %133, align 4, !tbaa !21
  store i32 %135, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 336), align 8, !tbaa !25
  %136 = icmp ult i32 %111, 25
  br i1 %136, label %137, label %143

137:                                              ; preds = %129
  %138 = getelementptr inbounds i8, ptr %2, i64 16
  %139 = load ptr, ptr %138, align 16
  %140 = zext nneg i32 %134 to i64
  %141 = getelementptr i8, ptr %139, i64 %140
  %142 = add nuw nsw i32 %111, 24
  store i32 %142, ptr %2, align 16
  br label %147

143:                                              ; preds = %.thread43, %129
  %144 = getelementptr inbounds i8, ptr %2, i64 8
  %145 = load ptr, ptr %144, align 8
  %146 = getelementptr i8, ptr %145, i64 8
  store ptr %146, ptr %144, align 8
  br label %147

147:                                              ; preds = %143, %137
  %148 = phi ptr [ %141, %137 ], [ %145, %143 ]
  %149 = load i32, ptr %148, align 4, !tbaa !21
  store i32 %149, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 340), align 4, !tbaa !26
  br label %360

150:                                              ; preds = %6
  %151 = call i32 @sqlite3HeaderSizeBtree()
  %152 = call i32 @sqlite3HeaderSizePcache()
  %153 = add nsw i32 %152, %151
  %154 = call i32 @sqlite3HeaderSizePcache1()
  %155 = add nsw i32 %153, %154
  %156 = load i32, ptr %2, align 16
  %157 = icmp ult i32 %156, 41
  br i1 %157, label %158, label %164

158:                                              ; preds = %150
  %159 = getelementptr inbounds i8, ptr %2, i64 16
  %160 = load ptr, ptr %159, align 16
  %161 = zext nneg i32 %156 to i64
  %162 = getelementptr i8, ptr %160, i64 %161
  %163 = add nuw nsw i32 %156, 8
  store i32 %163, ptr %2, align 16
  br label %168

164:                                              ; preds = %150
  %165 = getelementptr inbounds i8, ptr %2, i64 8
  %166 = load ptr, ptr %165, align 8
  %167 = getelementptr i8, ptr %166, i64 8
  store ptr %167, ptr %165, align 8
  br label %168

168:                                              ; preds = %164, %158
  %169 = phi ptr [ %162, %158 ], [ %166, %164 ]
  %170 = load ptr, ptr %169, align 8, !tbaa !17
  store i32 %155, ptr %170, align 4, !tbaa !21
  br label %360

171:                                              ; preds = %6
  br label %360

172:                                              ; preds = %6
  %173 = load i32, ptr %2, align 16
  %174 = icmp ult i32 %173, 41
  br i1 %174, label %175, label %181

175:                                              ; preds = %172
  %176 = getelementptr inbounds i8, ptr %2, i64 16
  %177 = load ptr, ptr %176, align 16
  %178 = zext nneg i32 %173 to i64
  %179 = getelementptr i8, ptr %177, i64 %178
  %180 = add nuw nsw i32 %173, 8
  store i32 %180, ptr %2, align 16
  br label %185

181:                                              ; preds = %172
  %182 = getelementptr inbounds i8, ptr %2, i64 8
  %183 = load ptr, ptr %182, align 8
  %184 = getelementptr i8, ptr %183, i64 8
  store ptr %184, ptr %182, align 8
  br label %185

185:                                              ; preds = %181, %175
  %186 = phi ptr [ %179, %175 ], [ %183, %181 ]
  %187 = load ptr, ptr %186, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) getelementptr inbounds (i8, ptr @sqlite3Config, i64 184), ptr noundef nonnull align 8 dereferenceable(104) %187, i64 104, i1 false), !tbaa.struct !27
  br label %360

188:                                              ; preds = %6
  %189 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 200), align 8, !tbaa !28
  %190 = icmp eq ptr %189, null
  br i1 %190, label %191, label %192

191:                                              ; preds = %188
  call void @sqlite3PCacheSetDefault()
  br label %192

192:                                              ; preds = %191, %188
  %193 = load i32, ptr %2, align 16
  %194 = icmp ult i32 %193, 41
  br i1 %194, label %195, label %201

195:                                              ; preds = %192
  %196 = getelementptr inbounds i8, ptr %2, i64 16
  %197 = load ptr, ptr %196, align 16
  %198 = zext nneg i32 %193 to i64
  %199 = getelementptr i8, ptr %197, i64 %198
  %200 = add nuw nsw i32 %193, 8
  store i32 %200, ptr %2, align 16
  br label %205

201:                                              ; preds = %192
  %202 = getelementptr inbounds i8, ptr %2, i64 8
  %203 = load ptr, ptr %202, align 8
  %204 = getelementptr i8, ptr %203, i64 8
  store ptr %204, ptr %202, align 8
  br label %205

205:                                              ; preds = %201, %195
  %206 = phi ptr [ %199, %195 ], [ %203, %201 ]
  %207 = load ptr, ptr %206, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %207, ptr noundef nonnull align 8 dereferenceable(104) getelementptr inbounds (i8, ptr @sqlite3Config, i64 184), i64 104, i1 false), !tbaa.struct !27
  br label %360

208:                                              ; preds = %6
  %209 = load i32, ptr %2, align 16
  %210 = icmp ult i32 %209, 41
  br i1 %210, label %215, label %.thread44

.thread44:                                        ; preds = %208
  %211 = getelementptr inbounds i8, ptr %2, i64 8
  %212 = load ptr, ptr %211, align 8
  %213 = getelementptr i8, ptr %212, i64 8
  store ptr %213, ptr %211, align 8
  %214 = load i32, ptr %212, align 4, !tbaa !21
  store i32 %214, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 32), align 8, !tbaa !29
  br label %229

215:                                              ; preds = %208
  %216 = getelementptr inbounds i8, ptr %2, i64 16
  %217 = load ptr, ptr %216, align 16
  %218 = zext nneg i32 %209 to i64
  %219 = getelementptr i8, ptr %217, i64 %218
  %220 = add nuw nsw i32 %209, 8
  store i32 %220, ptr %2, align 16
  %221 = load i32, ptr %219, align 4, !tbaa !21
  store i32 %221, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 32), align 8, !tbaa !29
  %222 = icmp ult i32 %209, 33
  br i1 %222, label %223, label %229

223:                                              ; preds = %215
  %224 = getelementptr inbounds i8, ptr %2, i64 16
  %225 = load ptr, ptr %224, align 16
  %226 = zext nneg i32 %220 to i64
  %227 = getelementptr i8, ptr %225, i64 %226
  %228 = add nuw nsw i32 %209, 16
  store i32 %228, ptr %2, align 16
  br label %233

229:                                              ; preds = %.thread44, %215
  %230 = getelementptr inbounds i8, ptr %2, i64 8
  %231 = load ptr, ptr %230, align 8
  %232 = getelementptr i8, ptr %231, i64 8
  store ptr %232, ptr %230, align 8
  br label %233

233:                                              ; preds = %229, %223
  %234 = phi ptr [ %227, %223 ], [ %231, %229 ]
  %235 = load i32, ptr %234, align 4, !tbaa !21
  store i32 %235, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 36), align 4, !tbaa !30
  br label %360

236:                                              ; preds = %6
  %237 = load i32, ptr %2, align 16
  %238 = icmp ult i32 %237, 41
  br i1 %238, label %243, label %.thread45

.thread45:                                        ; preds = %236
  %239 = getelementptr inbounds i8, ptr %2, i64 8
  %240 = load ptr, ptr %239, align 8
  %241 = getelementptr i8, ptr %240, i64 8
  store ptr %241, ptr %239, align 8
  %242 = load ptr, ptr %240, align 8, !tbaa !17
  store ptr %242, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 392), align 8, !tbaa !31
  br label %257

243:                                              ; preds = %236
  %244 = getelementptr inbounds i8, ptr %2, i64 16
  %245 = load ptr, ptr %244, align 16
  %246 = zext nneg i32 %237 to i64
  %247 = getelementptr i8, ptr %245, i64 %246
  %248 = add nuw nsw i32 %237, 8
  store i32 %248, ptr %2, align 16
  %249 = load ptr, ptr %247, align 8, !tbaa !17
  store ptr %249, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 392), align 8, !tbaa !31
  %250 = icmp ult i32 %237, 33
  br i1 %250, label %251, label %257

251:                                              ; preds = %243
  %252 = getelementptr inbounds i8, ptr %2, i64 16
  %253 = load ptr, ptr %252, align 16
  %254 = zext nneg i32 %248 to i64
  %255 = getelementptr i8, ptr %253, i64 %254
  %256 = add nuw nsw i32 %237, 16
  store i32 %256, ptr %2, align 16
  br label %261

257:                                              ; preds = %.thread45, %243
  %258 = getelementptr inbounds i8, ptr %2, i64 8
  %259 = load ptr, ptr %258, align 8
  %260 = getelementptr i8, ptr %259, i64 8
  store ptr %260, ptr %258, align 8
  br label %261

261:                                              ; preds = %257, %251
  %262 = phi ptr [ %255, %251 ], [ %259, %257 ]
  %263 = load ptr, ptr %262, align 8, !tbaa !17
  store ptr %263, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 400), align 8, !tbaa !32
  br label %360

264:                                              ; preds = %6
  %265 = load i32, ptr %2, align 16
  %266 = icmp ult i32 %265, 41
  br i1 %266, label %267, label %273

267:                                              ; preds = %264
  %268 = getelementptr inbounds i8, ptr %2, i64 16
  %269 = load ptr, ptr %268, align 16
  %270 = zext nneg i32 %265 to i64
  %271 = getelementptr i8, ptr %269, i64 %270
  %272 = add nuw nsw i32 %265, 8
  store i32 %272, ptr %2, align 16
  br label %277

273:                                              ; preds = %264
  %274 = getelementptr inbounds i8, ptr %2, i64 8
  %275 = load ptr, ptr %274, align 8
  %276 = getelementptr i8, ptr %275, i64 8
  store ptr %276, ptr %274, align 8
  br label %277

277:                                              ; preds = %273, %267
  %278 = phi ptr [ %271, %267 ], [ %275, %273 ]
  %279 = load i32, ptr %278, align 4, !tbaa !21
  store i32 %279, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 12), align 4, !tbaa !33
  br label %360

280:                                              ; preds = %6
  %281 = load i32, ptr %2, align 16
  %282 = icmp ult i32 %281, 41
  br i1 %282, label %283, label %289

283:                                              ; preds = %280
  %284 = getelementptr inbounds i8, ptr %2, i64 16
  %285 = load ptr, ptr %284, align 16
  %286 = zext nneg i32 %281 to i64
  %287 = getelementptr i8, ptr %285, i64 %286
  %288 = add nuw nsw i32 %281, 8
  store i32 %288, ptr %2, align 16
  br label %293

289:                                              ; preds = %280
  %290 = getelementptr inbounds i8, ptr %2, i64 8
  %291 = load ptr, ptr %290, align 8
  %292 = getelementptr i8, ptr %291, i64 8
  store ptr %292, ptr %290, align 8
  br label %293

293:                                              ; preds = %289, %283
  %294 = phi ptr [ %287, %283 ], [ %291, %289 ]
  %295 = load i32, ptr %294, align 4, !tbaa !21
  store i32 %295, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 16), align 8, !tbaa !34
  br label %360

296:                                              ; preds = %6
  %297 = load i32, ptr %2, align 16
  %298 = icmp ult i32 %297, 41
  br i1 %298, label %303, label %.thread46

.thread46:                                        ; preds = %296
  %299 = getelementptr inbounds i8, ptr %2, i64 8
  %300 = load ptr, ptr %299, align 8
  %301 = getelementptr i8, ptr %300, i64 8
  store ptr %301, ptr %299, align 8
  %302 = load i64, ptr %300, align 8, !tbaa !35
  br label %317

303:                                              ; preds = %296
  %304 = getelementptr inbounds i8, ptr %2, i64 16
  %305 = load ptr, ptr %304, align 16
  %306 = zext nneg i32 %297 to i64
  %307 = getelementptr i8, ptr %305, i64 %306
  %308 = add nuw nsw i32 %297, 8
  store i32 %308, ptr %2, align 16
  %309 = load i64, ptr %307, align 8, !tbaa !35
  %310 = icmp ult i32 %297, 33
  br i1 %310, label %311, label %317

311:                                              ; preds = %303
  %312 = getelementptr inbounds i8, ptr %2, i64 16
  %313 = load ptr, ptr %312, align 16
  %314 = zext nneg i32 %308 to i64
  %315 = getelementptr i8, ptr %313, i64 %314
  %316 = add nuw nsw i32 %297, 16
  store i32 %316, ptr %2, align 16
  br label %322

317:                                              ; preds = %.thread46, %303
  %318 = phi i64 [ %302, %.thread46 ], [ %309, %303 ]
  %319 = getelementptr inbounds i8, ptr %2, i64 8
  %320 = load ptr, ptr %319, align 8
  %321 = getelementptr i8, ptr %320, i64 8
  store ptr %321, ptr %319, align 8
  br label %322

322:                                              ; preds = %317, %311
  %323 = phi i64 [ %309, %311 ], [ %318, %317 ]
  %324 = phi ptr [ %315, %311 ], [ %320, %317 ]
  %325 = load i64, ptr %324, align 8, !tbaa !35
  %spec.store.select2 = call i64 @llvm.umin.i64(i64 %325, i64 2147418112)
  %spec.store.select = call i64 @llvm.smax.i64(i64 %323, i64 0)
  %326 = icmp sgt i64 %323, %spec.store.select2
  %spec.select = select i1 %326, i64 %spec.store.select2, i64 %spec.store.select
  store i64 %spec.store.select2, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 320), align 8, !tbaa !36
  store i64 %spec.select, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 312), align 8, !tbaa !37
  br label %360

327:                                              ; preds = %6
  %328 = load i32, ptr %2, align 16
  %329 = icmp ult i32 %328, 41
  br i1 %329, label %330, label %336

330:                                              ; preds = %327
  %331 = getelementptr inbounds i8, ptr %2, i64 16
  %332 = load ptr, ptr %331, align 16
  %333 = zext nneg i32 %328 to i64
  %334 = getelementptr i8, ptr %332, i64 %333
  %335 = add nuw nsw i32 %328, 8
  store i32 %335, ptr %2, align 16
  br label %340

336:                                              ; preds = %327
  %337 = getelementptr inbounds i8, ptr %2, i64 8
  %338 = load ptr, ptr %337, align 8
  %339 = getelementptr i8, ptr %338, i64 8
  store ptr %339, ptr %337, align 8
  br label %340

340:                                              ; preds = %336, %330
  %341 = phi ptr [ %334, %330 ], [ %338, %336 ]
  %342 = load i32, ptr %341, align 4, !tbaa !21
  store i32 %342, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 352), align 8, !tbaa !38
  br label %360

343:                                              ; preds = %6
  %344 = load i32, ptr %2, align 16
  %345 = icmp ult i32 %344, 41
  br i1 %345, label %346, label %352

346:                                              ; preds = %343
  %347 = getelementptr inbounds i8, ptr %2, i64 16
  %348 = load ptr, ptr %347, align 16
  %349 = zext nneg i32 %344 to i64
  %350 = getelementptr i8, ptr %348, i64 %349
  %351 = add nuw nsw i32 %344, 8
  store i32 %351, ptr %2, align 16
  br label %356

352:                                              ; preds = %343
  %353 = getelementptr inbounds i8, ptr %2, i64 8
  %354 = load ptr, ptr %353, align 8
  %355 = getelementptr i8, ptr %354, i64 8
  store ptr %355, ptr %353, align 8
  br label %356

356:                                              ; preds = %352, %346
  %357 = phi ptr [ %350, %346 ], [ %354, %352 ]
  %358 = load i32, ptr %357, align 4, !tbaa !21
  store i32 %358, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 40), align 8, !tbaa !39
  br label %360

359:                                              ; preds = %6
  br label %360

360:                                              ; preds = %6, %359, %356, %340, %322, %293, %277, %261, %233, %205, %185, %171, %168, %147, %107, %91, %75, %55, %39, %23, %9, %8, %7
  %.013 = phi i32 [ 1, %359 ], [ 0, %356 ], [ 0, %340 ], [ 0, %322 ], [ 0, %293 ], [ 0, %277 ], [ 0, %261 ], [ 0, %233 ], [ 0, %205 ], [ 0, %185 ], [ 1, %171 ], [ 0, %6 ], [ 0, %168 ], [ 0, %147 ], [ 0, %107 ], [ 0, %91 ], [ 0, %75 ], [ 0, %55 ], [ 0, %39 ], [ 0, %23 ], [ 0, %9 ], [ 0, %8 ], [ 0, %7 ]
  call void @llvm.va_end.p0(ptr nonnull %2)
  br label %361

361:                                              ; preds = %360, %4
  %.014 = phi i32 [ %5, %4 ], [ %.013, %360 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #5
  ret i32 %.014
}

; Function Attrs: nounwind uwtable
declare hidden void @sqlite3MemSetDefault() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizeBtree() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizePcache() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @sqlite3HeaderSizePcache1() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden void @sqlite3PCacheSetDefault() local_unnamed_addr #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 356}
!6 = !{!"Sqlite3Config", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !10, i64 48, !12, i64 112, !13, i64 184, !11, i64 288, !7, i64 296, !7, i64 300, !7, i64 304, !14, i64 312, !14, i64 320, !11, i64 328, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !11, i64 384, !11, i64 392, !11, i64 400, !11, i64 408, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"sqlite3_mem_methods", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"sqlite3_mutex_methods", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64}
!13 = !{!"sqlite3_pcache_methods2", !7, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96}
!14 = !{!"long long", !8, i64 0}
!15 = !{!6, !7, i64 4}
!16 = !{!6, !7, i64 8}
!17 = !{!11, !11, i64 0}
!18 = !{i64 0, i64 8, !17, i64 8, i64 8, !17, i64 16, i64 8, !17, i64 24, i64 8, !17, i64 32, i64 8, !17, i64 40, i64 8, !17, i64 48, i64 8, !17, i64 56, i64 8, !17, i64 64, i64 8, !17}
!19 = !{i64 0, i64 8, !17, i64 8, i64 8, !17, i64 16, i64 8, !17, i64 24, i64 8, !17, i64 32, i64 8, !17, i64 40, i64 8, !17, i64 48, i64 8, !17, i64 56, i64 8, !17}
!20 = !{!6, !11, i64 48}
!21 = !{!7, !7, i64 0}
!22 = !{!6, !7, i64 0}
!23 = !{!6, !7, i64 20}
!24 = !{!6, !11, i64 328}
!25 = !{!6, !7, i64 336}
!26 = !{!6, !7, i64 340}
!27 = !{i64 0, i64 4, !21, i64 8, i64 8, !17, i64 16, i64 8, !17, i64 24, i64 8, !17, i64 32, i64 8, !17, i64 40, i64 8, !17, i64 48, i64 8, !17, i64 56, i64 8, !17, i64 64, i64 8, !17, i64 72, i64 8, !17, i64 80, i64 8, !17, i64 88, i64 8, !17, i64 96, i64 8, !17}
!28 = !{!6, !11, i64 200}
!29 = !{!6, !7, i64 32}
!30 = !{!6, !7, i64 36}
!31 = !{!6, !11, i64 392}
!32 = !{!6, !11, i64 400}
!33 = !{!6, !7, i64 12}
!34 = !{!6, !7, i64 16}
!35 = !{!14, !14, i64 0}
!36 = !{!6, !14, i64 320}
!37 = !{!6, !14, i64 312}
!38 = !{!6, !7, i64 352}
!39 = !{!6, !7, i64 40}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass