; LLVM IR from eProsima/Fast-DDS :: src/cpp/rtps/persistence (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, i8, i8, i8, i8, i8, i8, 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, i64, ptr, i32, ptr, 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 ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca ptr, 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
  %16 = load i32, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 27), align 4, !tbaa !9
  %17 = icmp ne i32 %16, 0
  br i1 %17, label %18, label %33

18:                                               ; preds = %1
  %19 = load i32, ptr %3, align 4, !tbaa !5
  %20 = icmp slt i32 %19, 0
  br i1 %20, label %30, label %21

21:                                               ; preds = %18
  %22 = load i32, ptr %3, align 4, !tbaa !5
  %23 = icmp sgt i32 %22, 63
  br i1 %23, label %30, label %24

24:                                               ; preds = %21
  %25 = load i32, ptr %3, align 4, !tbaa !5
  %26 = zext i32 %25 to i64
  %27 = shl i64 1, %26
  %28 = and i64 %27, 16842752
  %29 = icmp eq i64 %28, 0
  br i1 %29, label %30, label %32

30:                                               ; preds = %24, %21, %18
  %31 = call i32 @sqlite3MisuseError(i32 noundef 181552)
  store i32 %31, ptr %2, align 4
  store i32 1, ptr %6, align 4
  br label %490

32:                                               ; preds = %24
  br label %33

33:                                               ; preds = %32, %1
  %34 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  call void @llvm.va_start.p0(ptr %34)
  %35 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %35, label %486 [
    i32 1, label %36
    i32 2, label %37
    i32 3, label %38
    i32 10, label %39
    i32 11, label %56
    i32 4, label %73
    i32 5, label %90
    i32 9, label %111
    i32 27, label %128
    i32 7, label %146
    i32 24, label %195
    i32 14, label %217
    i32 15, label %218
    i32 18, label %219
    i32 19, label %236
    i32 13, label %257
    i32 16, label %290
    i32 17, label %327
    i32 20, label %347
    i32 22, label %365
    i32 25, label %417
    i32 26, label %434
    i32 29, label %451
    i32 30, label %468
  ]

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

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

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

39:                                               ; preds = %33
  %40 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %41 = getelementptr inbounds %struct.__va_list_tag, ptr %40, i32 0, i32 0
  %42 = load i32, ptr %41, align 16
  %43 = icmp ule i32 %42, 40
  br i1 %43, label %44, label %49

44:                                               ; preds = %39
  %45 = getelementptr inbounds %struct.__va_list_tag, ptr %40, i32 0, i32 3
  %46 = load ptr, ptr %45, align 16
  %47 = getelementptr i8, ptr %46, i32 %42
  %48 = add i32 %42, 8
  store i32 %48, ptr %41, align 16
  br label %53

49:                                               ; preds = %39
  %50 = getelementptr inbounds %struct.__va_list_tag, ptr %40, i32 0, i32 2
  %51 = load ptr, ptr %50, align 8
  %52 = getelementptr i8, ptr %51, i32 8
  store ptr %52, ptr %50, align 8
  br label %53

53:                                               ; preds = %49, %44
  %54 = phi ptr [ %47, %44 ], [ %51, %49 ]
  %55 = load ptr, ptr %54, 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 %55, i64 72, i1 false), !tbaa.struct !19
  br label %487

56:                                               ; preds = %33
  %57 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %58 = getelementptr inbounds %struct.__va_list_tag, ptr %57, i32 0, i32 0
  %59 = load i32, ptr %58, align 16
  %60 = icmp ule i32 %59, 40
  br i1 %60, label %61, label %66

61:                                               ; preds = %56
  %62 = getelementptr inbounds %struct.__va_list_tag, ptr %57, i32 0, i32 3
  %63 = load ptr, ptr %62, align 16
  %64 = getelementptr i8, ptr %63, i32 %59
  %65 = add i32 %59, 8
  store i32 %65, ptr %58, align 16
  br label %70

66:                                               ; preds = %56
  %67 = getelementptr inbounds %struct.__va_list_tag, ptr %57, i32 0, i32 2
  %68 = load ptr, ptr %67, align 8
  %69 = getelementptr i8, ptr %68, i32 8
  store ptr %69, ptr %67, align 8
  br label %70

70:                                               ; preds = %66, %61
  %71 = phi ptr [ %64, %61 ], [ %68, %66 ]
  %72 = load ptr, ptr %71, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 13), i64 72, i1 false), !tbaa.struct !19
  br label %487

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

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

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

87:                                               ; preds = %83, %78
  %88 = phi ptr [ %81, %78 ], [ %85, %83 ]
  %89 = load ptr, ptr %88, 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 %89, i64 64, i1 false), !tbaa.struct !20
  br label %487

90:                                               ; preds = %33
  %91 = load ptr, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 12), align 8, !tbaa !21
  %92 = icmp eq ptr %91, null
  br i1 %92, label %93, label %94

93:                                               ; preds = %90
  call void @sqlite3MemSetDefault()
  br label %94

94:                                               ; preds = %93, %90
  %95 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %96 = getelementptr inbounds %struct.__va_list_tag, ptr %95, i32 0, i32 0
  %97 = load i32, ptr %96, align 16
  %98 = icmp ule i32 %97, 40
  br i1 %98, label %99, label %104

99:                                               ; preds = %94
  %100 = getelementptr inbounds %struct.__va_list_tag, ptr %95, i32 0, i32 3
  %101 = load ptr, ptr %100, align 16
  %102 = getelementptr i8, ptr %101, i32 %97
  %103 = add i32 %97, 8
  store i32 %103, ptr %96, align 16
  br label %108

104:                                              ; preds = %94
  %105 = getelementptr inbounds %struct.__va_list_tag, ptr %95, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8
  %107 = getelementptr i8, ptr %106, i32 8
  store ptr %107, ptr %105, align 8
  br label %108

108:                                              ; preds = %104, %99
  %109 = phi ptr [ %102, %99 ], [ %106, %104 ]
  %110 = load ptr, ptr %109, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %110, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 12), i64 64, i1 false), !tbaa.struct !20
  br label %487

111:                                              ; preds = %33
  %112 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %113 = getelementptr inbounds %struct.__va_list_tag, ptr %112, i32 0, i32 0
  %114 = load i32, ptr %113, align 16
  %115 = icmp ule i32 %114, 40
  br i1 %115, label %116, label %121

116:                                              ; preds = %111
  %117 = getelementptr inbounds %struct.__va_list_tag, ptr %112, i32 0, i32 3
  %118 = load ptr, ptr %117, align 16
  %119 = getelementptr i8, ptr %118, i32 %114
  %120 = add i32 %114, 8
  store i32 %120, ptr %113, align 16
  br label %125

121:                                              ; preds = %111
  %122 = getelementptr inbounds %struct.__va_list_tag, ptr %112, i32 0, i32 2
  %123 = load ptr, ptr %122, align 8
  %124 = getelementptr i8, ptr %123, i32 8
  store ptr %124, ptr %122, align 8
  br label %125

125:                                              ; preds = %121, %116
  %126 = phi ptr [ %119, %116 ], [ %123, %121 ]
  %127 = load i32, ptr %126, align 4, !tbaa !5
  store i32 %127, ptr @sqlite3Config, align 8, !tbaa !22
  br label %487

128:                                              ; preds = %33
  %129 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %130 = getelementptr inbounds %struct.__va_list_tag, ptr %129, i32 0, i32 0
  %131 = load i32, ptr %130, align 16
  %132 = icmp ule i32 %131, 40
  br i1 %132, label %133, label %138

133:                                              ; preds = %128
  %134 = getelementptr inbounds %struct.__va_list_tag, ptr %129, i32 0, i32 3
  %135 = load ptr, ptr %134, align 16
  %136 = getelementptr i8, ptr %135, i32 %131
  %137 = add i32 %131, 8
  store i32 %137, ptr %130, align 16
  br label %142

138:                                              ; preds = %128
  %139 = getelementptr inbounds %struct.__va_list_tag, ptr %129, i32 0, i32 2
  %140 = load ptr, ptr %139, align 8
  %141 = getelementptr i8, ptr %140, i32 8
  store ptr %141, ptr %139, align 8
  br label %142

142:                                              ; preds = %138, %133
  %143 = phi ptr [ %136, %133 ], [ %140, %138 ]
  %144 = load i32, ptr %143, align 4, !tbaa !5
  %145 = trunc i32 %144 to i8
  store i8 %145, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 5), align 8, !tbaa !23
  br label %487

146:                                              ; preds = %33
  %147 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %148 = getelementptr inbounds %struct.__va_list_tag, ptr %147, i32 0, i32 0
  %149 = load i32, ptr %148, align 16
  %150 = icmp ule i32 %149, 40
  br i1 %150, label %151, label %156

151:                                              ; preds = %146
  %152 = getelementptr inbounds %struct.__va_list_tag, ptr %147, i32 0, i32 3
  %153 = load ptr, ptr %152, align 16
  %154 = getelementptr i8, ptr %153, i32 %149
  %155 = add i32 %149, 8
  store i32 %155, ptr %148, align 16
  br label %160

156:                                              ; preds = %146
  %157 = getelementptr inbounds %struct.__va_list_tag, ptr %147, i32 0, i32 2
  %158 = load ptr, ptr %157, align 8
  %159 = getelementptr i8, ptr %158, i32 8
  store ptr %159, ptr %157, align 8
  br label %160

160:                                              ; preds = %156, %151
  %161 = phi ptr [ %154, %151 ], [ %158, %156 ]
  %162 = load ptr, ptr %161, align 8, !tbaa !18
  store ptr %162, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 21), align 8, !tbaa !24
  %163 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %164 = getelementptr inbounds %struct.__va_list_tag, ptr %163, i32 0, i32 0
  %165 = load i32, ptr %164, align 16
  %166 = icmp ule i32 %165, 40
  br i1 %166, label %167, label %172

167:                                              ; preds = %160
  %168 = getelementptr inbounds %struct.__va_list_tag, ptr %163, i32 0, i32 3
  %169 = load ptr, ptr %168, align 16
  %170 = getelementptr i8, ptr %169, i32 %165
  %171 = add i32 %165, 8
  store i32 %171, ptr %164, align 16
  br label %176

172:                                              ; preds = %160
  %173 = getelementptr inbounds %struct.__va_list_tag, ptr %163, i32 0, i32 2
  %174 = load ptr, ptr %173, align 8
  %175 = getelementptr i8, ptr %174, i32 8
  store ptr %175, ptr %173, align 8
  br label %176

176:                                              ; preds = %172, %167
  %177 = phi ptr [ %170, %167 ], [ %174, %172 ]
  %178 = load i32, ptr %177, align 4, !tbaa !5
  store i32 %178, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 22), align 8, !tbaa !25
  %179 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %180 = getelementptr inbounds %struct.__va_list_tag, ptr %179, i32 0, i32 0
  %181 = load i32, ptr %180, align 16
  %182 = icmp ule i32 %181, 40
  br i1 %182, label %183, label %188

183:                                              ; preds = %176
  %184 = getelementptr inbounds %struct.__va_list_tag, ptr %179, i32 0, i32 3
  %185 = load ptr, ptr %184, align 16
  %186 = getelementptr i8, ptr %185, i32 %181
  %187 = add i32 %181, 8
  store i32 %187, ptr %180, align 16
  br label %192

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

192:                                              ; preds = %188, %183
  %193 = phi ptr [ %186, %183 ], [ %190, %188 ]
  %194 = load i32, ptr %193, align 4, !tbaa !5
  store i32 %194, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 23), align 4, !tbaa !26
  br label %487

195:                                              ; preds = %33
  %196 = call i32 @sqlite3HeaderSizeBtree()
  %197 = call i32 @sqlite3HeaderSizePcache()
  %198 = add nsw i32 %196, %197
  %199 = call i32 @sqlite3HeaderSizePcache1()
  %200 = add nsw i32 %198, %199
  %201 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %202 = getelementptr inbounds %struct.__va_list_tag, ptr %201, i32 0, i32 0
  %203 = load i32, ptr %202, align 16
  %204 = icmp ule i32 %203, 40
  br i1 %204, label %205, label %210

205:                                              ; preds = %195
  %206 = getelementptr inbounds %struct.__va_list_tag, ptr %201, i32 0, i32 3
  %207 = load ptr, ptr %206, align 16
  %208 = getelementptr i8, ptr %207, i32 %203
  %209 = add i32 %203, 8
  store i32 %209, ptr %202, align 16
  br label %214

210:                                              ; preds = %195
  %211 = getelementptr inbounds %struct.__va_list_tag, ptr %201, i32 0, i32 2
  %212 = load ptr, ptr %211, align 8
  %213 = getelementptr i8, ptr %212, i32 8
  store ptr %213, ptr %211, align 8
  br label %214

214:                                              ; preds = %210, %205
  %215 = phi ptr [ %208, %205 ], [ %212, %210 ]
  %216 = load ptr, ptr %215, align 8, !tbaa !18
  store i32 %200, ptr %216, align 4, !tbaa !5
  br label %487

217:                                              ; preds = %33
  br label %487

218:                                              ; preds = %33
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %487

219:                                              ; preds = %33
  %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 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 14), ptr align 8 %235, i64 104, i1 false), !tbaa.struct !27
  br label %487

236:                                              ; preds = %33
  %237 = load ptr, ptr getelementptr inbounds (%struct.sqlite3_pcache_methods2, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 14), i32 0, i32 2), align 8, !tbaa !28
  %238 = icmp eq ptr %237, null
  br i1 %238, label %239, label %240

239:                                              ; preds = %236
  call void @sqlite3PCacheSetDefault()
  br label %240

240:                                              ; preds = %239, %236
  %241 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %242 = getelementptr inbounds %struct.__va_list_tag, ptr %241, i32 0, i32 0
  %243 = load i32, ptr %242, align 16
  %244 = icmp ule i32 %243, 40
  br i1 %244, label %245, label %250

245:                                              ; preds = %240
  %246 = getelementptr inbounds %struct.__va_list_tag, ptr %241, i32 0, i32 3
  %247 = load ptr, ptr %246, align 16
  %248 = getelementptr i8, ptr %247, i32 %243
  %249 = add i32 %243, 8
  store i32 %249, ptr %242, align 16
  br label %254

250:                                              ; preds = %240
  %251 = getelementptr inbounds %struct.__va_list_tag, ptr %241, i32 0, i32 2
  %252 = load ptr, ptr %251, align 8
  %253 = getelementptr i8, ptr %252, i32 8
  store ptr %253, ptr %251, align 8
  br label %254

254:                                              ; preds = %250, %245
  %255 = phi ptr [ %248, %245 ], [ %252, %250 ]
  %256 = load ptr, ptr %255, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %256, ptr align 8 getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 14), i64 104, i1 false), !tbaa.struct !27
  br label %487

257:                                              ; preds = %33
  %258 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %259 = getelementptr inbounds %struct.__va_list_tag, ptr %258, i32 0, i32 0
  %260 = load i32, ptr %259, align 16
  %261 = icmp ule i32 %260, 40
  br i1 %261, label %262, label %267

262:                                              ; preds = %257
  %263 = getelementptr inbounds %struct.__va_list_tag, ptr %258, i32 0, i32 3
  %264 = load ptr, ptr %263, align 16
  %265 = getelementptr i8, ptr %264, i32 %260
  %266 = add i32 %260, 8
  store i32 %266, ptr %259, align 16
  br label %271

267:                                              ; preds = %257
  %268 = getelementptr inbounds %struct.__va_list_tag, ptr %258, i32 0, i32 2
  %269 = load ptr, ptr %268, align 8
  %270 = getelementptr i8, ptr %269, i32 8
  store ptr %270, ptr %268, align 8
  br label %271

271:                                              ; preds = %267, %262
  %272 = phi ptr [ %265, %262 ], [ %269, %267 ]
  %273 = load i32, ptr %272, align 4, !tbaa !5
  store i32 %273, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 9), align 4, !tbaa !29
  %274 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %275 = getelementptr inbounds %struct.__va_list_tag, ptr %274, i32 0, i32 0
  %276 = load i32, ptr %275, align 16
  %277 = icmp ule i32 %276, 40
  br i1 %277, label %278, label %283

278:                                              ; preds = %271
  %279 = getelementptr inbounds %struct.__va_list_tag, ptr %274, i32 0, i32 3
  %280 = load ptr, ptr %279, align 16
  %281 = getelementptr i8, ptr %280, i32 %276
  %282 = add i32 %276, 8
  store i32 %282, ptr %275, align 16
  br label %287

283:                                              ; preds = %271
  %284 = getelementptr inbounds %struct.__va_list_tag, ptr %274, i32 0, i32 2
  %285 = load ptr, ptr %284, align 8
  %286 = getelementptr i8, ptr %285, i32 8
  store ptr %286, ptr %284, align 8
  br label %287

287:                                              ; preds = %283, %278
  %288 = phi ptr [ %281, %278 ], [ %285, %283 ]
  %289 = load i32, ptr %288, align 4, !tbaa !5
  store i32 %289, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 10), align 8, !tbaa !30
  br label %487

290:                                              ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  %291 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %292 = getelementptr inbounds %struct.__va_list_tag, ptr %291, i32 0, i32 0
  %293 = load i32, ptr %292, align 16
  %294 = icmp ule i32 %293, 40
  br i1 %294, label %295, label %300

295:                                              ; preds = %290
  %296 = getelementptr inbounds %struct.__va_list_tag, ptr %291, i32 0, i32 3
  %297 = load ptr, ptr %296, align 16
  %298 = getelementptr i8, ptr %297, i32 %293
  %299 = add i32 %293, 8
  store i32 %299, ptr %292, align 16
  br label %304

300:                                              ; preds = %290
  %301 = getelementptr inbounds %struct.__va_list_tag, ptr %291, i32 0, i32 2
  %302 = load ptr, ptr %301, align 8
  %303 = getelementptr i8, ptr %302, i32 8
  store ptr %303, ptr %301, align 8
  br label %304

304:                                              ; preds = %300, %295
  %305 = phi ptr [ %298, %295 ], [ %302, %300 ]
  %306 = load ptr, ptr %305, align 8, !tbaa !18
  store ptr %306, ptr %7, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %307 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %308 = getelementptr inbounds %struct.__va_list_tag, ptr %307, i32 0, i32 0
  %309 = load i32, ptr %308, align 16
  %310 = icmp ule i32 %309, 40
  br i1 %310, label %311, label %316

311:                                              ; preds = %304
  %312 = getelementptr inbounds %struct.__va_list_tag, ptr %307, i32 0, i32 3
  %313 = load ptr, ptr %312, align 16
  %314 = getelementptr i8, ptr %313, i32 %309
  %315 = add i32 %309, 8
  store i32 %315, ptr %308, align 16
  br label %320

316:                                              ; preds = %304
  %317 = getelementptr inbounds %struct.__va_list_tag, ptr %307, i32 0, i32 2
  %318 = load ptr, ptr %317, align 8
  %319 = getelementptr i8, ptr %318, i32 8
  store ptr %319, ptr %317, align 8
  br label %320

320:                                              ; preds = %316, %311
  %321 = phi ptr [ %314, %311 ], [ %318, %316 ]
  %322 = load ptr, ptr %321, align 8, !tbaa !18
  store ptr %322, ptr %8, align 8, !tbaa !18
  %323 = load ptr, ptr %7, align 8, !tbaa !18
  store ptr %323, ptr %9, align 8, !tbaa !18
  %324 = load i64, ptr %9, align 8
  store atomic i64 %324, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 34) monotonic, align 8
  %325 = load ptr, ptr %8, align 8, !tbaa !18
  store ptr %325, ptr %10, align 8, !tbaa !18
  %326 = load i64, ptr %10, align 8
  store atomic i64 %326, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 35) monotonic, align 8
  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 %487

327:                                              ; preds = %33
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %328 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %329 = getelementptr inbounds %struct.__va_list_tag, ptr %328, i32 0, i32 0
  %330 = load i32, ptr %329, align 16
  %331 = icmp ule i32 %330, 40
  br i1 %331, label %332, label %337

332:                                              ; preds = %327
  %333 = getelementptr inbounds %struct.__va_list_tag, ptr %328, i32 0, i32 3
  %334 = load ptr, ptr %333, align 16
  %335 = getelementptr i8, ptr %334, i32 %330
  %336 = add i32 %330, 8
  store i32 %336, ptr %329, align 16
  br label %341

337:                                              ; preds = %327
  %338 = getelementptr inbounds %struct.__va_list_tag, ptr %328, i32 0, i32 2
  %339 = load ptr, ptr %338, align 8
  %340 = getelementptr i8, ptr %339, i32 8
  store ptr %340, ptr %338, align 8
  br label %341

341:                                              ; preds = %337, %332
  %342 = phi ptr [ %335, %332 ], [ %339, %337 ]
  %343 = load i32, ptr %342, align 4, !tbaa !5
  store i32 %343, ptr %11, align 4, !tbaa !5
  %344 = load i32, ptr %11, align 4, !tbaa !5
  %345 = trunc i32 %344 to i8
  store i8 %345, ptr %12, align 1, !tbaa !31
  %346 = load i8, ptr %12, align 1
  store atomic i8 %346, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 3) monotonic, align 2
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %487

347:                                              ; preds = %33
  %348 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %349 = getelementptr inbounds %struct.__va_list_tag, ptr %348, i32 0, i32 0
  %350 = load i32, ptr %349, align 16
  %351 = icmp ule i32 %350, 40
  br i1 %351, label %352, label %357

352:                                              ; preds = %347
  %353 = getelementptr inbounds %struct.__va_list_tag, ptr %348, i32 0, i32 3
  %354 = load ptr, ptr %353, align 16
  %355 = getelementptr i8, ptr %354, i32 %350
  %356 = add i32 %350, 8
  store i32 %356, ptr %349, align 16
  br label %361

357:                                              ; preds = %347
  %358 = getelementptr inbounds %struct.__va_list_tag, ptr %348, i32 0, i32 2
  %359 = load ptr, ptr %358, align 8
  %360 = getelementptr i8, ptr %359, i32 8
  store ptr %360, ptr %358, align 8
  br label %361

361:                                              ; preds = %357, %352
  %362 = phi ptr [ %355, %352 ], [ %359, %357 ]
  %363 = load i32, ptr %362, align 4, !tbaa !5
  %364 = trunc i32 %363 to i8
  store i8 %364, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 4), align 1, !tbaa !32
  br label %487

365:                                              ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %366 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %367 = getelementptr inbounds %struct.__va_list_tag, ptr %366, i32 0, i32 0
  %368 = load i32, ptr %367, align 16
  %369 = icmp ule i32 %368, 40
  br i1 %369, label %370, label %375

370:                                              ; preds = %365
  %371 = getelementptr inbounds %struct.__va_list_tag, ptr %366, i32 0, i32 3
  %372 = load ptr, ptr %371, align 16
  %373 = getelementptr i8, ptr %372, i32 %368
  %374 = add i32 %368, 8
  store i32 %374, ptr %367, align 16
  br label %379

375:                                              ; preds = %365
  %376 = getelementptr inbounds %struct.__va_list_tag, ptr %366, i32 0, i32 2
  %377 = load ptr, ptr %376, align 8
  %378 = getelementptr i8, ptr %377, i32 8
  store ptr %378, ptr %376, align 8
  br label %379

379:                                              ; preds = %375, %370
  %380 = phi ptr [ %373, %370 ], [ %377, %375 ]
  %381 = load i64, ptr %380, align 8, !tbaa !33
  store i64 %381, ptr %13, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %382 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %383 = getelementptr inbounds %struct.__va_list_tag, ptr %382, i32 0, i32 0
  %384 = load i32, ptr %383, align 16
  %385 = icmp ule i32 %384, 40
  br i1 %385, label %386, label %391

386:                                              ; preds = %379
  %387 = getelementptr inbounds %struct.__va_list_tag, ptr %382, i32 0, i32 3
  %388 = load ptr, ptr %387, align 16
  %389 = getelementptr i8, ptr %388, i32 %384
  %390 = add i32 %384, 8
  store i32 %390, ptr %383, align 16
  br label %395

391:                                              ; preds = %379
  %392 = getelementptr inbounds %struct.__va_list_tag, ptr %382, i32 0, i32 2
  %393 = load ptr, ptr %392, align 8
  %394 = getelementptr i8, ptr %393, i32 8
  store ptr %394, ptr %392, align 8
  br label %395

395:                                              ; preds = %391, %386
  %396 = phi ptr [ %389, %386 ], [ %393, %391 ]
  %397 = load i64, ptr %396, align 8, !tbaa !33
  store i64 %397, ptr %14, align 8, !tbaa !33
  %398 = load i64, ptr %14, align 8, !tbaa !33
  %399 = icmp slt i64 %398, 0
  br i1 %399, label %403, label %400

400:                                              ; preds = %395
  %401 = load i64, ptr %14, align 8, !tbaa !33
  %402 = icmp sgt i64 %401, 2147418112
  br i1 %402, label %403, label %404

403:                                              ; preds = %400, %395
  store i64 2147418112, ptr %14, align 8, !tbaa !33
  br label %404

404:                                              ; preds = %403, %400
  %405 = load i64, ptr %13, align 8, !tbaa !33
  %406 = icmp slt i64 %405, 0
  br i1 %406, label %407, label %408

407:                                              ; preds = %404
  store i64 0, ptr %13, align 8, !tbaa !33
  br label %408

408:                                              ; preds = %407, %404
  %409 = load i64, ptr %13, align 8, !tbaa !33
  %410 = load i64, ptr %14, align 8, !tbaa !33
  %411 = icmp sgt i64 %409, %410
  br i1 %411, label %412, label %414

412:                                              ; preds = %408
  %413 = load i64, ptr %14, align 8, !tbaa !33
  store i64 %413, ptr %13, align 8, !tbaa !33
  br label %414

414:                                              ; preds = %412, %408
  %415 = load i64, ptr %14, align 8, !tbaa !33
  store i64 %415, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 20), align 8, !tbaa !34
  %416 = load i64, ptr %13, align 8, !tbaa !33
  store i64 %416, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 19), align 8, !tbaa !35
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  br label %487

417:                                              ; preds = %33
  %418 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %419 = getelementptr inbounds %struct.__va_list_tag, ptr %418, i32 0, i32 0
  %420 = load i32, ptr %419, align 16
  %421 = icmp ule i32 %420, 40
  br i1 %421, label %422, label %427

422:                                              ; preds = %417
  %423 = getelementptr inbounds %struct.__va_list_tag, ptr %418, i32 0, i32 3
  %424 = load ptr, ptr %423, align 16
  %425 = getelementptr i8, ptr %424, i32 %420
  %426 = add i32 %420, 8
  store i32 %426, ptr %419, align 16
  br label %431

427:                                              ; preds = %417
  %428 = getelementptr inbounds %struct.__va_list_tag, ptr %418, i32 0, i32 2
  %429 = load ptr, ptr %428, align 8
  %430 = getelementptr i8, ptr %429, i32 8
  store ptr %430, ptr %428, align 8
  br label %431

431:                                              ; preds = %427, %422
  %432 = phi ptr [ %425, %422 ], [ %429, %427 ]
  %433 = load i32, ptr %432, align 4, !tbaa !5
  store i32 %433, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 26), align 8, !tbaa !36
  br label %487

434:                                              ; preds = %33
  %435 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %436 = getelementptr inbounds %struct.__va_list_tag, ptr %435, i32 0, i32 0
  %437 = load i32, ptr %436, align 16
  %438 = icmp ule i32 %437, 40
  br i1 %438, label %439, label %444

439:                                              ; preds = %434
  %440 = getelementptr inbounds %struct.__va_list_tag, ptr %435, i32 0, i32 3
  %441 = load ptr, ptr %440, align 16
  %442 = getelementptr i8, ptr %441, i32 %437
  %443 = add i32 %437, 8
  store i32 %443, ptr %436, align 16
  br label %448

444:                                              ; preds = %434
  %445 = getelementptr inbounds %struct.__va_list_tag, ptr %435, i32 0, i32 2
  %446 = load ptr, ptr %445, align 8
  %447 = getelementptr i8, ptr %446, i32 8
  store ptr %447, ptr %445, align 8
  br label %448

448:                                              ; preds = %444, %439
  %449 = phi ptr [ %442, %439 ], [ %446, %444 ]
  %450 = load i32, ptr %449, align 4, !tbaa !5
  store i32 %450, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 11), align 4, !tbaa !37
  br label %487

451:                                              ; preds = %33
  %452 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %453 = getelementptr inbounds %struct.__va_list_tag, ptr %452, i32 0, i32 0
  %454 = load i32, ptr %453, align 16
  %455 = icmp ule i32 %454, 40
  br i1 %455, label %456, label %461

456:                                              ; preds = %451
  %457 = getelementptr inbounds %struct.__va_list_tag, ptr %452, i32 0, i32 3
  %458 = load ptr, ptr %457, align 16
  %459 = getelementptr i8, ptr %458, i32 %454
  %460 = add i32 %454, 8
  store i32 %460, ptr %453, align 16
  br label %465

461:                                              ; preds = %451
  %462 = getelementptr inbounds %struct.__va_list_tag, ptr %452, i32 0, i32 2
  %463 = load ptr, ptr %462, align 8
  %464 = getelementptr i8, ptr %463, i32 8
  store ptr %464, ptr %462, align 8
  br label %465

465:                                              ; preds = %461, %456
  %466 = phi ptr [ %459, %456 ], [ %463, %461 ]
  %467 = load i64, ptr %466, align 8, !tbaa !33
  store i64 %467, ptr getelementptr inbounds (%struct.Sqlite3Config, ptr @sqlite3Config, i32 0, i32 36), align 8, !tbaa !38
  br label %487

468:                                              ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %469 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  %470 = getelementptr inbounds %struct.__va_list_tag, ptr %469, i32 0, i32 0
  %471 = load i32, ptr %470, align 16
  %472 = icmp ule i32 %471, 40
  br i1 %472, label %473, label %478

473:                                              ; preds = %468
  %474 = getelementptr inbounds %struct.__va_list_tag, ptr %469, i32 0, i32 3
  %475 = load ptr, ptr %474, align 16
  %476 = getelementptr i8, ptr %475, i32 %471
  %477 = add i32 %471, 8
  store i32 %477, ptr %470, align 16
  br label %482

478:                                              ; preds = %468
  %479 = getelementptr inbounds %struct.__va_list_tag, ptr %469, i32 0, i32 2
  %480 = load ptr, ptr %479, align 8
  %481 = getelementptr i8, ptr %480, i32 8
  store ptr %481, ptr %479, align 8
  br label %482

482:                                              ; preds = %478, %473
  %483 = phi ptr [ %476, %473 ], [ %480, %478 ]
  %484 = load ptr, ptr %483, align 8, !tbaa !18
  store ptr %484, ptr %15, align 8, !tbaa !18
  %485 = load ptr, ptr %15, align 8, !tbaa !18
  store i32 0, ptr %485, align 4, !tbaa !5
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  br label %487

486:                                              ; preds = %33
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %487

487:                                              ; preds = %486, %482, %465, %448, %431, %414, %361, %341, %320, %287, %254, %233, %218, %217, %214, %192, %142, %125, %108, %87, %70, %53, %38, %37, %36
  %488 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %4, i64 0, i64 0
  call void @llvm.va_end.p0(ptr %488)
  %489 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %489, ptr %2, align 4
  store i32 1, ptr %6, align 4
  br label %490

490:                                              ; preds = %487, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #4
  %491 = load i32, ptr %2, align 4
  ret i32 %491
}

; 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 340}
!10 = !{!"Sqlite3Config", !6, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !7, i64 8, !7, i64 9, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !11, i64 32, !13, i64 96, !14, i64 168, !12, i64 272, !6, i64 280, !6, i64 284, !6, i64 288, !15, i64 296, !15, i64 304, !12, i64 312, !6, i64 320, !6, i64 324, !6, i64 328, !6, i64 332, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !12, i64 368, !12, i64 376, !12, i64 384, !15, i64 392, !12, i64 400, !6, i64 408, !12, i64 416, !6, i64 424, !6, i64 428, !6, i64 432}
!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, !7, i64 4}
!17 = !{!10, !7, i64 5}
!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 32}
!22 = !{!10, !6, i64 0}
!23 = !{!10, !7, i64 8}
!24 = !{!10, !12, i64 312}
!25 = !{!10, !6, i64 320}
!26 = !{!10, !6, i64 324}
!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 184}
!29 = !{!10, !6, i64 20}
!30 = !{!10, !6, i64 24}
!31 = !{!7, !7, i64 0}
!32 = !{!10, !7, i64 7}
!33 = !{!15, !15, i64 0}
!34 = !{!10, !15, i64 304}
!35 = !{!10, !15, i64 296}
!36 = !{!10, !6, i64 336}
!37 = !{!10, !6, i64 28}
!38 = !{!10, !15, i64 392}


; 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, i8, i8, i8, i8, i8, i8, 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, i64, ptr, i32, ptr, 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 340), align 4, !tbaa !5
  %.not = icmp eq i32 %3, 0
  br i1 %.not, label %12, label %4

4:                                                ; preds = %1
  %or.cond = icmp ugt i32 %0, 63
  br i1 %or.cond, label %10, label %5

5:                                                ; preds = %4
  %6 = zext nneg i32 %0 to i64
  %7 = shl nuw i64 1, %6
  %8 = and i64 %7, 16842752
  %9 = icmp eq i64 %8, 0
  br i1 %9, label %10, label %12

10:                                               ; preds = %5, %4
  %11 = tail call i32 @sqlite3MisuseError(i32 noundef 181552)
  br label %406

12:                                               ; preds = %5, %1
  call void @llvm.va_start.p0(ptr nonnull %2)
  switch i32 %0, label %404 [
    i32 1, label %13
    i32 2, label %14
    i32 3, label %15
    i32 10, label %16
    i32 11, label %32
    i32 4, label %48
    i32 5, label %64
    i32 9, label %84
    i32 27, label %100
    i32 7, label %117
    i32 24, label %157
    i32 14, label %405
    i32 15, label %178
    i32 18, label %179
    i32 19, label %195
    i32 13, label %215
    i32 16, label %243
    i32 17, label %275
    i32 20, label %292
    i32 22, label %309
    i32 25, label %340
    i32 26, label %356
    i32 29, label %372
    i32 30, label %388
  ]

13:                                               ; preds = %12
  store i8 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i8 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 5), align 1, !tbaa !16
  br label %405

14:                                               ; preds = %12
  store i8 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i8 0, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 5), align 1, !tbaa !16
  br label %405

15:                                               ; preds = %12
  store i8 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 4), align 4, !tbaa !15
  store i8 1, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 5), align 1, !tbaa !16
  br label %405

16:                                               ; preds = %12
  %17 = load i32, ptr %2, align 16
  %18 = icmp ult i32 %17, 41
  br i1 %18, label %19, label %25

19:                                               ; preds = %16
  %20 = getelementptr inbounds i8, ptr %2, i64 16
  %21 = load ptr, ptr %20, align 16
  %22 = zext nneg i32 %17 to i64
  %23 = getelementptr i8, ptr %21, i64 %22
  %24 = add nuw nsw i32 %17, 8
  store i32 %24, ptr %2, align 16
  br label %29

25:                                               ; preds = %16
  %26 = getelementptr inbounds i8, ptr %2, i64 8
  %27 = load ptr, ptr %26, align 8
  %28 = getelementptr i8, ptr %27, i64 8
  store ptr %28, ptr %26, align 8
  br label %29

29:                                               ; preds = %25, %19
  %30 = phi ptr [ %23, %19 ], [ %27, %25 ]
  %31 = load ptr, ptr %30, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @sqlite3Config, i64 96), ptr noundef nonnull align 8 dereferenceable(72) %31, i64 72, i1 false), !tbaa.struct !18
  br label %405

32:                                               ; preds = %12
  %33 = load i32, ptr %2, align 16
  %34 = icmp ult i32 %33, 41
  br i1 %34, label %35, label %41

35:                                               ; preds = %32
  %36 = getelementptr inbounds i8, ptr %2, i64 16
  %37 = load ptr, ptr %36, align 16
  %38 = zext nneg i32 %33 to i64
  %39 = getelementptr i8, ptr %37, i64 %38
  %40 = add nuw nsw i32 %33, 8
  store i32 %40, ptr %2, align 16
  br label %45

41:                                               ; preds = %32
  %42 = getelementptr inbounds i8, ptr %2, i64 8
  %43 = load ptr, ptr %42, align 8
  %44 = getelementptr i8, ptr %43, i64 8
  store ptr %44, ptr %42, align 8
  br label %45

45:                                               ; preds = %41, %35
  %46 = phi ptr [ %39, %35 ], [ %43, %41 ]
  %47 = load ptr, ptr %46, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %47, ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @sqlite3Config, i64 96), i64 72, i1 false), !tbaa.struct !18
  br label %405

48:                                               ; preds = %12
  %49 = load i32, ptr %2, align 16
  %50 = icmp ult i32 %49, 41
  br i1 %50, label %51, label %57

51:                                               ; preds = %48
  %52 = getelementptr inbounds i8, ptr %2, i64 16
  %53 = load ptr, ptr %52, align 16
  %54 = zext nneg i32 %49 to i64
  %55 = getelementptr i8, ptr %53, i64 %54
  %56 = add nuw nsw i32 %49, 8
  store i32 %56, ptr %2, align 16
  br label %61

57:                                               ; preds = %48
  %58 = getelementptr inbounds i8, ptr %2, i64 8
  %59 = load ptr, ptr %58, align 8
  %60 = getelementptr i8, ptr %59, i64 8
  store ptr %60, ptr %58, align 8
  br label %61

61:                                               ; preds = %57, %51
  %62 = phi ptr [ %55, %51 ], [ %59, %57 ]
  %63 = load ptr, ptr %62, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) getelementptr inbounds (i8, ptr @sqlite3Config, i64 32), ptr noundef nonnull align 8 dereferenceable(64) %63, i64 64, i1 false), !tbaa.struct !19
  br label %405

64:                                               ; preds = %12
  %65 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 32), align 8, !tbaa !20
  %66 = icmp eq ptr %65, null
  br i1 %66, label %67, label %68

67:                                               ; preds = %64
  call void @sqlite3MemSetDefault()
  br label %68

68:                                               ; preds = %67, %64
  %69 = load i32, ptr %2, align 16
  %70 = icmp ult i32 %69, 41
  br i1 %70, label %71, label %77

71:                                               ; preds = %68
  %72 = getelementptr inbounds i8, ptr %2, i64 16
  %73 = load ptr, ptr %72, align 16
  %74 = zext nneg i32 %69 to i64
  %75 = getelementptr i8, ptr %73, i64 %74
  %76 = add nuw nsw i32 %69, 8
  store i32 %76, ptr %2, align 16
  br label %81

77:                                               ; preds = %68
  %78 = getelementptr inbounds i8, ptr %2, i64 8
  %79 = load ptr, ptr %78, align 8
  %80 = getelementptr i8, ptr %79, i64 8
  store ptr %80, ptr %78, align 8
  br label %81

81:                                               ; preds = %77, %71
  %82 = phi ptr [ %75, %71 ], [ %79, %77 ]
  %83 = load ptr, ptr %82, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %83, ptr noundef nonnull align 8 dereferenceable(64) getelementptr inbounds (i8, ptr @sqlite3Config, i64 32), i64 64, i1 false), !tbaa.struct !19
  br label %405

84:                                               ; preds = %12
  %85 = load i32, ptr %2, align 16
  %86 = icmp ult i32 %85, 41
  br i1 %86, label %87, label %93

87:                                               ; preds = %84
  %88 = getelementptr inbounds i8, ptr %2, i64 16
  %89 = load ptr, ptr %88, align 16
  %90 = zext nneg i32 %85 to i64
  %91 = getelementptr i8, ptr %89, i64 %90
  %92 = add nuw nsw i32 %85, 8
  store i32 %92, ptr %2, align 16
  br label %97

93:                                               ; preds = %84
  %94 = getelementptr inbounds i8, ptr %2, i64 8
  %95 = load ptr, ptr %94, align 8
  %96 = getelementptr i8, ptr %95, i64 8
  store ptr %96, ptr %94, align 8
  br label %97

97:                                               ; preds = %93, %87
  %98 = phi ptr [ %91, %87 ], [ %95, %93 ]
  %99 = load i32, ptr %98, align 4, !tbaa !21
  store i32 %99, ptr @sqlite3Config, align 8, !tbaa !22
  br label %405

100:                                              ; preds = %12
  %101 = load i32, ptr %2, align 16
  %102 = icmp ult i32 %101, 41
  br i1 %102, label %103, label %109

103:                                              ; preds = %100
  %104 = getelementptr inbounds i8, ptr %2, i64 16
  %105 = load ptr, ptr %104, align 16
  %106 = zext nneg i32 %101 to i64
  %107 = getelementptr i8, ptr %105, i64 %106
  %108 = add nuw nsw i32 %101, 8
  store i32 %108, ptr %2, align 16
  br label %113

109:                                              ; preds = %100
  %110 = getelementptr inbounds i8, ptr %2, i64 8
  %111 = load ptr, ptr %110, align 8
  %112 = getelementptr i8, ptr %111, i64 8
  store ptr %112, ptr %110, align 8
  br label %113

113:                                              ; preds = %109, %103
  %114 = phi ptr [ %107, %103 ], [ %111, %109 ]
  %115 = load i32, ptr %114, align 4, !tbaa !21
  %116 = trunc i32 %115 to i8
  store i8 %116, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 8), align 8, !tbaa !23
  br label %405

117:                                              ; preds = %12
  %118 = load i32, ptr %2, align 16
  %119 = icmp ult i32 %118, 41
  br i1 %119, label %124, label %.thread

.thread:                                          ; preds = %117
  %120 = getelementptr inbounds i8, ptr %2, i64 8
  %121 = load ptr, ptr %120, align 8
  %122 = getelementptr i8, ptr %121, i64 8
  store ptr %122, ptr %120, align 8
  %123 = load ptr, ptr %121, align 8, !tbaa !17
  store ptr %123, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 312), align 8, !tbaa !24
  br label %.thread57

124:                                              ; preds = %117
  %125 = getelementptr inbounds i8, ptr %2, i64 16
  %126 = load ptr, ptr %125, align 16
  %127 = zext nneg i32 %118 to i64
  %128 = getelementptr i8, ptr %126, i64 %127
  %129 = add nuw nsw i32 %118, 8
  store i32 %129, ptr %2, align 16
  %130 = load ptr, ptr %128, align 8, !tbaa !17
  store ptr %130, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 312), align 8, !tbaa !24
  %131 = icmp ult i32 %118, 33
  br i1 %131, label %136, label %.thread57

.thread57:                                        ; preds = %124, %.thread
  %132 = getelementptr inbounds i8, ptr %2, i64 8
  %133 = load ptr, ptr %132, align 8
  %134 = getelementptr i8, ptr %133, i64 8
  store ptr %134, ptr %132, align 8
  %135 = load i32, ptr %133, align 4, !tbaa !21
  store i32 %135, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 320), align 8, !tbaa !25
  br label %150

136:                                              ; preds = %124
  %137 = getelementptr inbounds i8, ptr %2, i64 16
  %138 = load ptr, ptr %137, align 16
  %139 = zext nneg i32 %129 to i64
  %140 = getelementptr i8, ptr %138, i64 %139
  %141 = add nuw nsw i32 %118, 16
  store i32 %141, ptr %2, align 16
  %142 = load i32, ptr %140, align 4, !tbaa !21
  store i32 %142, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 320), align 8, !tbaa !25
  %143 = icmp ult i32 %118, 25
  br i1 %143, label %144, label %150

144:                                              ; preds = %136
  %145 = getelementptr inbounds i8, ptr %2, i64 16
  %146 = load ptr, ptr %145, align 16
  %147 = zext nneg i32 %141 to i64
  %148 = getelementptr i8, ptr %146, i64 %147
  %149 = add nuw nsw i32 %118, 24
  store i32 %149, ptr %2, align 16
  br label %154

150:                                              ; preds = %.thread57, %136
  %151 = getelementptr inbounds i8, ptr %2, i64 8
  %152 = load ptr, ptr %151, align 8
  %153 = getelementptr i8, ptr %152, i64 8
  store ptr %153, ptr %151, align 8
  br label %154

154:                                              ; preds = %150, %144
  %155 = phi ptr [ %148, %144 ], [ %152, %150 ]
  %156 = load i32, ptr %155, align 4, !tbaa !21
  store i32 %156, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 324), align 4, !tbaa !26
  br label %405

157:                                              ; preds = %12
  %158 = call i32 @sqlite3HeaderSizeBtree()
  %159 = call i32 @sqlite3HeaderSizePcache()
  %160 = add nsw i32 %159, %158
  %161 = call i32 @sqlite3HeaderSizePcache1()
  %162 = add nsw i32 %160, %161
  %163 = load i32, ptr %2, align 16
  %164 = icmp ult i32 %163, 41
  br i1 %164, label %165, label %171

165:                                              ; preds = %157
  %166 = getelementptr inbounds i8, ptr %2, i64 16
  %167 = load ptr, ptr %166, align 16
  %168 = zext nneg i32 %163 to i64
  %169 = getelementptr i8, ptr %167, i64 %168
  %170 = add nuw nsw i32 %163, 8
  store i32 %170, ptr %2, align 16
  br label %175

171:                                              ; preds = %157
  %172 = getelementptr inbounds i8, ptr %2, i64 8
  %173 = load ptr, ptr %172, align 8
  %174 = getelementptr i8, ptr %173, i64 8
  store ptr %174, ptr %172, align 8
  br label %175

175:                                              ; preds = %171, %165
  %176 = phi ptr [ %169, %165 ], [ %173, %171 ]
  %177 = load ptr, ptr %176, align 8, !tbaa !17
  store i32 %162, ptr %177, align 4, !tbaa !21
  br label %405

178:                                              ; preds = %12
  br label %405

179:                                              ; preds = %12
  %180 = load i32, ptr %2, align 16
  %181 = icmp ult i32 %180, 41
  br i1 %181, label %182, label %188

182:                                              ; preds = %179
  %183 = getelementptr inbounds i8, ptr %2, i64 16
  %184 = load ptr, ptr %183, align 16
  %185 = zext nneg i32 %180 to i64
  %186 = getelementptr i8, ptr %184, i64 %185
  %187 = add nuw nsw i32 %180, 8
  store i32 %187, ptr %2, align 16
  br label %192

188:                                              ; preds = %179
  %189 = getelementptr inbounds i8, ptr %2, i64 8
  %190 = load ptr, ptr %189, align 8
  %191 = getelementptr i8, ptr %190, i64 8
  store ptr %191, ptr %189, align 8
  br label %192

192:                                              ; preds = %188, %182
  %193 = phi ptr [ %186, %182 ], [ %190, %188 ]
  %194 = load ptr, ptr %193, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) getelementptr inbounds (i8, ptr @sqlite3Config, i64 168), ptr noundef nonnull align 8 dereferenceable(104) %194, i64 104, i1 false), !tbaa.struct !27
  br label %405

195:                                              ; preds = %12
  %196 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 184), align 8, !tbaa !28
  %197 = icmp eq ptr %196, null
  br i1 %197, label %198, label %199

198:                                              ; preds = %195
  call void @sqlite3PCacheSetDefault()
  br label %199

199:                                              ; preds = %198, %195
  %200 = load i32, ptr %2, align 16
  %201 = icmp ult i32 %200, 41
  br i1 %201, label %202, label %208

202:                                              ; preds = %199
  %203 = getelementptr inbounds i8, ptr %2, i64 16
  %204 = load ptr, ptr %203, align 16
  %205 = zext nneg i32 %200 to i64
  %206 = getelementptr i8, ptr %204, i64 %205
  %207 = add nuw nsw i32 %200, 8
  store i32 %207, ptr %2, align 16
  br label %212

208:                                              ; preds = %199
  %209 = getelementptr inbounds i8, ptr %2, i64 8
  %210 = load ptr, ptr %209, align 8
  %211 = getelementptr i8, ptr %210, i64 8
  store ptr %211, ptr %209, align 8
  br label %212

212:                                              ; preds = %208, %202
  %213 = phi ptr [ %206, %202 ], [ %210, %208 ]
  %214 = load ptr, ptr %213, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %214, ptr noundef nonnull align 8 dereferenceable(104) getelementptr inbounds (i8, ptr @sqlite3Config, i64 168), i64 104, i1 false), !tbaa.struct !27
  br label %405

215:                                              ; preds = %12
  %216 = load i32, ptr %2, align 16
  %217 = icmp ult i32 %216, 41
  br i1 %217, label %222, label %.thread58

.thread58:                                        ; preds = %215
  %218 = getelementptr inbounds i8, ptr %2, i64 8
  %219 = load ptr, ptr %218, align 8
  %220 = getelementptr i8, ptr %219, i64 8
  store ptr %220, ptr %218, align 8
  %221 = load i32, ptr %219, align 4, !tbaa !21
  store i32 %221, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 20), align 4, !tbaa !29
  br label %236

222:                                              ; preds = %215
  %223 = getelementptr inbounds i8, ptr %2, i64 16
  %224 = load ptr, ptr %223, align 16
  %225 = zext nneg i32 %216 to i64
  %226 = getelementptr i8, ptr %224, i64 %225
  %227 = add nuw nsw i32 %216, 8
  store i32 %227, ptr %2, align 16
  %228 = load i32, ptr %226, align 4, !tbaa !21
  store i32 %228, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 20), align 4, !tbaa !29
  %229 = icmp ult i32 %216, 33
  br i1 %229, label %230, label %236

230:                                              ; preds = %222
  %231 = getelementptr inbounds i8, ptr %2, i64 16
  %232 = load ptr, ptr %231, align 16
  %233 = zext nneg i32 %227 to i64
  %234 = getelementptr i8, ptr %232, i64 %233
  %235 = add nuw nsw i32 %216, 16
  store i32 %235, ptr %2, align 16
  br label %240

236:                                              ; preds = %.thread58, %222
  %237 = getelementptr inbounds i8, ptr %2, i64 8
  %238 = load ptr, ptr %237, align 8
  %239 = getelementptr i8, ptr %238, i64 8
  store ptr %239, ptr %237, align 8
  br label %240

240:                                              ; preds = %236, %230
  %241 = phi ptr [ %234, %230 ], [ %238, %236 ]
  %242 = load i32, ptr %241, align 4, !tbaa !21
  store i32 %242, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 24), align 8, !tbaa !30
  br label %405

243:                                              ; preds = %12
  %244 = load i32, ptr %2, align 16
  %245 = icmp ult i32 %244, 41
  br i1 %245, label %250, label %.thread59

.thread59:                                        ; preds = %243
  %246 = getelementptr inbounds i8, ptr %2, i64 8
  %247 = load ptr, ptr %246, align 8
  %248 = getelementptr i8, ptr %247, i64 8
  store ptr %248, ptr %246, align 8
  %249 = load ptr, ptr %247, align 8, !tbaa !17
  br label %264

250:                                              ; preds = %243
  %251 = getelementptr inbounds i8, ptr %2, i64 16
  %252 = load ptr, ptr %251, align 16
  %253 = zext nneg i32 %244 to i64
  %254 = getelementptr i8, ptr %252, i64 %253
  %255 = add nuw nsw i32 %244, 8
  store i32 %255, ptr %2, align 16
  %256 = load ptr, ptr %254, align 8, !tbaa !17
  %257 = icmp ult i32 %244, 33
  br i1 %257, label %258, label %264

258:                                              ; preds = %250
  %259 = getelementptr inbounds i8, ptr %2, i64 16
  %260 = load ptr, ptr %259, align 16
  %261 = zext nneg i32 %255 to i64
  %262 = getelementptr i8, ptr %260, i64 %261
  %263 = add nuw nsw i32 %244, 16
  store i32 %263, ptr %2, align 16
  br label %269

264:                                              ; preds = %.thread59, %250
  %265 = phi ptr [ %249, %.thread59 ], [ %256, %250 ]
  %266 = getelementptr inbounds i8, ptr %2, i64 8
  %267 = load ptr, ptr %266, align 8
  %268 = getelementptr i8, ptr %267, i64 8
  store ptr %268, ptr %266, align 8
  br label %269

269:                                              ; preds = %264, %258
  %270 = phi ptr [ %256, %258 ], [ %265, %264 ]
  %271 = phi ptr [ %262, %258 ], [ %267, %264 ]
  %272 = load ptr, ptr %271, align 8, !tbaa !17
  %273 = ptrtoint ptr %270 to i64
  store atomic i64 %273, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 376) monotonic, align 8
  %274 = ptrtoint ptr %272 to i64
  store atomic i64 %274, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 384) monotonic, align 8
  br label %405

275:                                              ; preds = %12
  %276 = load i32, ptr %2, align 16
  %277 = icmp ult i32 %276, 41
  br i1 %277, label %278, label %284

278:                                              ; preds = %275
  %279 = getelementptr inbounds i8, ptr %2, i64 16
  %280 = load ptr, ptr %279, align 16
  %281 = zext nneg i32 %276 to i64
  %282 = getelementptr i8, ptr %280, i64 %281
  %283 = add nuw nsw i32 %276, 8
  store i32 %283, ptr %2, align 16
  br label %288

284:                                              ; preds = %275
  %285 = getelementptr inbounds i8, ptr %2, i64 8
  %286 = load ptr, ptr %285, align 8
  %287 = getelementptr i8, ptr %286, i64 8
  store ptr %287, ptr %285, align 8
  br label %288

288:                                              ; preds = %284, %278
  %289 = phi ptr [ %282, %278 ], [ %286, %284 ]
  %290 = load i32, ptr %289, align 4, !tbaa !21
  %291 = trunc i32 %290 to i8
  store atomic i8 %291, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 6) monotonic, align 2
  br label %405

292:                                              ; preds = %12
  %293 = load i32, ptr %2, align 16
  %294 = icmp ult i32 %293, 41
  br i1 %294, label %295, label %301

295:                                              ; preds = %292
  %296 = getelementptr inbounds i8, ptr %2, i64 16
  %297 = load ptr, ptr %296, align 16
  %298 = zext nneg i32 %293 to i64
  %299 = getelementptr i8, ptr %297, i64 %298
  %300 = add nuw nsw i32 %293, 8
  store i32 %300, ptr %2, align 16
  br label %305

301:                                              ; preds = %292
  %302 = getelementptr inbounds i8, ptr %2, i64 8
  %303 = load ptr, ptr %302, align 8
  %304 = getelementptr i8, ptr %303, i64 8
  store ptr %304, ptr %302, align 8
  br label %305

305:                                              ; preds = %301, %295
  %306 = phi ptr [ %299, %295 ], [ %303, %301 ]
  %307 = load i32, ptr %306, align 4, !tbaa !21
  %308 = trunc i32 %307 to i8
  store i8 %308, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 7), align 1, !tbaa !31
  br label %405

309:                                              ; preds = %12
  %310 = load i32, ptr %2, align 16
  %311 = icmp ult i32 %310, 41
  br i1 %311, label %316, label %.thread60

.thread60:                                        ; preds = %309
  %312 = getelementptr inbounds i8, ptr %2, i64 8
  %313 = load ptr, ptr %312, align 8
  %314 = getelementptr i8, ptr %313, i64 8
  store ptr %314, ptr %312, align 8
  %315 = load i64, ptr %313, align 8, !tbaa !32
  br label %330

316:                                              ; preds = %309
  %317 = getelementptr inbounds i8, ptr %2, i64 16
  %318 = load ptr, ptr %317, align 16
  %319 = zext nneg i32 %310 to i64
  %320 = getelementptr i8, ptr %318, i64 %319
  %321 = add nuw nsw i32 %310, 8
  store i32 %321, ptr %2, align 16
  %322 = load i64, ptr %320, align 8, !tbaa !32
  %323 = icmp ult i32 %310, 33
  br i1 %323, label %324, label %330

324:                                              ; preds = %316
  %325 = getelementptr inbounds i8, ptr %2, i64 16
  %326 = load ptr, ptr %325, align 16
  %327 = zext nneg i32 %321 to i64
  %328 = getelementptr i8, ptr %326, i64 %327
  %329 = add nuw nsw i32 %310, 16
  store i32 %329, ptr %2, align 16
  br label %335

330:                                              ; preds = %.thread60, %316
  %331 = phi i64 [ %315, %.thread60 ], [ %322, %316 ]
  %332 = getelementptr inbounds i8, ptr %2, i64 8
  %333 = load ptr, ptr %332, align 8
  %334 = getelementptr i8, ptr %333, i64 8
  store ptr %334, ptr %332, align 8
  br label %335

335:                                              ; preds = %330, %324
  %336 = phi i64 [ %322, %324 ], [ %331, %330 ]
  %337 = phi ptr [ %328, %324 ], [ %333, %330 ]
  %338 = load i64, ptr %337, align 8, !tbaa !32
  %spec.store.select4 = call i64 @llvm.umin.i64(i64 %338, i64 2147418112)
  %spec.store.select = call i64 @llvm.smax.i64(i64 %336, i64 0)
  %339 = icmp sgt i64 %336, %spec.store.select4
  %spec.select = select i1 %339, i64 %spec.store.select4, i64 %spec.store.select
  store i64 %spec.store.select4, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 304), align 8, !tbaa !33
  store i64 %spec.select, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 296), align 8, !tbaa !34
  br label %405

340:                                              ; preds = %12
  %341 = load i32, ptr %2, align 16
  %342 = icmp ult i32 %341, 41
  br i1 %342, label %343, label %349

343:                                              ; preds = %340
  %344 = getelementptr inbounds i8, ptr %2, i64 16
  %345 = load ptr, ptr %344, align 16
  %346 = zext nneg i32 %341 to i64
  %347 = getelementptr i8, ptr %345, i64 %346
  %348 = add nuw nsw i32 %341, 8
  store i32 %348, ptr %2, align 16
  br label %353

349:                                              ; preds = %340
  %350 = getelementptr inbounds i8, ptr %2, i64 8
  %351 = load ptr, ptr %350, align 8
  %352 = getelementptr i8, ptr %351, i64 8
  store ptr %352, ptr %350, align 8
  br label %353

353:                                              ; preds = %349, %343
  %354 = phi ptr [ %347, %343 ], [ %351, %349 ]
  %355 = load i32, ptr %354, align 4, !tbaa !21
  store i32 %355, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 336), align 8, !tbaa !35
  br label %405

356:                                              ; preds = %12
  %357 = load i32, ptr %2, align 16
  %358 = icmp ult i32 %357, 41
  br i1 %358, label %359, label %365

359:                                              ; preds = %356
  %360 = getelementptr inbounds i8, ptr %2, i64 16
  %361 = load ptr, ptr %360, align 16
  %362 = zext nneg i32 %357 to i64
  %363 = getelementptr i8, ptr %361, i64 %362
  %364 = add nuw nsw i32 %357, 8
  store i32 %364, ptr %2, align 16
  br label %369

365:                                              ; preds = %356
  %366 = getelementptr inbounds i8, ptr %2, i64 8
  %367 = load ptr, ptr %366, align 8
  %368 = getelementptr i8, ptr %367, i64 8
  store ptr %368, ptr %366, align 8
  br label %369

369:                                              ; preds = %365, %359
  %370 = phi ptr [ %363, %359 ], [ %367, %365 ]
  %371 = load i32, ptr %370, align 4, !tbaa !21
  store i32 %371, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 28), align 4, !tbaa !36
  br label %405

372:                                              ; preds = %12
  %373 = load i32, ptr %2, align 16
  %374 = icmp ult i32 %373, 41
  br i1 %374, label %375, label %381

375:                                              ; preds = %372
  %376 = getelementptr inbounds i8, ptr %2, i64 16
  %377 = load ptr, ptr %376, align 16
  %378 = zext nneg i32 %373 to i64
  %379 = getelementptr i8, ptr %377, i64 %378
  %380 = add nuw nsw i32 %373, 8
  store i32 %380, ptr %2, align 16
  br label %385

381:                                              ; preds = %372
  %382 = getelementptr inbounds i8, ptr %2, i64 8
  %383 = load ptr, ptr %382, align 8
  %384 = getelementptr i8, ptr %383, i64 8
  store ptr %384, ptr %382, align 8
  br label %385

385:                                              ; preds = %381, %375
  %386 = phi ptr [ %379, %375 ], [ %383, %381 ]
  %387 = load i64, ptr %386, align 8, !tbaa !32
  store i64 %387, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 392), align 8, !tbaa !37
  br label %405

388:                                              ; preds = %12
  %389 = load i32, ptr %2, align 16
  %390 = icmp ult i32 %389, 41
  br i1 %390, label %391, label %397

391:                                              ; preds = %388
  %392 = getelementptr inbounds i8, ptr %2, i64 16
  %393 = load ptr, ptr %392, align 16
  %394 = zext nneg i32 %389 to i64
  %395 = getelementptr i8, ptr %393, i64 %394
  %396 = add nuw nsw i32 %389, 8
  store i32 %396, ptr %2, align 16
  br label %401

397:                                              ; preds = %388
  %398 = getelementptr inbounds i8, ptr %2, i64 8
  %399 = load ptr, ptr %398, align 8
  %400 = getelementptr i8, ptr %399, i64 8
  store ptr %400, ptr %398, align 8
  br label %401

401:                                              ; preds = %397, %391
  %402 = phi ptr [ %395, %391 ], [ %399, %397 ]
  %403 = load ptr, ptr %402, align 8, !tbaa !17
  store i32 0, ptr %403, align 4, !tbaa !21
  br label %405

404:                                              ; preds = %12
  br label %405

405:                                              ; preds = %12, %404, %401, %385, %369, %353, %335, %305, %288, %269, %240, %212, %192, %178, %175, %154, %113, %97, %81, %61, %45, %29, %15, %14, %13
  %.025 = phi i32 [ 1, %404 ], [ 0, %401 ], [ 0, %385 ], [ 0, %369 ], [ 0, %353 ], [ 0, %335 ], [ 0, %305 ], [ 0, %288 ], [ 0, %269 ], [ 0, %240 ], [ 0, %212 ], [ 0, %192 ], [ 1, %178 ], [ 0, %12 ], [ 0, %175 ], [ 0, %154 ], [ 0, %113 ], [ 0, %97 ], [ 0, %81 ], [ 0, %61 ], [ 0, %45 ], [ 0, %29 ], [ 0, %15 ], [ 0, %14 ], [ 0, %13 ]
  call void @llvm.va_end.p0(ptr nonnull %2)
  br label %406

406:                                              ; preds = %405, %10
  %.0 = phi i32 [ %11, %10 ], [ %.025, %405 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #5
  ret i32 %.0
}

; 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 340}
!6 = !{!"Sqlite3Config", !7, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7, !8, i64 8, !8, i64 9, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !10, i64 32, !12, i64 96, !13, i64 168, !11, i64 272, !7, i64 280, !7, i64 284, !7, i64 288, !14, i64 296, !14, i64 304, !11, i64 312, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !11, i64 368, !11, i64 376, !11, i64 384, !14, i64 392, !11, i64 400, !7, i64 408, !11, i64 416, !7, i64 424, !7, i64 428, !7, i64 432}
!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, !8, i64 4}
!16 = !{!6, !8, i64 5}
!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 32}
!21 = !{!7, !7, i64 0}
!22 = !{!6, !7, i64 0}
!23 = !{!6, !8, i64 8}
!24 = !{!6, !11, i64 312}
!25 = !{!6, !7, i64 320}
!26 = !{!6, !7, i64 324}
!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 184}
!29 = !{!6, !7, i64 20}
!30 = !{!6, !7, i64 24}
!31 = !{!6, !8, i64 7}
!32 = !{!14, !14, i64 0}
!33 = !{!6, !14, i64 304}
!34 = !{!6, !14, i64 296}
!35 = !{!6, !7, i64 336}
!36 = !{!6, !7, i64 28}
!37 = !{!6, !14, i64 392}


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