; LLVM IR from DanEngelbrecht/longtail :: cmd (main)

; 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.Longtail_LogFieldFmt_Private = type { ptr, ptr, ptr }
%struct.Longtail_LogContextFmt_Private = type { ptr, ptr, i64 }
%struct.Longtail_StorageAPI_EntryProperties = type { ptr, i64, i16, i32 }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }
%struct.Longtail_StorageAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_CompressionRegistryAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_HashRegistryAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_JobAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_VersionIndex = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr }

@.str.53 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [7 x i8], align 1
@__func__.VersionIndex_ls = external hidden unnamed_addr constant [16 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [13 x i8], align 1

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

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

declare void @Longtail_Free(ptr noundef) #1

declare void @Longtail_CallLogger(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #1

declare ptr @Longtail_CreateFullHashRegistry(...) #1

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

declare i32 @Longtail_GetCPUCount(...) #1

declare ptr @Longtail_CreateFullCompressionRegistry(...) #1

declare ptr @Longtail_CreateFSStorageAPI(...) #1

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

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

declare void @Longtail_DisposeAPI(ptr noundef) #1

declare i32 @printf(ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @VersionIndex_ls(ptr noundef %0, ptr noundef %1, i32 noundef %2) #2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca [2 x %struct.Longtail_LogFieldFmt_Private], align 16
  %9 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.Longtail_StorageAPI_EntryProperties, align 8
  %25 = alloca [11 x i8], align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %8) #3
  %26 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %8, i32 0, i32 0
  store ptr @.str.92, ptr %26, align 8, !tbaa !11
  %27 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %8, i32 0, i32 1
  store ptr @.str.53, ptr %27, align 8, !tbaa !13
  %28 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %8, i32 0, i32 2
  %29 = load ptr, ptr %5, align 8, !tbaa !5
  %30 = ptrtoint ptr %29 to i64
  %31 = inttoptr i64 %30 to ptr
  store ptr %31, ptr %28, align 8, !tbaa !14
  %32 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %8, i64 1
  %33 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %32, i32 0, i32 0
  store ptr @.str.96, ptr %33, align 8, !tbaa !11
  %34 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %32, i32 0, i32 1
  store ptr @.str.53, ptr %34, align 8, !tbaa !13
  %35 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %32, i32 0, i32 2
  %36 = load ptr, ptr %6, align 8, !tbaa !5
  %37 = ptrtoint ptr %36 to i64
  %38 = inttoptr i64 %37 to ptr
  store ptr %38, ptr %35, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #3
  %39 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %9, i32 0, i32 0
  store ptr null, ptr %39, align 8, !tbaa !15
  %40 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %9, i32 0, i32 1
  %41 = getelementptr inbounds [2 x %struct.Longtail_LogFieldFmt_Private], ptr %8, i64 0, i64 0
  store ptr %41, ptr %40, align 8, !tbaa !18
  %42 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %9, i32 0, i32 2
  store i64 2, ptr %42, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  store ptr %9, ptr %10, align 8, !tbaa !5
  %43 = load ptr, ptr %10, align 8, !tbaa !5
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_ls, i32 noundef 1687, ptr noundef %43, i32 noundef 0, ptr noundef @.str.70, ptr noundef @.str.71)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  %44 = call i32 (...) @Longtail_GetCPUCount()
  %45 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %44, i32 noundef 0)
  store ptr %45, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  %46 = call ptr (...) @Longtail_CreateFullHashRegistry()
  store ptr %46, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  %47 = call ptr (...) @Longtail_CreateFullCompressionRegistry()
  store ptr %47, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  %48 = call ptr (...) @Longtail_CreateFSStorageAPI()
  store ptr %48, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %49 = call ptr (...) @Longtail_CreateInMemStorageAPI()
  store ptr %49, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  %50 = load ptr, ptr %11, align 8, !tbaa !5
  %51 = load ptr, ptr %15, align 8, !tbaa !5
  %52 = load i32, ptr %7, align 4, !tbaa !9
  %53 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %50, ptr noundef %51, ptr noundef @.str.97, ptr noundef null, i32 noundef %52)
  store ptr %53, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  %54 = load ptr, ptr %14, align 8, !tbaa !5
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = call i32 @Longtail_ReadVersionIndex(ptr noundef %54, ptr noundef %55, ptr noundef %17)
  store i32 %56, ptr %18, align 4, !tbaa !9
  %57 = load i32, ptr %18, align 4, !tbaa !9
  %58 = icmp ne i32 %57, 0
  br i1 %58, label %59, label %100

59:                                               ; preds = %3
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  %61 = load ptr, ptr %5, align 8, !tbaa !5
  %62 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_ls, i32 noundef 1706, ptr noundef %60, i32 noundef 3, ptr noundef @.str.72, ptr noundef %61, i32 noundef %62)
  %63 = load ptr, ptr %16, align 8, !tbaa !5
  %64 = icmp ne ptr %63, null
  br i1 %64, label %65, label %68

65:                                               ; preds = %59
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %66, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %67)
  br label %68

68:                                               ; preds = %65, %59
  %69 = load ptr, ptr %15, align 8, !tbaa !5
  %70 = icmp ne ptr %69, null
  br i1 %70, label %71, label %74

71:                                               ; preds = %68
  %72 = load ptr, ptr %15, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %72, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %73)
  br label %74

74:                                               ; preds = %71, %68
  %75 = load ptr, ptr %14, align 8, !tbaa !5
  %76 = icmp ne ptr %75, null
  br i1 %76, label %77, label %80

77:                                               ; preds = %74
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %78, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %79)
  br label %80

80:                                               ; preds = %77, %74
  %81 = load ptr, ptr %13, align 8, !tbaa !5
  %82 = icmp ne ptr %81, null
  br i1 %82, label %83, label %86

83:                                               ; preds = %80
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %84, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %85)
  br label %86

86:                                               ; preds = %83, %80
  %87 = load ptr, ptr %12, align 8, !tbaa !5
  %88 = icmp ne ptr %87, null
  br i1 %88, label %89, label %92

89:                                               ; preds = %86
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %90, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %91)
  br label %92

92:                                               ; preds = %89, %86
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %98

95:                                               ; preds = %92
  %96 = load ptr, ptr %11, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %96, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %97)
  br label %98

98:                                               ; preds = %95, %92
  %99 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %99, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %453

100:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %101, i32 0, i32 1
  %103 = load ptr, ptr %102, align 8, !tbaa !20
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = load ptr, ptr %17, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %105, i32 0, i32 1
  %107 = load ptr, ptr %106, align 8, !tbaa !23
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = call i32 %103(ptr noundef %104, i32 noundef %108, ptr noundef %20)
  store i32 %109, ptr %18, align 4, !tbaa !9
  %110 = load i32, ptr %18, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %153

112:                                              ; preds = %100
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = load ptr, ptr %5, align 8, !tbaa !5
  %115 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_ls, i32 noundef 1720, ptr noundef %113, i32 noundef 3, ptr noundef @.str.93, ptr noundef %114, i32 noundef %115)
  %116 = load ptr, ptr %16, align 8, !tbaa !5
  %117 = icmp ne ptr %116, null
  br i1 %117, label %118, label %121

118:                                              ; preds = %112
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %119, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %120)
  br label %121

121:                                              ; preds = %118, %112
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = icmp ne ptr %122, null
  br i1 %123, label %124, label %127

124:                                              ; preds = %121
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %125, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %126)
  br label %127

127:                                              ; preds = %124, %121
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = icmp ne ptr %128, null
  br i1 %129, label %130, label %133

130:                                              ; preds = %127
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %131, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %132)
  br label %133

133:                                              ; preds = %130, %127
  %134 = load ptr, ptr %13, align 8, !tbaa !5
  %135 = icmp ne ptr %134, null
  br i1 %135, label %136, label %139

136:                                              ; preds = %133
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %137, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %138)
  br label %139

139:                                              ; preds = %136, %133
  %140 = load ptr, ptr %12, align 8, !tbaa !5
  %141 = icmp ne ptr %140, null
  br i1 %141, label %142, label %145

142:                                              ; preds = %139
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %143, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %144)
  br label %145

145:                                              ; preds = %142, %139
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = icmp ne ptr %146, null
  br i1 %147, label %148, label %151

148:                                              ; preds = %145
  %149 = load ptr, ptr %11, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %149, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %150)
  br label %151

151:                                              ; preds = %148, %145
  %152 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %152, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %452

153:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load ptr, ptr %17, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %155, i32 0, i32 4
  %157 = load ptr, ptr %156, align 8, !tbaa !25
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = load ptr, ptr %17, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %159, i32 0, i32 12
  %161 = load ptr, ptr %160, align 8, !tbaa !26
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %162, i32 0, i32 13
  %164 = load ptr, ptr %163, align 8, !tbaa !27
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %165, i32 0, i32 14
  %167 = load ptr, ptr %166, align 8, !tbaa !28
  %168 = call i32 @Longtail_CreateStoreIndex(ptr noundef %154, i32 noundef %158, ptr noundef %161, ptr noundef %164, ptr noundef %167, i32 noundef 1073741824, i32 noundef 1024, ptr noundef %21)
  store i32 %168, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = load ptr, ptr %11, align 8, !tbaa !5
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load ptr, ptr %17, align 8, !tbaa !5
  %174 = call ptr @Longtail_CreateBlockStoreStorageAPI(ptr noundef %169, ptr noundef %170, ptr noundef %171, ptr noundef %172, ptr noundef %173)
  store ptr %174, ptr %22, align 8, !tbaa !5
  %175 = load i32, ptr %18, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %218

177:                                              ; preds = %153
  %178 = load ptr, ptr %10, align 8, !tbaa !5
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_ls, i32 noundef 1750, ptr noundef %178, i32 noundef 3, ptr noundef @.str.98, ptr noundef %179, i32 noundef %180)
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  %182 = icmp ne ptr %181, null
  br i1 %182, label %183, label %186

183:                                              ; preds = %177
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %184, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %185)
  br label %186

186:                                              ; preds = %183, %177
  %187 = load ptr, ptr %16, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %189, label %192

189:                                              ; preds = %186
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %190, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %191)
  br label %192

192:                                              ; preds = %189, %186
  %193 = load ptr, ptr %15, align 8, !tbaa !5
  %194 = icmp ne ptr %193, null
  br i1 %194, label %195, label %198

195:                                              ; preds = %192
  %196 = load ptr, ptr %15, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %196, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %197)
  br label %198

198:                                              ; preds = %195, %192
  %199 = load ptr, ptr %13, align 8, !tbaa !5
  %200 = icmp ne ptr %199, null
  br i1 %200, label %201, label %204

201:                                              ; preds = %198
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %202, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %203)
  br label %204

204:                                              ; preds = %201, %198
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = icmp ne ptr %205, null
  br i1 %206, label %207, label %210

207:                                              ; preds = %204
  %208 = load ptr, ptr %12, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %208, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %209)
  br label %210

210:                                              ; preds = %207, %204
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = icmp ne ptr %211, null
  br i1 %212, label %213, label %216

213:                                              ; preds = %210
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %214, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %215)
  br label %216

216:                                              ; preds = %213, %210
  %217 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %217, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %451

218:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  %219 = load ptr, ptr %22, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %219, i32 0, i32 17
  %221 = load ptr, ptr %220, align 8, !tbaa !29
  %222 = load ptr, ptr %22, align 8, !tbaa !5
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 0
  %225 = load i8, ptr %224, align 1, !tbaa !31
  %226 = sext i8 %225 to i32
  %227 = icmp eq i32 %226, 46
  br i1 %227, label %228, label %231

228:                                              ; preds = %218
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds i8, ptr %229, i64 1
  br label %233

231:                                              ; preds = %218
  %232 = load ptr, ptr %6, align 8, !tbaa !5
  br label %233

233:                                              ; preds = %231, %228
  %234 = phi ptr [ %230, %228 ], [ %232, %231 ]
  %235 = call i32 %221(ptr noundef %222, ptr noundef %234, ptr noundef %23)
  store i32 %235, ptr %18, align 4, !tbaa !9
  %236 = load i32, ptr %18, align 4, !tbaa !9
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %238, label %286

238:                                              ; preds = %233
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = load ptr, ptr %5, align 8, !tbaa !5
  %241 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_ls, i32 noundef 1764, ptr noundef %239, i32 noundef 3, ptr noundef @.str.99, ptr noundef %240, i32 noundef %241)
  %242 = load ptr, ptr %22, align 8, !tbaa !5
  %243 = icmp ne ptr %242, null
  br i1 %243, label %244, label %247

244:                                              ; preds = %238
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %245, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %246)
  br label %247

247:                                              ; preds = %244, %238
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %248)
  %249 = load ptr, ptr %16, align 8, !tbaa !5
  %250 = icmp ne ptr %249, null
  br i1 %250, label %251, label %254

251:                                              ; preds = %247
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %252, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %253)
  br label %254

254:                                              ; preds = %251, %247
  %255 = load ptr, ptr %15, align 8, !tbaa !5
  %256 = icmp ne ptr %255, null
  br i1 %256, label %257, label %260

257:                                              ; preds = %254
  %258 = load ptr, ptr %15, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %258, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %259)
  br label %260

260:                                              ; preds = %257, %254
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  %262 = icmp ne ptr %261, null
  br i1 %262, label %263, label %266

263:                                              ; preds = %260
  %264 = load ptr, ptr %14, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %264, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %265)
  br label %266

266:                                              ; preds = %263, %260
  %267 = load ptr, ptr %13, align 8, !tbaa !5
  %268 = icmp ne ptr %267, null
  br i1 %268, label %269, label %272

269:                                              ; preds = %266
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %270, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %271)
  br label %272

272:                                              ; preds = %269, %266
  %273 = load ptr, ptr %12, align 8, !tbaa !5
  %274 = icmp ne ptr %273, null
  br i1 %274, label %275, label %278

275:                                              ; preds = %272
  %276 = load ptr, ptr %12, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %276, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %277)
  br label %278

278:                                              ; preds = %275, %272
  %279 = load ptr, ptr %11, align 8, !tbaa !5
  %280 = icmp ne ptr %279, null
  br i1 %280, label %281, label %284

281:                                              ; preds = %278
  %282 = load ptr, ptr %11, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %282, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %283)
  br label %284

284:                                              ; preds = %281, %278
  %285 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %285, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %450

286:                                              ; preds = %233
  br label %287

287:                                              ; preds = %393, %286
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #3
  %288 = load ptr, ptr %22, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %288, i32 0, i32 20
  %290 = load ptr, ptr %289, align 8, !tbaa !32
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = load ptr, ptr %23, align 8, !tbaa !5
  %293 = call i32 %290(ptr noundef %291, ptr noundef %292, ptr noundef %24)
  store i32 %293, ptr %18, align 4, !tbaa !9
  %294 = load i32, ptr %18, align 4, !tbaa !9
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %392, label %296

296:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 11, ptr %25) #3
  %297 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 3
  %298 = load i32, ptr %297, align 4, !tbaa !33
  %299 = icmp ne i32 %298, 0
  %300 = zext i1 %299 to i64
  %301 = select i1 %299, i32 100, i32 45
  %302 = trunc i32 %301 to i8
  %303 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 0
  store i8 %302, ptr %303, align 1, !tbaa !31
  %304 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %305 = load i16, ptr %304, align 8, !tbaa !36
  %306 = zext i16 %305 to i32
  %307 = and i32 %306, 256
  %308 = icmp ne i32 %307, 0
  %309 = zext i1 %308 to i64
  %310 = select i1 %308, i32 114, i32 45
  %311 = trunc i32 %310 to i8
  %312 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 1
  store i8 %311, ptr %312, align 1, !tbaa !31
  %313 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %314 = load i16, ptr %313, align 8, !tbaa !36
  %315 = zext i16 %314 to i32
  %316 = and i32 %315, 128
  %317 = icmp ne i32 %316, 0
  %318 = zext i1 %317 to i64
  %319 = select i1 %317, i32 119, i32 45
  %320 = trunc i32 %319 to i8
  %321 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 2
  store i8 %320, ptr %321, align 1, !tbaa !31
  %322 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %323 = load i16, ptr %322, align 8, !tbaa !36
  %324 = zext i16 %323 to i32
  %325 = and i32 %324, 64
  %326 = icmp ne i32 %325, 0
  %327 = zext i1 %326 to i64
  %328 = select i1 %326, i32 120, i32 45
  %329 = trunc i32 %328 to i8
  %330 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 3
  store i8 %329, ptr %330, align 1, !tbaa !31
  %331 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %332 = load i16, ptr %331, align 8, !tbaa !36
  %333 = zext i16 %332 to i32
  %334 = and i32 %333, 32
  %335 = icmp ne i32 %334, 0
  %336 = zext i1 %335 to i64
  %337 = select i1 %335, i32 114, i32 45
  %338 = trunc i32 %337 to i8
  %339 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 4
  store i8 %338, ptr %339, align 1, !tbaa !31
  %340 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %341 = load i16, ptr %340, align 8, !tbaa !36
  %342 = zext i16 %341 to i32
  %343 = and i32 %342, 16
  %344 = icmp ne i32 %343, 0
  %345 = zext i1 %344 to i64
  %346 = select i1 %344, i32 119, i32 45
  %347 = trunc i32 %346 to i8
  %348 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 5
  store i8 %347, ptr %348, align 1, !tbaa !31
  %349 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %350 = load i16, ptr %349, align 8, !tbaa !36
  %351 = zext i16 %350 to i32
  %352 = and i32 %351, 8
  %353 = icmp ne i32 %352, 0
  %354 = zext i1 %353 to i64
  %355 = select i1 %353, i32 120, i32 45
  %356 = trunc i32 %355 to i8
  %357 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 6
  store i8 %356, ptr %357, align 1, !tbaa !31
  %358 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %359 = load i16, ptr %358, align 8, !tbaa !36
  %360 = zext i16 %359 to i32
  %361 = and i32 %360, 4
  %362 = icmp ne i32 %361, 0
  %363 = zext i1 %362 to i64
  %364 = select i1 %362, i32 114, i32 45
  %365 = trunc i32 %364 to i8
  %366 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 7
  store i8 %365, ptr %366, align 1, !tbaa !31
  %367 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %368 = load i16, ptr %367, align 8, !tbaa !36
  %369 = zext i16 %368 to i32
  %370 = and i32 %369, 2
  %371 = icmp ne i32 %370, 0
  %372 = zext i1 %371 to i64
  %373 = select i1 %371, i32 119, i32 45
  %374 = trunc i32 %373 to i8
  %375 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 8
  store i8 %374, ptr %375, align 1, !tbaa !31
  %376 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 2
  %377 = load i16, ptr %376, align 8, !tbaa !36
  %378 = zext i16 %377 to i32
  %379 = and i32 %378, 1
  %380 = icmp ne i32 %379, 0
  %381 = zext i1 %380 to i64
  %382 = select i1 %380, i32 120, i32 45
  %383 = trunc i32 %382 to i8
  %384 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 9
  store i8 %383, ptr %384, align 1, !tbaa !31
  %385 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 10
  store i8 0, ptr %385, align 1, !tbaa !31
  %386 = getelementptr inbounds [11 x i8], ptr %25, i64 0, i64 0
  %387 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 1
  %388 = load i64, ptr %387, align 8, !tbaa !37
  %389 = getelementptr inbounds %struct.Longtail_StorageAPI_EntryProperties, ptr %24, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !38
  %391 = call i32 (ptr, ...) @printf(ptr noundef @.str.100, ptr noundef %386, i64 noundef %388, ptr noundef %390)
  call void @llvm.lifetime.end.p0(i64 11, ptr %25) #3
  br label %392

392:                                              ; preds = %296, %287
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #3
  br label %393

393:                                              ; preds = %392
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %394, i32 0, i32 18
  %396 = load ptr, ptr %395, align 8, !tbaa !39
  %397 = load ptr, ptr %22, align 8, !tbaa !5
  %398 = load ptr, ptr %23, align 8, !tbaa !5
  %399 = call i32 %396(ptr noundef %397, ptr noundef %398)
  %400 = icmp eq i32 %399, 0
  br i1 %400, label %287, label %401, !llvm.loop !40

401:                                              ; preds = %393
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %402, i32 0, i32 19
  %404 = load ptr, ptr %403, align 8, !tbaa !42
  %405 = load ptr, ptr %22, align 8, !tbaa !5
  %406 = load ptr, ptr %23, align 8, !tbaa !5
  call void %404(ptr noundef %405, ptr noundef %406)
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = icmp ne ptr %407, null
  br i1 %408, label %409, label %412

409:                                              ; preds = %401
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %410, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %411)
  br label %412

412:                                              ; preds = %409, %401
  %413 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %413)
  %414 = load ptr, ptr %16, align 8, !tbaa !5
  %415 = icmp ne ptr %414, null
  br i1 %415, label %416, label %419

416:                                              ; preds = %412
  %417 = load ptr, ptr %16, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %417, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %418)
  br label %419

419:                                              ; preds = %416, %412
  %420 = load ptr, ptr %15, align 8, !tbaa !5
  %421 = icmp ne ptr %420, null
  br i1 %421, label %422, label %425

422:                                              ; preds = %419
  %423 = load ptr, ptr %15, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %423, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %424)
  br label %425

425:                                              ; preds = %422, %419
  %426 = load ptr, ptr %14, align 8, !tbaa !5
  %427 = icmp ne ptr %426, null
  br i1 %427, label %428, label %431

428:                                              ; preds = %425
  %429 = load ptr, ptr %14, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %429, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %430)
  br label %431

431:                                              ; preds = %428, %425
  %432 = load ptr, ptr %13, align 8, !tbaa !5
  %433 = icmp ne ptr %432, null
  br i1 %433, label %434, label %437

434:                                              ; preds = %431
  %435 = load ptr, ptr %13, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %435, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %436)
  br label %437

437:                                              ; preds = %434, %431
  %438 = load ptr, ptr %12, align 8, !tbaa !5
  %439 = icmp ne ptr %438, null
  br i1 %439, label %440, label %443

440:                                              ; preds = %437
  %441 = load ptr, ptr %12, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %441, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %442)
  br label %443

443:                                              ; preds = %440, %437
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  %445 = icmp ne ptr %444, null
  br i1 %445, label %446, label %449

446:                                              ; preds = %443
  %447 = load ptr, ptr %11, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %447, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %448)
  br label %449

449:                                              ; preds = %446, %443
  store i32 0, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %450

450:                                              ; preds = %449, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  br label %451

451:                                              ; preds = %450, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  br label %452

452:                                              ; preds = %451, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  br label %453

453:                                              ; preds = %452, %98
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 48, ptr %8) #3
  %454 = load i32, ptr %4, align 4
  ret i32 %454
}

declare ptr @Longtail_CreateInMemStorageAPI(...) #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"Longtail_LogFieldFmt_Private", !6, i64 0, !6, i64 8, !6, i64 16}
!13 = !{!12, !6, i64 8}
!14 = !{!12, !6, i64 16}
!15 = !{!16, !6, i64 0}
!16 = !{!"Longtail_LogContextFmt_Private", !6, i64 0, !6, i64 8, !17, i64 16}
!17 = !{!"long", !7, i64 0}
!18 = !{!16, !6, i64 8}
!19 = !{!16, !17, i64 16}
!20 = !{!21, !6, i64 8}
!21 = !{!"Longtail_HashRegistryAPI", !22, i64 0, !6, i64 8}
!22 = !{!"Longtail_API", !6, i64 0}
!23 = !{!24, !6, i64 8}
!24 = !{!"Longtail_VersionIndex", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !6, i64 136, !6, i64 144}
!25 = !{!24, !6, i64 32}
!26 = !{!24, !6, i64 96}
!27 = !{!24, !6, i64 104}
!28 = !{!24, !6, i64 112}
!29 = !{!30, !6, i64 136}
!30 = !{!"Longtail_StorageAPI", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!31 = !{!7, !7, i64 0}
!32 = !{!30, !6, i64 160}
!33 = !{!34, !10, i64 20}
!34 = !{!"Longtail_StorageAPI_EntryProperties", !6, i64 0, !17, i64 8, !35, i64 16, !10, i64 20}
!35 = !{!"short", !7, i64 0}
!36 = !{!34, !35, i64 16}
!37 = !{!34, !17, i64 8}
!38 = !{!34, !6, i64 0}
!39 = !{!30, !6, i64 144}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!30, !6, i64 152}


; 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.Longtail_LogFieldFmt_Private = type { ptr, ptr, ptr }
%struct.Longtail_LogContextFmt_Private = type { ptr, ptr, i64 }
%struct.Longtail_StorageAPI_EntryProperties = type { ptr, i64, i16, i32 }

@.str.53 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [7 x i8], align 1
@__func__.VersionIndex_ls = external hidden unnamed_addr constant [16 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [13 x i8], align 1

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

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

declare void @Longtail_Free(ptr noundef) local_unnamed_addr #1

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

declare ptr @Longtail_CreateFullHashRegistry(...) local_unnamed_addr #1

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

declare i32 @Longtail_GetCPUCount(...) local_unnamed_addr #1

declare ptr @Longtail_CreateFullCompressionRegistry(...) local_unnamed_addr #1

declare ptr @Longtail_CreateFSStorageAPI(...) local_unnamed_addr #1

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

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

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local i32 @VersionIndex_ls(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #3 {
  %4 = alloca [2 x %struct.Longtail_LogFieldFmt_Private], align 16
  %5 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %struct.Longtail_StorageAPI_EntryProperties, align 8
  %11 = alloca [11 x i8], align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #4
  store ptr @.str.92, ptr %4, align 16, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %4, i64 8
  store ptr @.str.53, ptr %12, align 8, !tbaa !10
  %13 = getelementptr inbounds i8, ptr %4, i64 16
  store ptr %0, ptr %13, align 16, !tbaa !11
  %14 = getelementptr inbounds i8, ptr %4, i64 24
  store ptr @.str.96, ptr %14, align 8, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %4, i64 32
  store ptr @.str.53, ptr %15, align 16, !tbaa !10
  %16 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr %1, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #4
  store ptr null, ptr %5, align 8, !tbaa !12
  %17 = getelementptr inbounds i8, ptr %5, i64 8
  store ptr %4, ptr %17, align 8, !tbaa !15
  %18 = getelementptr inbounds i8, ptr %5, i64 16
  store i64 2, ptr %18, align 8, !tbaa !16
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_ls, i32 noundef 1687, ptr noundef nonnull %5, i32 noundef 0, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.71) #4
  %19 = call i32 (...) @Longtail_GetCPUCount() #4
  %20 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %19, i32 noundef 0) #4
  %21 = call ptr (...) @Longtail_CreateFullHashRegistry() #4
  %22 = call ptr (...) @Longtail_CreateFullCompressionRegistry() #4
  %23 = call ptr (...) @Longtail_CreateFSStorageAPI() #4
  %24 = call ptr (...) @Longtail_CreateInMemStorageAPI() #4
  %25 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %20, ptr noundef %24, ptr noundef nonnull @.str.97, ptr noundef null, i32 noundef %2) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #4
  store ptr null, ptr %6, align 8, !tbaa !17
  %26 = call i32 @Longtail_ReadVersionIndex(ptr noundef %23, ptr noundef %0, ptr noundef nonnull %6) #4
  %.not = icmp eq i32 %26, 0
  br i1 %.not, label %39, label %27

27:                                               ; preds = %3
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_ls, i32 noundef 1706, ptr noundef nonnull %5, i32 noundef 3, ptr noundef nonnull @.str.72, ptr noundef %0, i32 noundef %26) #4
  %.not183 = icmp eq ptr %25, null
  br i1 %.not183, label %29, label %28

28:                                               ; preds = %27
  call void @Longtail_DisposeAPI(ptr noundef nonnull %25) #4
  br label %29

29:                                               ; preds = %28, %27
  %.not184 = icmp eq ptr %24, null
  br i1 %.not184, label %31, label %30

30:                                               ; preds = %29
  call void @Longtail_DisposeAPI(ptr noundef nonnull %24) #4
  br label %31

31:                                               ; preds = %30, %29
  %.not185 = icmp eq ptr %23, null
  br i1 %.not185, label %33, label %32

32:                                               ; preds = %31
  call void @Longtail_DisposeAPI(ptr noundef nonnull %23) #4
  br label %33

33:                                               ; preds = %32, %31
  %.not186 = icmp eq ptr %22, null
  br i1 %.not186, label %35, label %34

34:                                               ; preds = %33
  call void @Longtail_DisposeAPI(ptr noundef nonnull %22) #4
  br label %35

35:                                               ; preds = %34, %33
  %.not187 = icmp eq ptr %21, null
  br i1 %.not187, label %37, label %36

36:                                               ; preds = %35
  call void @Longtail_DisposeAPI(ptr noundef nonnull %21) #4
  br label %37

37:                                               ; preds = %36, %35
  %.not188 = icmp eq ptr %20, null
  br i1 %.not188, label %162, label %38

38:                                               ; preds = %37
  call void @Longtail_DisposeAPI(ptr noundef nonnull %20) #4
  br label %162

39:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  %40 = getelementptr inbounds i8, ptr %21, i64 8
  %41 = load ptr, ptr %40, align 8, !tbaa !18
  %42 = load ptr, ptr %6, align 8, !tbaa !17
  %43 = getelementptr inbounds i8, ptr %42, i64 8
  %44 = load ptr, ptr %43, align 8, !tbaa !21
  %45 = load i32, ptr %44, align 4, !tbaa !24
  %46 = call i32 %41(ptr noundef %21, i32 noundef %45, ptr noundef nonnull %7) #4
  %.not143 = icmp eq i32 %46, 0
  br i1 %.not143, label %57, label %47

47:                                               ; preds = %39
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_ls, i32 noundef 1720, ptr noundef nonnull %5, i32 noundef 3, ptr noundef nonnull @.str.93, ptr noundef %0, i32 noundef %46) #4
  %.not177 = icmp eq ptr %25, null
  br i1 %.not177, label %49, label %48

48:                                               ; preds = %47
  call void @Longtail_DisposeAPI(ptr noundef nonnull %25) #4
  br label %49

49:                                               ; preds = %48, %47
  %.not178 = icmp eq ptr %24, null
  br i1 %.not178, label %51, label %50

50:                                               ; preds = %49
  call void @Longtail_DisposeAPI(ptr noundef nonnull %24) #4
  br label %51

51:                                               ; preds = %50, %49
  %.not179 = icmp eq ptr %23, null
  br i1 %.not179, label %53, label %52

52:                                               ; preds = %51
  call void @Longtail_DisposeAPI(ptr noundef nonnull %23) #4
  br label %53

53:                                               ; preds = %52, %51
  %.not180 = icmp eq ptr %22, null
  br i1 %.not180, label %55, label %54

54:                                               ; preds = %53
  call void @Longtail_DisposeAPI(ptr noundef nonnull %22) #4
  br label %55

55:                                               ; preds = %54, %53
  call void @Longtail_DisposeAPI(ptr noundef nonnull %21) #4
  %.not182 = icmp eq ptr %20, null
  br i1 %.not182, label %161, label %56

56:                                               ; preds = %55
  call void @Longtail_DisposeAPI(ptr noundef nonnull %20) #4
  br label %161

57:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  %58 = load ptr, ptr %7, align 8, !tbaa !17
  %59 = load ptr, ptr %6, align 8, !tbaa !17
  %60 = getelementptr inbounds i8, ptr %59, i64 32
  %61 = load ptr, ptr %60, align 8, !tbaa !25
  %62 = load i32, ptr %61, align 4, !tbaa !24
  %63 = getelementptr inbounds i8, ptr %59, i64 96
  %64 = load ptr, ptr %63, align 8, !tbaa !26
  %65 = getelementptr inbounds i8, ptr %59, i64 104
  %66 = load ptr, ptr %65, align 8, !tbaa !27
  %67 = getelementptr inbounds i8, ptr %59, i64 112
  %68 = load ptr, ptr %67, align 8, !tbaa !28
  %69 = call i32 @Longtail_CreateStoreIndex(ptr noundef %58, i32 noundef %62, ptr noundef %64, ptr noundef %66, ptr noundef %68, i32 noundef 1073741824, i32 noundef 1024, ptr noundef nonnull %8) #4
  %70 = load ptr, ptr %7, align 8, !tbaa !17
  %71 = load ptr, ptr %8, align 8, !tbaa !17
  %72 = load ptr, ptr %6, align 8, !tbaa !17
  %73 = call ptr @Longtail_CreateBlockStoreStorageAPI(ptr noundef %70, ptr noundef %20, ptr noundef %25, ptr noundef %71, ptr noundef %72) #4
  %.not144 = icmp eq i32 %69, 0
  br i1 %.not144, label %84, label %74

74:                                               ; preds = %57
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_ls, i32 noundef 1750, ptr noundef nonnull %5, i32 noundef 3, ptr noundef nonnull @.str.98, ptr noundef %0, i32 noundef %69) #4
  %.not171 = icmp eq ptr %23, null
  br i1 %.not171, label %76, label %75

75:                                               ; preds = %74
  call void @Longtail_DisposeAPI(ptr noundef nonnull %23) #4
  br label %76

76:                                               ; preds = %75, %74
  %.not172 = icmp eq ptr %25, null
  br i1 %.not172, label %78, label %77

77:                                               ; preds = %76
  call void @Longtail_DisposeAPI(ptr noundef nonnull %25) #4
  br label %78

78:                                               ; preds = %77, %76
  %.not173 = icmp eq ptr %24, null
  br i1 %.not173, label %80, label %79

79:                                               ; preds = %78
  call void @Longtail_DisposeAPI(ptr noundef nonnull %24) #4
  br label %80

80:                                               ; preds = %79, %78
  %.not174 = icmp eq ptr %22, null
  br i1 %.not174, label %82, label %81

81:                                               ; preds = %80
  call void @Longtail_DisposeAPI(ptr noundef nonnull %22) #4
  br label %82

82:                                               ; preds = %81, %80
  call void @Longtail_DisposeAPI(ptr noundef nonnull %21) #4
  %.not176 = icmp eq ptr %20, null
  br i1 %.not176, label %160, label %83

83:                                               ; preds = %82
  call void @Longtail_DisposeAPI(ptr noundef nonnull %20) #4
  br label %160

84:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  %85 = getelementptr inbounds i8, ptr %73, i64 136
  %86 = load ptr, ptr %85, align 8, !tbaa !29
  %87 = load i8, ptr %1, align 1, !tbaa !31
  %88 = icmp eq i8 %87, 46
  %.idx = zext i1 %88 to i64
  %89 = getelementptr inbounds i8, ptr %1, i64 %.idx
  %90 = call i32 %86(ptr noundef %73, ptr noundef nonnull %89, ptr noundef nonnull %9) #4
  %.not145 = icmp eq i32 %90, 0
  br i1 %.not145, label %.preheader, label %99

.preheader:                                       ; preds = %84
  %91 = getelementptr inbounds i8, ptr %73, i64 160
  %92 = getelementptr inbounds i8, ptr %10, i64 20
  %93 = getelementptr inbounds i8, ptr %10, i64 16
  %94 = getelementptr inbounds i8, ptr %11, i64 8
  %95 = getelementptr inbounds i8, ptr %11, i64 9
  %96 = getelementptr inbounds i8, ptr %11, i64 10
  %97 = getelementptr inbounds i8, ptr %10, i64 8
  %98 = getelementptr inbounds i8, ptr %73, i64 144
  br label %109

99:                                               ; preds = %84
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_ls, i32 noundef 1764, ptr noundef nonnull %5, i32 noundef 3, ptr noundef nonnull @.str.99, ptr noundef %0, i32 noundef %90) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %73) #4
  %100 = load ptr, ptr %8, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %100) #4
  %.not165 = icmp eq ptr %25, null
  br i1 %.not165, label %102, label %101

101:                                              ; preds = %99
  call void @Longtail_DisposeAPI(ptr noundef nonnull %25) #4
  br label %102

102:                                              ; preds = %101, %99
  %.not166 = icmp eq ptr %24, null
  br i1 %.not166, label %104, label %103

103:                                              ; preds = %102
  call void @Longtail_DisposeAPI(ptr noundef nonnull %24) #4
  br label %104

104:                                              ; preds = %103, %102
  %.not167 = icmp eq ptr %23, null
  br i1 %.not167, label %106, label %105

105:                                              ; preds = %104
  call void @Longtail_DisposeAPI(ptr noundef nonnull %23) #4
  br label %106

106:                                              ; preds = %105, %104
  %.not168 = icmp eq ptr %22, null
  br i1 %.not168, label %108, label %107

107:                                              ; preds = %106
  call void @Longtail_DisposeAPI(ptr noundef nonnull %22) #4
  br label %108

108:                                              ; preds = %107, %106
  call void @Longtail_DisposeAPI(ptr noundef nonnull %21) #4
  %.not170 = icmp eq ptr %20, null
  br i1 %.not170, label %159, label %.sink.split

109:                                              ; preds = %.preheader, %139
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #4
  %110 = load ptr, ptr %91, align 8, !tbaa !32
  %111 = load ptr, ptr %9, align 8, !tbaa !17
  %112 = call i32 %110(ptr noundef nonnull %73, ptr noundef %111, ptr noundef nonnull %10) #4
  %.not146 = icmp eq i32 %112, 0
  br i1 %.not146, label %113, label %139

113:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %11) #4
  %114 = load i32, ptr %92, align 4, !tbaa !33
  %.not147 = icmp eq i32 %114, 0
  %115 = load i16, ptr %93, align 8, !tbaa !36
  %116 = insertelement <4 x i16> poison, i16 %115, i64 0
  %117 = shufflevector <4 x i16> %116, <4 x i16> poison, <4 x i32> zeroinitializer
  %118 = and <4 x i16> %117, <i16 256, i16 128, i16 64, i16 32>
  %119 = icmp eq <4 x i16> %118, zeroinitializer
  %120 = and i16 %115, 16
  %.not152 = icmp eq i16 %120, 0
  %121 = insertelement <2 x i16> poison, i16 %115, i64 0
  %122 = shufflevector <2 x i16> %121, <2 x i16> poison, <2 x i32> zeroinitializer
  %123 = and <2 x i16> %122, <i16 8, i16 4>
  %124 = icmp eq <2 x i16> %123, zeroinitializer
  %125 = insertelement <8 x i1> poison, i1 %.not147, i64 0
  %126 = shufflevector <4 x i1> %119, <4 x i1> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
  %127 = shufflevector <8 x i1> %125, <8 x i1> %126, <8 x i32> <i32 0, i32 8, i32 9, i32 10, i32 11, i32 poison, i32 poison, i32 poison>
  %128 = insertelement <8 x i1> %127, i1 %.not152, i64 5
  %129 = shufflevector <2 x i1> %124, <2 x i1> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %130 = shufflevector <8 x i1> %128, <8 x i1> %129, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
  %131 = select <8 x i1> %130, <8 x i8> <i8 45, i8 45, i8 45, i8 45, i8 45, i8 45, i8 45, i8 45>, <8 x i8> <i8 100, i8 114, i8 119, i8 120, i8 114, i8 119, i8 120, i8 114>
  store <8 x i8> %131, ptr %11, align 8, !tbaa !31
  %132 = and i16 %115, 2
  %.not155 = icmp eq i16 %132, 0
  %133 = select i1 %.not155, i8 45, i8 119
  store i8 %133, ptr %94, align 8, !tbaa !31
  %134 = and i16 %115, 1
  %.not156 = icmp eq i16 %134, 0
  %135 = select i1 %.not156, i8 45, i8 120
  store i8 %135, ptr %95, align 1, !tbaa !31
  store i8 0, ptr %96, align 2, !tbaa !31
  %136 = load i64, ptr %97, align 8, !tbaa !37
  %137 = load ptr, ptr %10, align 8, !tbaa !38
  %138 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.100, ptr noundef nonnull %11, i64 noundef %136, ptr noundef %137)
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %11) #4
  br label %139

139:                                              ; preds = %113, %109
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #4
  %140 = load ptr, ptr %98, align 8, !tbaa !39
  %141 = load ptr, ptr %9, align 8, !tbaa !17
  %142 = call i32 %140(ptr noundef nonnull %73, ptr noundef %141) #4
  %143 = icmp eq i32 %142, 0
  br i1 %143, label %109, label %144, !llvm.loop !40

144:                                              ; preds = %139
  %145 = getelementptr inbounds i8, ptr %73, i64 152
  %146 = load ptr, ptr %145, align 8, !tbaa !42
  %147 = load ptr, ptr %9, align 8, !tbaa !17
  call void %146(ptr noundef nonnull %73, ptr noundef %147) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %73) #4
  %148 = load ptr, ptr %8, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %148) #4
  %.not158 = icmp eq ptr %25, null
  br i1 %.not158, label %150, label %149

149:                                              ; preds = %144
  call void @Longtail_DisposeAPI(ptr noundef nonnull %25) #4
  br label %150

150:                                              ; preds = %149, %144
  %.not159 = icmp eq ptr %24, null
  br i1 %.not159, label %152, label %151

151:                                              ; preds = %150
  call void @Longtail_DisposeAPI(ptr noundef nonnull %24) #4
  br label %152

152:                                              ; preds = %151, %150
  %.not160 = icmp eq ptr %23, null
  br i1 %.not160, label %154, label %153

153:                                              ; preds = %152
  call void @Longtail_DisposeAPI(ptr noundef nonnull %23) #4
  br label %154

154:                                              ; preds = %153, %152
  %.not161 = icmp eq ptr %22, null
  br i1 %.not161, label %156, label %155

155:                                              ; preds = %154
  call void @Longtail_DisposeAPI(ptr noundef nonnull %22) #4
  br label %156

156:                                              ; preds = %155, %154
  %.not162 = icmp eq ptr %21, null
  br i1 %.not162, label %158, label %157

157:                                              ; preds = %156
  call void @Longtail_DisposeAPI(ptr noundef nonnull %21) #4
  br label %158

158:                                              ; preds = %157, %156
  %.not163 = icmp eq ptr %20, null
  br i1 %.not163, label %159, label %.sink.split

.sink.split:                                      ; preds = %158, %108
  %.0.ph = phi i32 [ %90, %108 ], [ 0, %158 ]
  call void @Longtail_DisposeAPI(ptr noundef nonnull %20) #4
  br label %159

159:                                              ; preds = %.sink.split, %158, %108
  %.0 = phi i32 [ %90, %108 ], [ 0, %158 ], [ %.0.ph, %.sink.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  br label %160

160:                                              ; preds = %82, %83, %159
  %.1 = phi i32 [ %.0, %159 ], [ %69, %83 ], [ %69, %82 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  br label %161

161:                                              ; preds = %55, %56, %160
  %.2 = phi i32 [ %.1, %160 ], [ %46, %56 ], [ %46, %55 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  br label %162

162:                                              ; preds = %37, %38, %161
  %.3 = phi i32 [ %.2, %161 ], [ %26, %38 ], [ %26, %37 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #4
  ret i32 %.3
}

declare ptr @Longtail_CreateInMemStorageAPI(...) local_unnamed_addr #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"Longtail_LogFieldFmt_Private", !7, i64 0, !7, i64 8, !7, i64 16}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 8}
!11 = !{!6, !7, i64 16}
!12 = !{!13, !7, i64 0}
!13 = !{!"Longtail_LogContextFmt_Private", !7, i64 0, !7, i64 8, !14, i64 16}
!14 = !{!"long", !8, i64 0}
!15 = !{!13, !7, i64 8}
!16 = !{!13, !14, i64 16}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !7, i64 8}
!19 = !{!"Longtail_HashRegistryAPI", !20, i64 0, !7, i64 8}
!20 = !{!"Longtail_API", !7, i64 0}
!21 = !{!22, !7, i64 8}
!22 = !{!"Longtail_VersionIndex", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !23, i64 128, !7, i64 136, !7, i64 144}
!23 = !{!"int", !8, i64 0}
!24 = !{!23, !23, i64 0}
!25 = !{!22, !7, i64 32}
!26 = !{!22, !7, i64 96}
!27 = !{!22, !7, i64 104}
!28 = !{!22, !7, i64 112}
!29 = !{!30, !7, i64 136}
!30 = !{!"Longtail_StorageAPI", !20, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!31 = !{!8, !8, i64 0}
!32 = !{!30, !7, i64 160}
!33 = !{!34, !23, i64 20}
!34 = !{!"Longtail_StorageAPI_EntryProperties", !7, i64 0, !14, i64 8, !35, i64 16, !23, i64 20}
!35 = !{!"short", !8, i64 0}
!36 = !{!34, !35, i64 16}
!37 = !{!34, !14, i64 8}
!38 = !{!34, !7, i64 0}
!39 = !{!30, !7, i64 144}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!30, !7, i64 152}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopSimplifyPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass