; 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_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.52 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [24 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.81 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [12 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.94 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [68 x i8], align 1
@__func__.VersionIndex_cp = external hidden unnamed_addr constant [16 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [55 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 ptr @Longtail_Alloc(ptr noundef, i64 noundef) #1

declare void @Longtail_Free(ptr noundef) #1

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

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

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 ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef, ptr noundef) #1

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

declare void @Longtail_DisposeAPI(ptr noundef) #1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @VersionIndex_cp(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5) #2 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca [6 x %struct.Longtail_LogFieldFmt_Private], align 16
  %15 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i64, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i16, align 2
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store i32 %5, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 144, ptr %14) #3
  %41 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i32 0, i32 0
  store ptr @.str.52, ptr %41, align 8, !tbaa !11
  %42 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i32 0, i32 1
  store ptr @.str.53, ptr %42, align 8, !tbaa !13
  %43 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i32 0, i32 2
  %44 = load ptr, ptr %8, align 8, !tbaa !5
  %45 = ptrtoint ptr %44 to i64
  %46 = inttoptr i64 %45 to ptr
  store ptr %46, ptr %43, align 8, !tbaa !14
  %47 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i64 1
  %48 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %47, i32 0, i32 0
  store ptr @.str.92, ptr %48, align 8, !tbaa !11
  %49 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %47, i32 0, i32 1
  store ptr @.str.53, ptr %49, align 8, !tbaa !13
  %50 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %47, i32 0, i32 2
  %51 = load ptr, ptr %9, align 8, !tbaa !5
  %52 = ptrtoint ptr %51 to i64
  %53 = inttoptr i64 %52 to ptr
  store ptr %53, ptr %50, align 8, !tbaa !14
  %54 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i64 2
  %55 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %54, i32 0, i32 0
  store ptr @.str.81, ptr %55, align 8, !tbaa !11
  %56 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %54, i32 0, i32 1
  store ptr @.str.53, ptr %56, align 8, !tbaa !13
  %57 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %54, i32 0, i32 2
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = ptrtoint ptr %58 to i64
  %60 = inttoptr i64 %59 to ptr
  store ptr %60, ptr %57, align 8, !tbaa !14
  %61 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i64 3
  %62 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %61, i32 0, i32 0
  store ptr @.str.54, ptr %62, align 8, !tbaa !11
  %63 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %61, i32 0, i32 1
  store ptr @.str.53, ptr %63, align 8, !tbaa !13
  %64 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %61, i32 0, i32 2
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = ptrtoint ptr %65 to i64
  %67 = inttoptr i64 %66 to ptr
  store ptr %67, ptr %64, align 8, !tbaa !14
  %68 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i64 4
  %69 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %68, i32 0, i32 0
  store ptr @.str.82, ptr %69, align 8, !tbaa !11
  %70 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %68, i32 0, i32 1
  store ptr @.str.53, ptr %70, align 8, !tbaa !13
  %71 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %68, i32 0, i32 2
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = ptrtoint ptr %72 to i64
  %74 = inttoptr i64 %73 to ptr
  store ptr %74, ptr %71, align 8, !tbaa !14
  %75 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %14, i64 5
  %76 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %75, i32 0, i32 0
  store ptr @.str.67, ptr %76, align 8, !tbaa !11
  %77 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %75, i32 0, i32 1
  store ptr @.str.66, ptr %77, align 8, !tbaa !13
  %78 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %75, i32 0, i32 2
  %79 = load i32, ptr %13, align 4, !tbaa !9
  %80 = sext i32 %79 to i64
  %81 = inttoptr i64 %80 to ptr
  store ptr %81, ptr %78, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #3
  %82 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %15, i32 0, i32 0
  store ptr null, ptr %82, align 8, !tbaa !15
  %83 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %15, i32 0, i32 1
  %84 = getelementptr inbounds [6 x %struct.Longtail_LogFieldFmt_Private], ptr %14, i64 0, i64 0
  store ptr %84, ptr %83, align 8, !tbaa !18
  %85 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %15, i32 0, i32 2
  store i64 6, ptr %85, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  store ptr %15, ptr %16, align 8, !tbaa !5
  %86 = load ptr, ptr %16, align 8, !tbaa !5
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1825, ptr noundef %86, i32 noundef 0, ptr noundef @.str.70, ptr noundef @.str.71)
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = call ptr @NormalizePath(ptr noundef %87)
  store ptr %88, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  %89 = call i32 (...) @Longtail_GetCPUCount()
  %90 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %89, i32 noundef 0)
  store ptr %90, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %91 = call ptr (...) @Longtail_CreateFullHashRegistry()
  store ptr %91, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %92 = call ptr (...) @Longtail_CreateFullCompressionRegistry()
  store ptr %92, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  %93 = call ptr (...) @Longtail_CreateFSStorageAPI()
  store ptr %93, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = load ptr, ptr %21, align 8, !tbaa !5
  %96 = load ptr, ptr %17, align 8, !tbaa !5
  %97 = load i32, ptr %13, align 4, !tbaa !9
  %98 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %94, ptr noundef %95, ptr noundef %96, ptr noundef null, i32 noundef %97)
  store ptr %98, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  store ptr null, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  store ptr null, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  store ptr null, ptr %25, align 8, !tbaa !5
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = icmp ne ptr %99, null
  br i1 %100, label %101, label %114

101:                                              ; preds = %6
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = load ptr, ptr %21, align 8, !tbaa !5
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = load i32, ptr %13, align 4, !tbaa !9
  %106 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %102, ptr noundef %103, ptr noundef %104, ptr noundef null, i32 noundef %105)
  store ptr %106, ptr %23, align 8, !tbaa !5
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = load ptr, ptr %23, align 8, !tbaa !5
  %109 = load ptr, ptr %22, align 8, !tbaa !5
  %110 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %107, ptr noundef %108, ptr noundef %109)
  store ptr %110, ptr %24, align 8, !tbaa !5
  %111 = load ptr, ptr %24, align 8, !tbaa !5
  %112 = load ptr, ptr %20, align 8, !tbaa !5
  %113 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %111, ptr noundef %112)
  store ptr %113, ptr %25, align 8, !tbaa !5
  br label %118

114:                                              ; preds = %6
  %115 = load ptr, ptr %22, align 8, !tbaa !5
  %116 = load ptr, ptr %20, align 8, !tbaa !5
  %117 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %115, ptr noundef %116)
  store ptr %117, ptr %25, align 8, !tbaa !5
  br label %118

118:                                              ; preds = %114, %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  %119 = load ptr, ptr %25, align 8, !tbaa !5
  %120 = call ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef %119)
  store ptr %120, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  store ptr null, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %121 = load ptr, ptr %21, align 8, !tbaa !5
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  %123 = call i32 @Longtail_ReadVersionIndex(ptr noundef %121, ptr noundef %122, ptr noundef %27)
  store i32 %123, ptr %28, align 4, !tbaa !9
  %124 = load i32, ptr %28, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %186

126:                                              ; preds = %118
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = load ptr, ptr %9, align 8, !tbaa !5
  %129 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1854, ptr noundef %127, i32 noundef 3, ptr noundef @.str.72, ptr noundef %128, i32 noundef %129)
  %130 = load ptr, ptr %26, align 8, !tbaa !5
  %131 = icmp ne ptr %130, null
  br i1 %131, label %132, label %135

132:                                              ; preds = %126
  %133 = load ptr, ptr %26, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %133, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %134)
  br label %135

135:                                              ; preds = %132, %126
  %136 = load ptr, ptr %25, align 8, !tbaa !5
  %137 = icmp ne ptr %136, null
  br i1 %137, label %138, label %141

138:                                              ; preds = %135
  %139 = load ptr, ptr %25, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %139, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %140)
  br label %141

141:                                              ; preds = %138, %135
  %142 = load ptr, ptr %24, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %144, label %147

144:                                              ; preds = %141
  %145 = load ptr, ptr %24, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %145, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %146)
  br label %147

147:                                              ; preds = %144, %141
  %148 = load ptr, ptr %23, align 8, !tbaa !5
  %149 = icmp ne ptr %148, null
  br i1 %149, label %150, label %153

150:                                              ; preds = %147
  %151 = load ptr, ptr %23, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %151, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %152)
  br label %153

153:                                              ; preds = %150, %147
  %154 = load ptr, ptr %22, align 8, !tbaa !5
  %155 = icmp ne ptr %154, null
  br i1 %155, label %156, label %159

156:                                              ; preds = %153
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %157, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %158)
  br label %159

159:                                              ; preds = %156, %153
  %160 = load ptr, ptr %21, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %165

162:                                              ; preds = %159
  %163 = load ptr, ptr %21, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %163, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %164)
  br label %165

165:                                              ; preds = %162, %159
  %166 = load ptr, ptr %20, align 8, !tbaa !5
  %167 = icmp ne ptr %166, null
  br i1 %167, label %168, label %171

168:                                              ; preds = %165
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %169, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %170)
  br label %171

171:                                              ; preds = %168, %165
  %172 = load ptr, ptr %19, align 8, !tbaa !5
  %173 = icmp ne ptr %172, null
  br i1 %173, label %174, label %177

174:                                              ; preds = %171
  %175 = load ptr, ptr %19, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %175, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %176)
  br label %177

177:                                              ; preds = %174, %171
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = icmp ne ptr %178, null
  br i1 %179, label %180, label %183

180:                                              ; preds = %177
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %181, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %182)
  br label %183

183:                                              ; preds = %180, %177
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %184)
  %185 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %185, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1013

186:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  %187 = load ptr, ptr %19, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %187, i32 0, i32 1
  %189 = load ptr, ptr %188, align 8, !tbaa !20
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %27, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %191, i32 0, i32 1
  %193 = load ptr, ptr %192, align 8, !tbaa !23
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = call i32 %189(ptr noundef %190, i32 noundef %194, ptr noundef %30)
  store i32 %195, ptr %28, align 4, !tbaa !9
  %196 = load i32, ptr %28, align 4, !tbaa !9
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %258

198:                                              ; preds = %186
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1872, ptr noundef %199, i32 noundef 3, ptr noundef @.str.93, ptr noundef %200, i32 noundef %201)
  %202 = load ptr, ptr %26, align 8, !tbaa !5
  %203 = icmp ne ptr %202, null
  br i1 %203, label %204, label %207

204:                                              ; preds = %198
  %205 = load ptr, ptr %26, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %205, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %206)
  br label %207

207:                                              ; preds = %204, %198
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = icmp ne ptr %208, null
  br i1 %209, label %210, label %213

210:                                              ; preds = %207
  %211 = load ptr, ptr %25, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %211, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %212)
  br label %213

213:                                              ; preds = %210, %207
  %214 = load ptr, ptr %24, align 8, !tbaa !5
  %215 = icmp ne ptr %214, null
  br i1 %215, label %216, label %219

216:                                              ; preds = %213
  %217 = load ptr, ptr %24, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %217, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %218)
  br label %219

219:                                              ; preds = %216, %213
  %220 = load ptr, ptr %23, align 8, !tbaa !5
  %221 = icmp ne ptr %220, null
  br i1 %221, label %222, label %225

222:                                              ; preds = %219
  %223 = load ptr, ptr %23, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %223, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %224)
  br label %225

225:                                              ; preds = %222, %219
  %226 = load ptr, ptr %22, align 8, !tbaa !5
  %227 = icmp ne ptr %226, null
  br i1 %227, label %228, label %231

228:                                              ; preds = %225
  %229 = load ptr, ptr %22, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %229, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %230)
  br label %231

231:                                              ; preds = %228, %225
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = icmp ne ptr %232, null
  br i1 %233, label %234, label %237

234:                                              ; preds = %231
  %235 = load ptr, ptr %21, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %235, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %236)
  br label %237

237:                                              ; preds = %234, %231
  %238 = load ptr, ptr %20, align 8, !tbaa !5
  %239 = icmp ne ptr %238, null
  br i1 %239, label %240, label %243

240:                                              ; preds = %237
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %241, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %242)
  br label %243

243:                                              ; preds = %240, %237
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = icmp ne ptr %244, null
  br i1 %245, label %246, label %249

246:                                              ; preds = %243
  %247 = load ptr, ptr %19, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %247, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %248)
  br label %249

249:                                              ; preds = %246, %243
  %250 = load ptr, ptr %18, align 8, !tbaa !5
  %251 = icmp ne ptr %250, null
  br i1 %251, label %252, label %255

252:                                              ; preds = %249
  %253 = load ptr, ptr %18, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %253, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %254)
  br label %255

255:                                              ; preds = %252, %249
  %256 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %256)
  %257 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %257, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1012

258:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load ptr, ptr %27, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %260, i32 0, i32 4
  %262 = load ptr, ptr %261, align 8, !tbaa !25
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load ptr, ptr %27, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %264, i32 0, i32 12
  %266 = load ptr, ptr %265, align 8, !tbaa !26
  %267 = call i32 @SyncGetExistingContent(ptr noundef %259, i32 noundef %263, ptr noundef %266, i32 noundef 0, ptr noundef %31)
  store i32 %267, ptr %28, align 4, !tbaa !9
  %268 = load i32, ptr %28, align 4, !tbaa !9
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %331

270:                                              ; preds = %258
  %271 = load ptr, ptr %16, align 8, !tbaa !5
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1895, ptr noundef %271, i32 noundef 3, ptr noundef @.str.94, ptr noundef %272, ptr noundef %273, i32 noundef %274)
  %275 = load ptr, ptr %26, align 8, !tbaa !5
  %276 = icmp ne ptr %275, null
  br i1 %276, label %277, label %280

277:                                              ; preds = %270
  %278 = load ptr, ptr %26, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %278, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %279)
  br label %280

280:                                              ; preds = %277, %270
  %281 = load ptr, ptr %25, align 8, !tbaa !5
  %282 = icmp ne ptr %281, null
  br i1 %282, label %283, label %286

283:                                              ; preds = %280
  %284 = load ptr, ptr %25, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %284, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %285)
  br label %286

286:                                              ; preds = %283, %280
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = icmp ne ptr %287, null
  br i1 %288, label %289, label %292

289:                                              ; preds = %286
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %290, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %291)
  br label %292

292:                                              ; preds = %289, %286
  %293 = load ptr, ptr %23, align 8, !tbaa !5
  %294 = icmp ne ptr %293, null
  br i1 %294, label %295, label %298

295:                                              ; preds = %292
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %296, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %297)
  br label %298

298:                                              ; preds = %295, %292
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = icmp ne ptr %299, null
  br i1 %300, label %301, label %304

301:                                              ; preds = %298
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %302, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %303)
  br label %304

304:                                              ; preds = %301, %298
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = icmp ne ptr %305, null
  br i1 %306, label %307, label %310

307:                                              ; preds = %304
  %308 = load ptr, ptr %21, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %308, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %309)
  br label %310

310:                                              ; preds = %307, %304
  %311 = load ptr, ptr %20, align 8, !tbaa !5
  %312 = icmp ne ptr %311, null
  br i1 %312, label %313, label %316

313:                                              ; preds = %310
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %314, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %315)
  br label %316

316:                                              ; preds = %313, %310
  %317 = load ptr, ptr %19, align 8, !tbaa !5
  %318 = icmp ne ptr %317, null
  br i1 %318, label %319, label %322

319:                                              ; preds = %316
  %320 = load ptr, ptr %19, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %320, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %321)
  br label %322

322:                                              ; preds = %319, %316
  %323 = load ptr, ptr %18, align 8, !tbaa !5
  %324 = icmp ne ptr %323, null
  br i1 %324, label %325, label %328

325:                                              ; preds = %322
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %326, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %327)
  br label %328

328:                                              ; preds = %325, %322
  %329 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %329)
  %330 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %330, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1011

331:                                              ; preds = %258
  %332 = load ptr, ptr %31, align 8, !tbaa !5
  %333 = load ptr, ptr %27, align 8, !tbaa !5
  %334 = call i32 @Longtail_ValidateStore(ptr noundef %332, ptr noundef %333)
  store i32 %334, ptr %28, align 4, !tbaa !9
  %335 = load i32, ptr %28, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %399

337:                                              ; preds = %331
  %338 = load ptr, ptr %16, align 8, !tbaa !5
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1912, ptr noundef %338, i32 noundef 3, ptr noundef @.str.101, ptr noundef %339, ptr noundef %340, i32 noundef %341)
  %342 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %342)
  %343 = load ptr, ptr %26, align 8, !tbaa !5
  %344 = icmp ne ptr %343, null
  br i1 %344, label %345, label %348

345:                                              ; preds = %337
  %346 = load ptr, ptr %26, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %346, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %347)
  br label %348

348:                                              ; preds = %345, %337
  %349 = load ptr, ptr %25, align 8, !tbaa !5
  %350 = icmp ne ptr %349, null
  br i1 %350, label %351, label %354

351:                                              ; preds = %348
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %352, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %353)
  br label %354

354:                                              ; preds = %351, %348
  %355 = load ptr, ptr %24, align 8, !tbaa !5
  %356 = icmp ne ptr %355, null
  br i1 %356, label %357, label %360

357:                                              ; preds = %354
  %358 = load ptr, ptr %24, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %358, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %359)
  br label %360

360:                                              ; preds = %357, %354
  %361 = load ptr, ptr %23, align 8, !tbaa !5
  %362 = icmp ne ptr %361, null
  br i1 %362, label %363, label %366

363:                                              ; preds = %360
  %364 = load ptr, ptr %23, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %364, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %365)
  br label %366

366:                                              ; preds = %363, %360
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = icmp ne ptr %367, null
  br i1 %368, label %369, label %372

369:                                              ; preds = %366
  %370 = load ptr, ptr %22, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %370, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %371)
  br label %372

372:                                              ; preds = %369, %366
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = icmp ne ptr %373, null
  br i1 %374, label %375, label %378

375:                                              ; preds = %372
  %376 = load ptr, ptr %21, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %376, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %377)
  br label %378

378:                                              ; preds = %375, %372
  %379 = load ptr, ptr %20, align 8, !tbaa !5
  %380 = icmp ne ptr %379, null
  br i1 %380, label %381, label %384

381:                                              ; preds = %378
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %382, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %383)
  br label %384

384:                                              ; preds = %381, %378
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = icmp ne ptr %385, null
  br i1 %386, label %387, label %390

387:                                              ; preds = %384
  %388 = load ptr, ptr %19, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %388, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %389)
  br label %390

390:                                              ; preds = %387, %384
  %391 = load ptr, ptr %18, align 8, !tbaa !5
  %392 = icmp ne ptr %391, null
  br i1 %392, label %393, label %396

393:                                              ; preds = %390
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %394, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %395)
  br label %396

396:                                              ; preds = %393, %390
  %397 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %397)
  %398 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %398, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1011

399:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  %400 = load ptr, ptr %30, align 8, !tbaa !5
  %401 = load ptr, ptr %18, align 8, !tbaa !5
  %402 = load ptr, ptr %26, align 8, !tbaa !5
  %403 = load ptr, ptr %31, align 8, !tbaa !5
  %404 = load ptr, ptr %27, align 8, !tbaa !5
  %405 = call ptr @Longtail_CreateBlockStoreStorageAPI(ptr noundef %400, ptr noundef %401, ptr noundef %402, ptr noundef %403, ptr noundef %404)
  store ptr %405, ptr %32, align 8, !tbaa !5
  %406 = load i32, ptr %28, align 4, !tbaa !9
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %469

408:                                              ; preds = %399
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = load ptr, ptr %9, align 8, !tbaa !5
  %411 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1935, ptr noundef %409, i32 noundef 3, ptr noundef @.str.98, ptr noundef %410, i32 noundef %411)
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %412)
  %413 = load ptr, ptr %26, align 8, !tbaa !5
  %414 = icmp ne ptr %413, null
  br i1 %414, label %415, label %418

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

418:                                              ; preds = %415, %408
  %419 = load ptr, ptr %25, align 8, !tbaa !5
  %420 = icmp ne ptr %419, null
  br i1 %420, label %421, label %424

421:                                              ; preds = %418
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %422, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %423)
  br label %424

424:                                              ; preds = %421, %418
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = icmp ne ptr %425, null
  br i1 %426, label %427, label %430

427:                                              ; preds = %424
  %428 = load ptr, ptr %24, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %428, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %429)
  br label %430

430:                                              ; preds = %427, %424
  %431 = load ptr, ptr %23, align 8, !tbaa !5
  %432 = icmp ne ptr %431, null
  br i1 %432, label %433, label %436

433:                                              ; preds = %430
  %434 = load ptr, ptr %23, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %434, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %435)
  br label %436

436:                                              ; preds = %433, %430
  %437 = load ptr, ptr %22, align 8, !tbaa !5
  %438 = icmp ne ptr %437, null
  br i1 %438, label %439, label %442

439:                                              ; preds = %436
  %440 = load ptr, ptr %22, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %440, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %441)
  br label %442

442:                                              ; preds = %439, %436
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = icmp ne ptr %443, null
  br i1 %444, label %445, label %448

445:                                              ; preds = %442
  %446 = load ptr, ptr %21, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %446, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %447)
  br label %448

448:                                              ; preds = %445, %442
  %449 = load ptr, ptr %20, align 8, !tbaa !5
  %450 = icmp ne ptr %449, null
  br i1 %450, label %451, label %454

451:                                              ; preds = %448
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %452, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %453)
  br label %454

454:                                              ; preds = %451, %448
  %455 = load ptr, ptr %19, align 8, !tbaa !5
  %456 = icmp ne ptr %455, null
  br i1 %456, label %457, label %460

457:                                              ; preds = %454
  %458 = load ptr, ptr %19, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %458, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %459)
  br label %460

460:                                              ; preds = %457, %454
  %461 = load ptr, ptr %18, align 8, !tbaa !5
  %462 = icmp ne ptr %461, null
  br i1 %462, label %463, label %466

463:                                              ; preds = %460
  %464 = load ptr, ptr %18, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %464, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %465)
  br label %466

466:                                              ; preds = %463, %460
  %467 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %467)
  %468 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %468, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1010

469:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  %470 = load ptr, ptr %32, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %470, i32 0, i32 1
  %472 = load ptr, ptr %471, align 8, !tbaa !27
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = load ptr, ptr %11, align 8, !tbaa !5
  %475 = getelementptr inbounds i8, ptr %474, i64 0
  %476 = load i8, ptr %475, align 1, !tbaa !29
  %477 = sext i8 %476 to i32
  %478 = icmp eq i32 %477, 46
  br i1 %478, label %479, label %482

479:                                              ; preds = %469
  %480 = load ptr, ptr %11, align 8, !tbaa !5
  %481 = getelementptr inbounds i8, ptr %480, i64 1
  br label %484

482:                                              ; preds = %469
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  br label %484

484:                                              ; preds = %482, %479
  %485 = phi ptr [ %481, %479 ], [ %483, %482 ]
  %486 = call i32 %472(ptr noundef %473, ptr noundef %485, ptr noundef %33)
  store i32 %486, ptr %28, align 4, !tbaa !9
  %487 = load i32, ptr %28, align 4, !tbaa !9
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %557

489:                                              ; preds = %484
  %490 = load ptr, ptr %16, align 8, !tbaa !5
  %491 = load ptr, ptr %11, align 8, !tbaa !5
  %492 = load ptr, ptr %9, align 8, !tbaa !5
  %493 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1954, ptr noundef %490, i32 noundef 3, ptr noundef @.str.102, ptr noundef %491, ptr noundef %492, i32 noundef %493)
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = icmp ne ptr %494, null
  br i1 %495, label %496, label %499

496:                                              ; preds = %489
  %497 = load ptr, ptr %32, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %497, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %498)
  br label %499

499:                                              ; preds = %496, %489
  %500 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %500)
  %501 = load ptr, ptr %26, align 8, !tbaa !5
  %502 = icmp ne ptr %501, null
  br i1 %502, label %503, label %506

503:                                              ; preds = %499
  %504 = load ptr, ptr %26, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %504, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %505)
  br label %506

506:                                              ; preds = %503, %499
  %507 = load ptr, ptr %25, align 8, !tbaa !5
  %508 = icmp ne ptr %507, null
  br i1 %508, label %509, label %512

509:                                              ; preds = %506
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %510, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %511)
  br label %512

512:                                              ; preds = %509, %506
  %513 = load ptr, ptr %24, align 8, !tbaa !5
  %514 = icmp ne ptr %513, null
  br i1 %514, label %515, label %518

515:                                              ; preds = %512
  %516 = load ptr, ptr %24, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %516, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %517)
  br label %518

518:                                              ; preds = %515, %512
  %519 = load ptr, ptr %23, align 8, !tbaa !5
  %520 = icmp ne ptr %519, null
  br i1 %520, label %521, label %524

521:                                              ; preds = %518
  %522 = load ptr, ptr %23, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %522, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %523)
  br label %524

524:                                              ; preds = %521, %518
  %525 = load ptr, ptr %22, align 8, !tbaa !5
  %526 = icmp ne ptr %525, null
  br i1 %526, label %527, label %530

527:                                              ; preds = %524
  %528 = load ptr, ptr %22, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %528, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %529)
  br label %530

530:                                              ; preds = %527, %524
  %531 = load ptr, ptr %21, align 8, !tbaa !5
  %532 = icmp ne ptr %531, null
  br i1 %532, label %533, label %536

533:                                              ; preds = %530
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %534, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %535)
  br label %536

536:                                              ; preds = %533, %530
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = icmp ne ptr %537, null
  br i1 %538, label %539, label %542

539:                                              ; preds = %536
  %540 = load ptr, ptr %20, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %540, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %541)
  br label %542

542:                                              ; preds = %539, %536
  %543 = load ptr, ptr %19, align 8, !tbaa !5
  %544 = icmp ne ptr %543, null
  br i1 %544, label %545, label %548

545:                                              ; preds = %542
  %546 = load ptr, ptr %19, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %546, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %547)
  br label %548

548:                                              ; preds = %545, %542
  %549 = load ptr, ptr %18, align 8, !tbaa !5
  %550 = icmp ne ptr %549, null
  br i1 %550, label %551, label %554

551:                                              ; preds = %548
  %552 = load ptr, ptr %18, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %552, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %553)
  br label %554

554:                                              ; preds = %551, %548
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %555)
  %556 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %556, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1009

557:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  %558 = load ptr, ptr %32, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %558, i32 0, i32 2
  %560 = load ptr, ptr %559, align 8, !tbaa !30
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load ptr, ptr %33, align 8, !tbaa !5
  %563 = call i32 %560(ptr noundef %561, ptr noundef %562, ptr noundef %34)
  store i32 %563, ptr %28, align 4, !tbaa !9
  %564 = load i32, ptr %28, align 4, !tbaa !9
  %565 = icmp ne i32 %564, 0
  br i1 %565, label %566, label %639

566:                                              ; preds = %557
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = load ptr, ptr %11, align 8, !tbaa !5
  %569 = load ptr, ptr %9, align 8, !tbaa !5
  %570 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1973, ptr noundef %567, i32 noundef 3, ptr noundef @.str.103, ptr noundef %568, ptr noundef %569, i32 noundef %570)
  %571 = load ptr, ptr %32, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %571, i32 0, i32 9
  %573 = load ptr, ptr %572, align 8, !tbaa !31
  %574 = load ptr, ptr %32, align 8, !tbaa !5
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  call void %573(ptr noundef %574, ptr noundef %575)
  %576 = load ptr, ptr %32, align 8, !tbaa !5
  %577 = icmp ne ptr %576, null
  br i1 %577, label %578, label %581

578:                                              ; preds = %566
  %579 = load ptr, ptr %32, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %579, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %580)
  br label %581

581:                                              ; preds = %578, %566
  %582 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %582)
  %583 = load ptr, ptr %26, align 8, !tbaa !5
  %584 = icmp ne ptr %583, null
  br i1 %584, label %585, label %588

585:                                              ; preds = %581
  %586 = load ptr, ptr %26, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %586, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %587)
  br label %588

588:                                              ; preds = %585, %581
  %589 = load ptr, ptr %25, align 8, !tbaa !5
  %590 = icmp ne ptr %589, null
  br i1 %590, label %591, label %594

591:                                              ; preds = %588
  %592 = load ptr, ptr %25, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %592, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %593)
  br label %594

594:                                              ; preds = %591, %588
  %595 = load ptr, ptr %24, align 8, !tbaa !5
  %596 = icmp ne ptr %595, null
  br i1 %596, label %597, label %600

597:                                              ; preds = %594
  %598 = load ptr, ptr %24, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %598, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %599)
  br label %600

600:                                              ; preds = %597, %594
  %601 = load ptr, ptr %23, align 8, !tbaa !5
  %602 = icmp ne ptr %601, null
  br i1 %602, label %603, label %606

603:                                              ; preds = %600
  %604 = load ptr, ptr %23, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %604, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %605)
  br label %606

606:                                              ; preds = %603, %600
  %607 = load ptr, ptr %22, align 8, !tbaa !5
  %608 = icmp ne ptr %607, null
  br i1 %608, label %609, label %612

609:                                              ; preds = %606
  %610 = load ptr, ptr %22, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %610, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %611)
  br label %612

612:                                              ; preds = %609, %606
  %613 = load ptr, ptr %21, align 8, !tbaa !5
  %614 = icmp ne ptr %613, null
  br i1 %614, label %615, label %618

615:                                              ; preds = %612
  %616 = load ptr, ptr %21, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %616, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %617)
  br label %618

618:                                              ; preds = %615, %612
  %619 = load ptr, ptr %20, align 8, !tbaa !5
  %620 = icmp ne ptr %619, null
  br i1 %620, label %621, label %624

621:                                              ; preds = %618
  %622 = load ptr, ptr %20, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %622, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %623)
  br label %624

624:                                              ; preds = %621, %618
  %625 = load ptr, ptr %19, align 8, !tbaa !5
  %626 = icmp ne ptr %625, null
  br i1 %626, label %627, label %630

627:                                              ; preds = %624
  %628 = load ptr, ptr %19, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %628, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %629)
  br label %630

630:                                              ; preds = %627, %624
  %631 = load ptr, ptr %18, align 8, !tbaa !5
  %632 = icmp ne ptr %631, null
  br i1 %632, label %633, label %636

633:                                              ; preds = %630
  %634 = load ptr, ptr %18, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %634, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %635)
  br label %636

636:                                              ; preds = %633, %630
  %637 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %637)
  %638 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %638, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1008

639:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  %640 = load ptr, ptr %21, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %640, i32 0, i32 4
  %642 = load ptr, ptr %641, align 8, !tbaa !32
  %643 = load ptr, ptr %21, align 8, !tbaa !5
  %644 = load ptr, ptr %12, align 8, !tbaa !5
  %645 = load i64, ptr %34, align 8, !tbaa !33
  %646 = call i32 %642(ptr noundef %643, ptr noundef %644, i64 noundef %645, ptr noundef %35)
  store i32 %646, ptr %28, align 4, !tbaa !9
  %647 = load i32, ptr %28, align 4, !tbaa !9
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %649, label %721

649:                                              ; preds = %639
  %650 = load ptr, ptr %16, align 8, !tbaa !5
  %651 = load ptr, ptr %12, align 8, !tbaa !5
  %652 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 1993, ptr noundef %650, i32 noundef 3, ptr noundef @.str.104, ptr noundef %651, i32 noundef %652)
  %653 = load ptr, ptr %32, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %653, i32 0, i32 9
  %655 = load ptr, ptr %654, align 8, !tbaa !31
  %656 = load ptr, ptr %32, align 8, !tbaa !5
  %657 = load ptr, ptr %33, align 8, !tbaa !5
  call void %655(ptr noundef %656, ptr noundef %657)
  %658 = load ptr, ptr %32, align 8, !tbaa !5
  %659 = icmp ne ptr %658, null
  br i1 %659, label %660, label %663

660:                                              ; preds = %649
  %661 = load ptr, ptr %32, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %661, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %662)
  br label %663

663:                                              ; preds = %660, %649
  %664 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %664)
  %665 = load ptr, ptr %26, align 8, !tbaa !5
  %666 = icmp ne ptr %665, null
  br i1 %666, label %667, label %670

667:                                              ; preds = %663
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %668, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %669)
  br label %670

670:                                              ; preds = %667, %663
  %671 = load ptr, ptr %25, align 8, !tbaa !5
  %672 = icmp ne ptr %671, null
  br i1 %672, label %673, label %676

673:                                              ; preds = %670
  %674 = load ptr, ptr %25, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %674, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %675)
  br label %676

676:                                              ; preds = %673, %670
  %677 = load ptr, ptr %24, align 8, !tbaa !5
  %678 = icmp ne ptr %677, null
  br i1 %678, label %679, label %682

679:                                              ; preds = %676
  %680 = load ptr, ptr %24, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %680, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %681)
  br label %682

682:                                              ; preds = %679, %676
  %683 = load ptr, ptr %23, align 8, !tbaa !5
  %684 = icmp ne ptr %683, null
  br i1 %684, label %685, label %688

685:                                              ; preds = %682
  %686 = load ptr, ptr %23, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %686, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %687)
  br label %688

688:                                              ; preds = %685, %682
  %689 = load ptr, ptr %22, align 8, !tbaa !5
  %690 = icmp ne ptr %689, null
  br i1 %690, label %691, label %694

691:                                              ; preds = %688
  %692 = load ptr, ptr %22, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %692, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %693)
  br label %694

694:                                              ; preds = %691, %688
  %695 = load ptr, ptr %21, align 8, !tbaa !5
  %696 = icmp ne ptr %695, null
  br i1 %696, label %697, label %700

697:                                              ; preds = %694
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %698, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %699)
  br label %700

700:                                              ; preds = %697, %694
  %701 = load ptr, ptr %20, align 8, !tbaa !5
  %702 = icmp ne ptr %701, null
  br i1 %702, label %703, label %706

703:                                              ; preds = %700
  %704 = load ptr, ptr %20, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %704, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %705)
  br label %706

706:                                              ; preds = %703, %700
  %707 = load ptr, ptr %19, align 8, !tbaa !5
  %708 = icmp ne ptr %707, null
  br i1 %708, label %709, label %712

709:                                              ; preds = %706
  %710 = load ptr, ptr %19, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %710, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %711)
  br label %712

712:                                              ; preds = %709, %706
  %713 = load ptr, ptr %18, align 8, !tbaa !5
  %714 = icmp ne ptr %713, null
  br i1 %714, label %715, label %718

715:                                              ; preds = %712
  %716 = load ptr, ptr %18, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %716, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %717)
  br label %718

718:                                              ; preds = %715, %712
  %719 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %719)
  %720 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %720, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1007

721:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  store i64 134217728, ptr %36, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  %722 = load i64, ptr %34, align 8, !tbaa !33
  %723 = icmp ugt i64 %722, 134217728
  br i1 %723, label %724, label %725

724:                                              ; preds = %721
  br label %727

725:                                              ; preds = %721
  %726 = load i64, ptr %34, align 8, !tbaa !33
  br label %727

727:                                              ; preds = %725, %724
  %728 = phi i64 [ 134217728, %724 ], [ %726, %725 ]
  %729 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %728)
  store ptr %729, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  store i64 0, ptr %38, align 8, !tbaa !33
  br label %730

730:                                              ; preds = %744, %727
  %731 = load i64, ptr %34, align 8, !tbaa !33
  %732 = load i64, ptr %38, align 8, !tbaa !33
  %733 = icmp ugt i64 %731, %732
  br i1 %733, label %734, label %767

734:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  %735 = load i64, ptr %34, align 8, !tbaa !33
  %736 = load i64, ptr %38, align 8, !tbaa !33
  %737 = sub i64 %735, %736
  %738 = icmp ugt i64 %737, 134217728
  br i1 %738, label %739, label %740

739:                                              ; preds = %734
  br label %744

740:                                              ; preds = %734
  %741 = load i64, ptr %34, align 8, !tbaa !33
  %742 = load i64, ptr %38, align 8, !tbaa !33
  %743 = sub i64 %741, %742
  br label %744

744:                                              ; preds = %740, %739
  %745 = phi i64 [ 134217728, %739 ], [ %743, %740 ]
  store i64 %745, ptr %39, align 8, !tbaa !33
  %746 = load ptr, ptr %32, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %746, i32 0, i32 3
  %748 = load ptr, ptr %747, align 8, !tbaa !34
  %749 = load ptr, ptr %32, align 8, !tbaa !5
  %750 = load ptr, ptr %33, align 8, !tbaa !5
  %751 = load i64, ptr %38, align 8, !tbaa !33
  %752 = load i64, ptr %39, align 8, !tbaa !33
  %753 = load ptr, ptr %37, align 8, !tbaa !5
  %754 = call i32 %748(ptr noundef %749, ptr noundef %750, i64 noundef %751, i64 noundef %752, ptr noundef %753)
  %755 = load ptr, ptr %21, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %755, i32 0, i32 5
  %757 = load ptr, ptr %756, align 8, !tbaa !35
  %758 = load ptr, ptr %21, align 8, !tbaa !5
  %759 = load ptr, ptr %35, align 8, !tbaa !5
  %760 = load i64, ptr %38, align 8, !tbaa !33
  %761 = load i64, ptr %39, align 8, !tbaa !33
  %762 = load ptr, ptr %37, align 8, !tbaa !5
  %763 = call i32 %757(ptr noundef %758, ptr noundef %759, i64 noundef %760, i64 noundef %761, ptr noundef %762)
  %764 = load i64, ptr %39, align 8, !tbaa !33
  %765 = load i64, ptr %38, align 8, !tbaa !33
  %766 = add i64 %765, %764
  store i64 %766, ptr %38, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  br label %730, !llvm.loop !36

767:                                              ; preds = %730
  %768 = load ptr, ptr %37, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %768)
  %769 = load ptr, ptr %21, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %769, i32 0, i32 9
  %771 = load ptr, ptr %770, align 8, !tbaa !31
  %772 = load ptr, ptr %21, align 8, !tbaa !5
  %773 = load ptr, ptr %35, align 8, !tbaa !5
  call void %771(ptr noundef %772, ptr noundef %773)
  %774 = load ptr, ptr %32, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %774, i32 0, i32 9
  %776 = load ptr, ptr %775, align 8, !tbaa !31
  %777 = load ptr, ptr %32, align 8, !tbaa !5
  %778 = load ptr, ptr %33, align 8, !tbaa !5
  call void %776(ptr noundef %777, ptr noundef %778)
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #3
  %779 = load ptr, ptr %32, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %779, i32 0, i32 8
  %781 = load ptr, ptr %780, align 8, !tbaa !38
  %782 = load ptr, ptr %32, align 8, !tbaa !5
  %783 = load ptr, ptr %11, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i64 0
  %785 = load i8, ptr %784, align 1, !tbaa !29
  %786 = sext i8 %785 to i32
  %787 = icmp eq i32 %786, 46
  br i1 %787, label %788, label %791

788:                                              ; preds = %767
  %789 = load ptr, ptr %11, align 8, !tbaa !5
  %790 = getelementptr inbounds i8, ptr %789, i64 1
  br label %793

791:                                              ; preds = %767
  %792 = load ptr, ptr %11, align 8, !tbaa !5
  br label %793

793:                                              ; preds = %791, %788
  %794 = phi ptr [ %790, %788 ], [ %792, %791 ]
  %795 = call i32 %781(ptr noundef %782, ptr noundef %794, ptr noundef %40)
  store i32 %795, ptr %28, align 4, !tbaa !9
  %796 = load i32, ptr %28, align 4, !tbaa !9
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %798, label %866

798:                                              ; preds = %793
  %799 = load ptr, ptr %16, align 8, !tbaa !5
  %800 = load ptr, ptr %11, align 8, !tbaa !5
  %801 = load ptr, ptr %9, align 8, !tbaa !5
  %802 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 2029, ptr noundef %799, i32 noundef 3, ptr noundef @.str.105, ptr noundef %800, ptr noundef %801, i32 noundef %802)
  %803 = load ptr, ptr %32, align 8, !tbaa !5
  %804 = icmp ne ptr %803, null
  br i1 %804, label %805, label %808

805:                                              ; preds = %798
  %806 = load ptr, ptr %32, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %806, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %807)
  br label %808

808:                                              ; preds = %805, %798
  %809 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %809)
  %810 = load ptr, ptr %26, align 8, !tbaa !5
  %811 = icmp ne ptr %810, null
  br i1 %811, label %812, label %815

812:                                              ; preds = %808
  %813 = load ptr, ptr %26, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %813, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %814)
  br label %815

815:                                              ; preds = %812, %808
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = icmp ne ptr %816, null
  br i1 %817, label %818, label %821

818:                                              ; preds = %815
  %819 = load ptr, ptr %25, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %819, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %820)
  br label %821

821:                                              ; preds = %818, %815
  %822 = load ptr, ptr %24, align 8, !tbaa !5
  %823 = icmp ne ptr %822, null
  br i1 %823, label %824, label %827

824:                                              ; preds = %821
  %825 = load ptr, ptr %24, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %825, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %826)
  br label %827

827:                                              ; preds = %824, %821
  %828 = load ptr, ptr %23, align 8, !tbaa !5
  %829 = icmp ne ptr %828, null
  br i1 %829, label %830, label %833

830:                                              ; preds = %827
  %831 = load ptr, ptr %23, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %831, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %832)
  br label %833

833:                                              ; preds = %830, %827
  %834 = load ptr, ptr %22, align 8, !tbaa !5
  %835 = icmp ne ptr %834, null
  br i1 %835, label %836, label %839

836:                                              ; preds = %833
  %837 = load ptr, ptr %22, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %837, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %838)
  br label %839

839:                                              ; preds = %836, %833
  %840 = load ptr, ptr %21, align 8, !tbaa !5
  %841 = icmp ne ptr %840, null
  br i1 %841, label %842, label %845

842:                                              ; preds = %839
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %843, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %844)
  br label %845

845:                                              ; preds = %842, %839
  %846 = load ptr, ptr %20, align 8, !tbaa !5
  %847 = icmp ne ptr %846, null
  br i1 %847, label %848, label %851

848:                                              ; preds = %845
  %849 = load ptr, ptr %20, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %849, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %850)
  br label %851

851:                                              ; preds = %848, %845
  %852 = load ptr, ptr %19, align 8, !tbaa !5
  %853 = icmp ne ptr %852, null
  br i1 %853, label %854, label %857

854:                                              ; preds = %851
  %855 = load ptr, ptr %19, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %855, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %856)
  br label %857

857:                                              ; preds = %854, %851
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = icmp ne ptr %858, null
  br i1 %859, label %860, label %863

860:                                              ; preds = %857
  %861 = load ptr, ptr %18, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %861, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %862)
  br label %863

863:                                              ; preds = %860, %857
  %864 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %864)
  %865 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %865, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1006

866:                                              ; preds = %793
  %867 = load ptr, ptr %21, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %867, i32 0, i32 7
  %869 = load ptr, ptr %868, align 8, !tbaa !39
  %870 = load ptr, ptr %21, align 8, !tbaa !5
  %871 = load ptr, ptr %12, align 8, !tbaa !5
  %872 = load i16, ptr %40, align 2, !tbaa !40
  %873 = call i32 %869(ptr noundef %870, ptr noundef %871, i16 noundef zeroext %872)
  store i32 %873, ptr %28, align 4, !tbaa !9
  %874 = load i32, ptr %28, align 4, !tbaa !9
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %876, label %943

876:                                              ; preds = %866
  %877 = load ptr, ptr %16, align 8, !tbaa !5
  %878 = load ptr, ptr %12, align 8, !tbaa !5
  %879 = load i32, ptr %28, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.VersionIndex_cp, i32 noundef 2048, ptr noundef %877, i32 noundef 3, ptr noundef @.str.106, ptr noundef %878, i32 noundef %879)
  %880 = load ptr, ptr %32, align 8, !tbaa !5
  %881 = icmp ne ptr %880, null
  br i1 %881, label %882, label %885

882:                                              ; preds = %876
  %883 = load ptr, ptr %32, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %883, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %884)
  br label %885

885:                                              ; preds = %882, %876
  %886 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %886)
  %887 = load ptr, ptr %26, align 8, !tbaa !5
  %888 = icmp ne ptr %887, null
  br i1 %888, label %889, label %892

889:                                              ; preds = %885
  %890 = load ptr, ptr %26, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %890, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %891)
  br label %892

892:                                              ; preds = %889, %885
  %893 = load ptr, ptr %25, align 8, !tbaa !5
  %894 = icmp ne ptr %893, null
  br i1 %894, label %895, label %898

895:                                              ; preds = %892
  %896 = load ptr, ptr %25, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %896, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %897)
  br label %898

898:                                              ; preds = %895, %892
  %899 = load ptr, ptr %24, align 8, !tbaa !5
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %904

901:                                              ; preds = %898
  %902 = load ptr, ptr %24, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %902, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %903)
  br label %904

904:                                              ; preds = %901, %898
  %905 = load ptr, ptr %23, align 8, !tbaa !5
  %906 = icmp ne ptr %905, null
  br i1 %906, label %907, label %910

907:                                              ; preds = %904
  %908 = load ptr, ptr %23, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %908, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %909)
  br label %910

910:                                              ; preds = %907, %904
  %911 = load ptr, ptr %22, align 8, !tbaa !5
  %912 = icmp ne ptr %911, null
  br i1 %912, label %913, label %916

913:                                              ; preds = %910
  %914 = load ptr, ptr %22, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %914, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %915)
  br label %916

916:                                              ; preds = %913, %910
  %917 = load ptr, ptr %21, align 8, !tbaa !5
  %918 = icmp ne ptr %917, null
  br i1 %918, label %919, label %922

919:                                              ; preds = %916
  %920 = load ptr, ptr %21, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %920, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %921)
  br label %922

922:                                              ; preds = %919, %916
  %923 = load ptr, ptr %20, align 8, !tbaa !5
  %924 = icmp ne ptr %923, null
  br i1 %924, label %925, label %928

925:                                              ; preds = %922
  %926 = load ptr, ptr %20, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %926, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %927)
  br label %928

928:                                              ; preds = %925, %922
  %929 = load ptr, ptr %19, align 8, !tbaa !5
  %930 = icmp ne ptr %929, null
  br i1 %930, label %931, label %934

931:                                              ; preds = %928
  %932 = load ptr, ptr %19, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %932, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %933)
  br label %934

934:                                              ; preds = %931, %928
  %935 = load ptr, ptr %18, align 8, !tbaa !5
  %936 = icmp ne ptr %935, null
  br i1 %936, label %937, label %940

937:                                              ; preds = %934
  %938 = load ptr, ptr %18, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %938, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %939)
  br label %940

940:                                              ; preds = %937, %934
  %941 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %941)
  %942 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %942, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1006

943:                                              ; preds = %866
  %944 = load ptr, ptr %32, align 8, !tbaa !5
  %945 = icmp ne ptr %944, null
  br i1 %945, label %946, label %949

946:                                              ; preds = %943
  %947 = load ptr, ptr %32, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %947, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %948)
  br label %949

949:                                              ; preds = %946, %943
  %950 = load ptr, ptr %31, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %950)
  %951 = load ptr, ptr %26, align 8, !tbaa !5
  %952 = icmp ne ptr %951, null
  br i1 %952, label %953, label %956

953:                                              ; preds = %949
  %954 = load ptr, ptr %26, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %954, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %955)
  br label %956

956:                                              ; preds = %953, %949
  %957 = load ptr, ptr %25, align 8, !tbaa !5
  %958 = icmp ne ptr %957, null
  br i1 %958, label %959, label %962

959:                                              ; preds = %956
  %960 = load ptr, ptr %25, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %960, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %961)
  br label %962

962:                                              ; preds = %959, %956
  %963 = load ptr, ptr %24, align 8, !tbaa !5
  %964 = icmp ne ptr %963, null
  br i1 %964, label %965, label %968

965:                                              ; preds = %962
  %966 = load ptr, ptr %24, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %966, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %967)
  br label %968

968:                                              ; preds = %965, %962
  %969 = load ptr, ptr %23, align 8, !tbaa !5
  %970 = icmp ne ptr %969, null
  br i1 %970, label %971, label %974

971:                                              ; preds = %968
  %972 = load ptr, ptr %23, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %972, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %973)
  br label %974

974:                                              ; preds = %971, %968
  %975 = load ptr, ptr %22, align 8, !tbaa !5
  %976 = icmp ne ptr %975, null
  br i1 %976, label %977, label %980

977:                                              ; preds = %974
  %978 = load ptr, ptr %22, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %978, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %979)
  br label %980

980:                                              ; preds = %977, %974
  %981 = load ptr, ptr %21, align 8, !tbaa !5
  %982 = icmp ne ptr %981, null
  br i1 %982, label %983, label %986

983:                                              ; preds = %980
  %984 = load ptr, ptr %21, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %984, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %985)
  br label %986

986:                                              ; preds = %983, %980
  %987 = load ptr, ptr %20, align 8, !tbaa !5
  %988 = icmp ne ptr %987, null
  br i1 %988, label %989, label %992

989:                                              ; preds = %986
  %990 = load ptr, ptr %20, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %990, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %991)
  br label %992

992:                                              ; preds = %989, %986
  %993 = load ptr, ptr %19, align 8, !tbaa !5
  %994 = icmp ne ptr %993, null
  br i1 %994, label %995, label %998

995:                                              ; preds = %992
  %996 = load ptr, ptr %19, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %996, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %997)
  br label %998

998:                                              ; preds = %995, %992
  %999 = load ptr, ptr %18, align 8, !tbaa !5
  %1000 = icmp ne ptr %999, null
  br i1 %1000, label %1001, label %1004

1001:                                             ; preds = %998
  %1002 = load ptr, ptr %18, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %1002, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1003)
  br label %1004

1004:                                             ; preds = %1001, %998
  %1005 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %1005)
  store i32 0, ptr %7, align 4
  store i32 1, ptr %29, align 4
  br label %1006

1006:                                             ; preds = %1004, %940, %863
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  br label %1007

1007:                                             ; preds = %1006, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  br label %1008

1008:                                             ; preds = %1007, %636
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  br label %1009

1009:                                             ; preds = %1008, %554
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  br label %1010

1010:                                             ; preds = %1009, %466
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  br label %1011

1011:                                             ; preds = %1010, %396, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  br label %1012

1012:                                             ; preds = %1011, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  br label %1013

1013:                                             ; preds = %1012, %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 24, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #3
  %1014 = load i32, ptr %7, align 4
  ret i32 %1014
}

declare ptr @Longtail_CreateShareBlockStoreAPI(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 = !{!28, !6, i64 8}
!28 = !{!"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}
!29 = !{!7, !7, i64 0}
!30 = !{!28, !6, i64 16}
!31 = !{!28, !6, i64 72}
!32 = !{!28, !6, i64 32}
!33 = !{!17, !17, i64 0}
!34 = !{!28, !6, i64 24}
!35 = !{!28, !6, i64 40}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!28, !6, i64 64}
!39 = !{!28, !6, i64 56}
!40 = !{!41, !41, i64 0}
!41 = !{!"short", !7, i64 0}


; 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 }

@.str.52 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [24 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.81 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [12 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.94 = external hidden unnamed_addr constant [85 x i8], align 1
@__func__.VersionIndex_cp = external hidden unnamed_addr constant [16 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [55 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 ptr @Longtail_Alloc(ptr noundef, i64 noundef) local_unnamed_addr #1

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

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

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 ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef, ptr 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: nounwind uwtable
declare hidden i32 @SyncGetExistingContent(ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @VersionIndex_cp(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5) local_unnamed_addr #2 {
  %7 = alloca [6 x %struct.Longtail_LogFieldFmt_Private], align 16
  %8 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i16, align 2
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %7) #4
  store ptr @.str.52, ptr %7, align 16, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr @.str.53, ptr %16, align 8, !tbaa !10
  %17 = getelementptr inbounds i8, ptr %7, i64 16
  store ptr %0, ptr %17, align 16, !tbaa !11
  %18 = getelementptr inbounds i8, ptr %7, i64 24
  store ptr @.str.92, ptr %18, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %7, i64 32
  store ptr @.str.53, ptr %19, align 16, !tbaa !10
  %20 = getelementptr inbounds i8, ptr %7, i64 40
  store ptr %1, ptr %20, align 8, !tbaa !11
  %21 = getelementptr inbounds i8, ptr %7, i64 48
  store ptr @.str.81, ptr %21, align 16, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %7, i64 56
  store ptr @.str.53, ptr %22, align 8, !tbaa !10
  %23 = getelementptr inbounds i8, ptr %7, i64 64
  store ptr %2, ptr %23, align 16, !tbaa !11
  %24 = getelementptr inbounds i8, ptr %7, i64 72
  store ptr @.str.54, ptr %24, align 8, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %7, i64 80
  store ptr @.str.53, ptr %25, align 16, !tbaa !10
  %26 = getelementptr inbounds i8, ptr %7, i64 88
  store ptr %3, ptr %26, align 8, !tbaa !11
  %27 = getelementptr inbounds i8, ptr %7, i64 96
  store ptr @.str.82, ptr %27, align 16, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %7, i64 104
  store ptr @.str.53, ptr %28, align 8, !tbaa !10
  %29 = getelementptr inbounds i8, ptr %7, i64 112
  store ptr %4, ptr %29, align 16, !tbaa !11
  %30 = getelementptr inbounds i8, ptr %7, i64 120
  store ptr @.str.67, ptr %30, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %7, i64 128
  store ptr @.str.66, ptr %31, align 16, !tbaa !10
  %32 = getelementptr inbounds i8, ptr %7, i64 136
  %33 = sext i32 %5 to i64
  %34 = inttoptr i64 %33 to ptr
  store ptr %34, ptr %32, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #4
  store ptr null, ptr %8, align 8, !tbaa !12
  %35 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr %7, ptr %35, align 8, !tbaa !15
  %36 = getelementptr inbounds i8, ptr %8, i64 16
  store i64 6, ptr %36, align 8, !tbaa !16
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1825, ptr noundef nonnull %8, i32 noundef 0, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.71) #4
  %37 = call ptr @NormalizePath(ptr noundef %0)
  %38 = call i32 (...) @Longtail_GetCPUCount() #4
  %39 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %38, i32 noundef 0) #4
  %40 = call ptr (...) @Longtail_CreateFullHashRegistry() #4
  %41 = call ptr (...) @Longtail_CreateFullCompressionRegistry() #4
  %42 = call ptr (...) @Longtail_CreateFSStorageAPI() #4
  %43 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %39, ptr noundef %42, ptr noundef %37, ptr noundef null, i32 noundef %5) #4
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %47, label %44

44:                                               ; preds = %6
  %45 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %39, ptr noundef %42, ptr noundef nonnull %2, ptr noundef null, i32 noundef %5) #4
  %46 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %39, ptr noundef %45, ptr noundef %43) #4
  br label %47

47:                                               ; preds = %6, %44
  %.sink = phi ptr [ %46, %44 ], [ %43, %6 ]
  %.0352 = phi ptr [ %46, %44 ], [ null, %6 ]
  %.0351 = phi ptr [ %45, %44 ], [ null, %6 ]
  %48 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %.sink, ptr noundef %41) #4
  %49 = call ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  store ptr null, ptr %9, align 8, !tbaa !17
  %50 = call i32 @Longtail_ReadVersionIndex(ptr noundef %42, ptr noundef %1, ptr noundef nonnull %9) #4
  %.not435 = icmp eq i32 %50, 0
  br i1 %.not435, label %70, label %51

51:                                               ; preds = %47
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1854, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.72, ptr noundef %1, i32 noundef %50) #4
  %.not531 = icmp eq ptr %49, null
  br i1 %.not531, label %53, label %52

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

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

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

55:                                               ; preds = %54, %53
  %.not533 = icmp eq ptr %.0352, null
  br i1 %.not533, label %57, label %56

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

57:                                               ; preds = %56, %55
  %.not534 = icmp eq ptr %.0351, null
  br i1 %.not534, label %59, label %58

58:                                               ; preds = %57
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %59

59:                                               ; preds = %58, %57
  %.not535 = icmp eq ptr %43, null
  br i1 %.not535, label %61, label %60

60:                                               ; preds = %59
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %61

61:                                               ; preds = %60, %59
  %.not536 = icmp eq ptr %42, null
  br i1 %.not536, label %63, label %62

62:                                               ; preds = %61
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %63

63:                                               ; preds = %62, %61
  %.not537 = icmp eq ptr %41, null
  br i1 %.not537, label %65, label %64

64:                                               ; preds = %63
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %65

65:                                               ; preds = %64, %63
  %.not538 = icmp eq ptr %40, null
  br i1 %.not538, label %67, label %66

66:                                               ; preds = %65
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  br label %67

67:                                               ; preds = %66, %65
  %.not539 = icmp eq ptr %39, null
  br i1 %.not539, label %69, label %68

68:                                               ; preds = %67
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %69

69:                                               ; preds = %68, %67
  call void @Longtail_Free(ptr noundef %37) #4
  br label %313

70:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  %71 = getelementptr inbounds i8, ptr %40, i64 8
  %72 = load ptr, ptr %71, align 8, !tbaa !18
  %73 = load ptr, ptr %9, align 8, !tbaa !17
  %74 = getelementptr inbounds i8, ptr %73, i64 8
  %75 = load ptr, ptr %74, align 8, !tbaa !21
  %76 = load i32, ptr %75, align 4, !tbaa !24
  %77 = call i32 %72(ptr noundef %40, i32 noundef %76, ptr noundef nonnull %10) #4
  %.not436 = icmp eq i32 %77, 0
  br i1 %.not436, label %95, label %78

78:                                               ; preds = %70
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1872, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.93, ptr noundef %1, i32 noundef %77) #4
  %.not522 = icmp eq ptr %49, null
  br i1 %.not522, label %80, label %79

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

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

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

82:                                               ; preds = %81, %80
  %.not524 = icmp eq ptr %.0352, null
  br i1 %.not524, label %84, label %83

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

84:                                               ; preds = %83, %82
  %.not525 = icmp eq ptr %.0351, null
  br i1 %.not525, label %86, label %85

85:                                               ; preds = %84
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %86

86:                                               ; preds = %85, %84
  %.not526 = icmp eq ptr %43, null
  br i1 %.not526, label %88, label %87

87:                                               ; preds = %86
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %88

88:                                               ; preds = %87, %86
  %.not527 = icmp eq ptr %42, null
  br i1 %.not527, label %90, label %89

89:                                               ; preds = %88
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %90

90:                                               ; preds = %89, %88
  %.not528 = icmp eq ptr %41, null
  br i1 %.not528, label %92, label %91

91:                                               ; preds = %90
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %92

92:                                               ; preds = %91, %90
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not530 = icmp eq ptr %39, null
  br i1 %.not530, label %94, label %93

93:                                               ; preds = %92
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %94

94:                                               ; preds = %93, %92
  call void @Longtail_Free(ptr noundef %37) #4
  br label %312

95:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  %96 = load ptr, ptr %9, align 8, !tbaa !17
  %97 = getelementptr inbounds i8, ptr %96, i64 32
  %98 = load ptr, ptr %97, align 8, !tbaa !25
  %99 = load i32, ptr %98, align 4, !tbaa !24
  %100 = getelementptr inbounds i8, ptr %96, i64 96
  %101 = load ptr, ptr %100, align 8, !tbaa !26
  %102 = call i32 @SyncGetExistingContent(ptr noundef %49, i32 noundef %99, ptr noundef %101, i32 noundef 0, ptr noundef nonnull %11)
  %.not437 = icmp eq i32 %102, 0
  br i1 %.not437, label %120, label %103

103:                                              ; preds = %95
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1895, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.94, ptr noundef %0, ptr noundef %1, i32 noundef %102) #4
  %.not513 = icmp eq ptr %49, null
  br i1 %.not513, label %105, label %104

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

105:                                              ; preds = %104, %103
  %.not514 = icmp eq ptr %48, null
  br i1 %.not514, label %107, label %106

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

107:                                              ; preds = %106, %105
  %.not515 = icmp eq ptr %.0352, null
  br i1 %.not515, label %109, label %108

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

109:                                              ; preds = %108, %107
  %.not516 = icmp eq ptr %.0351, null
  br i1 %.not516, label %111, label %110

110:                                              ; preds = %109
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %111

111:                                              ; preds = %110, %109
  %.not517 = icmp eq ptr %43, null
  br i1 %.not517, label %113, label %112

112:                                              ; preds = %111
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %113

113:                                              ; preds = %112, %111
  %.not518 = icmp eq ptr %42, null
  br i1 %.not518, label %115, label %114

114:                                              ; preds = %113
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %115

115:                                              ; preds = %114, %113
  %.not519 = icmp eq ptr %41, null
  br i1 %.not519, label %117, label %116

116:                                              ; preds = %115
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %117

117:                                              ; preds = %116, %115
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not521 = icmp eq ptr %39, null
  br i1 %.not521, label %119, label %118

118:                                              ; preds = %117
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %119

119:                                              ; preds = %118, %117
  call void @Longtail_Free(ptr noundef %37) #4
  br label %311

120:                                              ; preds = %95
  %121 = load ptr, ptr %11, align 8, !tbaa !17
  %122 = load ptr, ptr %9, align 8, !tbaa !17
  %123 = call i32 @Longtail_ValidateStore(ptr noundef %121, ptr noundef %122) #4
  %.not438 = icmp eq i32 %123, 0
  br i1 %.not438, label %142, label %124

124:                                              ; preds = %120
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1912, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.101, ptr noundef %0, ptr noundef %3, i32 noundef %123) #4
  %125 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %125) #4
  %.not504 = icmp eq ptr %49, null
  br i1 %.not504, label %127, label %126

126:                                              ; preds = %124
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %127

127:                                              ; preds = %126, %124
  %.not505 = icmp eq ptr %48, null
  br i1 %.not505, label %129, label %128

128:                                              ; preds = %127
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %129

129:                                              ; preds = %128, %127
  %.not506 = icmp eq ptr %.0352, null
  br i1 %.not506, label %131, label %130

130:                                              ; preds = %129
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %131

131:                                              ; preds = %130, %129
  %.not507 = icmp eq ptr %.0351, null
  br i1 %.not507, label %133, label %132

132:                                              ; preds = %131
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %133

133:                                              ; preds = %132, %131
  %.not508 = icmp eq ptr %43, null
  br i1 %.not508, label %135, label %134

134:                                              ; preds = %133
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %135

135:                                              ; preds = %134, %133
  %.not509 = icmp eq ptr %42, null
  br i1 %.not509, label %137, label %136

136:                                              ; preds = %135
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %137

137:                                              ; preds = %136, %135
  %.not510 = icmp eq ptr %41, null
  br i1 %.not510, label %139, label %138

138:                                              ; preds = %137
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %139

139:                                              ; preds = %138, %137
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not512 = icmp eq ptr %39, null
  br i1 %.not512, label %141, label %140

140:                                              ; preds = %139
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %141

141:                                              ; preds = %140, %139
  call void @Longtail_Free(ptr noundef %37) #4
  br label %311

142:                                              ; preds = %120
  %143 = load ptr, ptr %10, align 8, !tbaa !17
  %144 = load ptr, ptr %11, align 8, !tbaa !17
  %145 = load ptr, ptr %9, align 8, !tbaa !17
  %146 = call ptr @Longtail_CreateBlockStoreStorageAPI(ptr noundef %143, ptr noundef %39, ptr noundef %49, ptr noundef %144, ptr noundef %145) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  %147 = getelementptr inbounds i8, ptr %146, i64 8
  %148 = load ptr, ptr %147, align 8, !tbaa !27
  %149 = load i8, ptr %3, align 1, !tbaa !29
  %150 = icmp eq i8 %149, 46
  %151 = getelementptr inbounds i8, ptr %3, i64 1
  %152 = select i1 %150, ptr %151, ptr %3
  %153 = call i32 %148(ptr noundef %146, ptr noundef nonnull %152, ptr noundef nonnull %12) #4
  %.not439 = icmp eq i32 %153, 0
  br i1 %.not439, label %172, label %154

154:                                              ; preds = %142
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1954, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.102, ptr noundef nonnull %3, ptr noundef %1, i32 noundef %153) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %155 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %155) #4
  %.not495 = icmp eq ptr %49, null
  br i1 %.not495, label %157, label %156

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

157:                                              ; preds = %156, %154
  %.not496 = icmp eq ptr %48, null
  br i1 %.not496, label %159, label %158

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

159:                                              ; preds = %158, %157
  %.not497 = icmp eq ptr %.0352, null
  br i1 %.not497, label %161, label %160

160:                                              ; preds = %159
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %161

161:                                              ; preds = %160, %159
  %.not498 = icmp eq ptr %.0351, null
  br i1 %.not498, label %163, label %162

162:                                              ; preds = %161
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %163

163:                                              ; preds = %162, %161
  %.not499 = icmp eq ptr %43, null
  br i1 %.not499, label %165, label %164

164:                                              ; preds = %163
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %165

165:                                              ; preds = %164, %163
  %.not500 = icmp eq ptr %42, null
  br i1 %.not500, label %167, label %166

166:                                              ; preds = %165
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %167

167:                                              ; preds = %166, %165
  %.not501 = icmp eq ptr %41, null
  br i1 %.not501, label %169, label %168

168:                                              ; preds = %167
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %169

169:                                              ; preds = %168, %167
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not503 = icmp eq ptr %39, null
  br i1 %.not503, label %171, label %170

170:                                              ; preds = %169
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %171

171:                                              ; preds = %170, %169
  call void @Longtail_Free(ptr noundef %37) #4
  br label %310

172:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  %173 = getelementptr inbounds i8, ptr %146, i64 16
  %174 = load ptr, ptr %173, align 8, !tbaa !30
  %175 = load ptr, ptr %12, align 8, !tbaa !17
  %176 = call i32 %174(ptr noundef nonnull %146, ptr noundef %175, ptr noundef nonnull %13) #4
  %.not440 = icmp eq i32 %176, 0
  br i1 %.not440, label %198, label %177

177:                                              ; preds = %172
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1973, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.103, ptr noundef nonnull %3, ptr noundef %1, i32 noundef %176) #4
  %178 = getelementptr inbounds i8, ptr %146, i64 72
  %179 = load ptr, ptr %178, align 8, !tbaa !31
  %180 = load ptr, ptr %12, align 8, !tbaa !17
  call void %179(ptr noundef nonnull %146, ptr noundef %180) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %181 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %181) #4
  %.not485 = icmp eq ptr %49, null
  br i1 %.not485, label %183, label %182

182:                                              ; preds = %177
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %183

183:                                              ; preds = %182, %177
  %.not486 = icmp eq ptr %48, null
  br i1 %.not486, label %185, label %184

184:                                              ; preds = %183
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %185

185:                                              ; preds = %184, %183
  %.not487 = icmp eq ptr %.0352, null
  br i1 %.not487, label %187, label %186

186:                                              ; preds = %185
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %187

187:                                              ; preds = %186, %185
  %.not488 = icmp eq ptr %.0351, null
  br i1 %.not488, label %189, label %188

188:                                              ; preds = %187
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %189

189:                                              ; preds = %188, %187
  %.not489 = icmp eq ptr %43, null
  br i1 %.not489, label %191, label %190

190:                                              ; preds = %189
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %191

191:                                              ; preds = %190, %189
  %.not490 = icmp eq ptr %42, null
  br i1 %.not490, label %193, label %192

192:                                              ; preds = %191
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  br label %193

193:                                              ; preds = %192, %191
  %.not491 = icmp eq ptr %41, null
  br i1 %.not491, label %195, label %194

194:                                              ; preds = %193
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %195

195:                                              ; preds = %194, %193
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not493 = icmp eq ptr %39, null
  br i1 %.not493, label %197, label %196

196:                                              ; preds = %195
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %197

197:                                              ; preds = %196, %195
  call void @Longtail_Free(ptr noundef %37) #4
  br label %309

198:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  %199 = getelementptr inbounds i8, ptr %42, i64 32
  %200 = load ptr, ptr %199, align 8, !tbaa !32
  %201 = load i64, ptr %13, align 8, !tbaa !33
  %202 = call i32 %200(ptr noundef %42, ptr noundef %4, i64 noundef %201, ptr noundef nonnull %14) #4
  %.not441 = icmp eq i32 %202, 0
  br i1 %.not441, label %222, label %203

203:                                              ; preds = %198
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 1993, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.104, ptr noundef %4, i32 noundef %202) #4
  %204 = getelementptr inbounds i8, ptr %146, i64 72
  %205 = load ptr, ptr %204, align 8, !tbaa !31
  %206 = load ptr, ptr %12, align 8, !tbaa !17
  call void %205(ptr noundef nonnull %146, ptr noundef %206) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %207 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %207) #4
  %.not475 = icmp eq ptr %49, null
  br i1 %.not475, label %209, label %208

208:                                              ; preds = %203
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %209

209:                                              ; preds = %208, %203
  %.not476 = icmp eq ptr %48, null
  br i1 %.not476, label %211, label %210

210:                                              ; preds = %209
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %211

211:                                              ; preds = %210, %209
  %.not477 = icmp eq ptr %.0352, null
  br i1 %.not477, label %213, label %212

212:                                              ; preds = %211
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %213

213:                                              ; preds = %212, %211
  %.not478 = icmp eq ptr %.0351, null
  br i1 %.not478, label %215, label %214

214:                                              ; preds = %213
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %215

215:                                              ; preds = %214, %213
  %.not479 = icmp eq ptr %43, null
  br i1 %.not479, label %217, label %216

216:                                              ; preds = %215
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %217

217:                                              ; preds = %216, %215
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  %.not481 = icmp eq ptr %41, null
  br i1 %.not481, label %219, label %218

218:                                              ; preds = %217
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %219

219:                                              ; preds = %218, %217
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  %.not483 = icmp eq ptr %39, null
  br i1 %.not483, label %221, label %220

220:                                              ; preds = %219
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %221

221:                                              ; preds = %220, %219
  call void @Longtail_Free(ptr noundef %37) #4
  br label %308

222:                                              ; preds = %198
  %223 = load i64, ptr %13, align 8
  %224 = call i64 @llvm.umin.i64(i64 %223, i64 134217728)
  %225 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %224) #4
  %226 = load i64, ptr %13, align 8
  %.not541 = icmp eq i64 %226, 0
  br i1 %.not541, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %222
  %227 = getelementptr inbounds i8, ptr %146, i64 24
  %228 = getelementptr inbounds i8, ptr %42, i64 40
  br label %229

229:                                              ; preds = %.lr.ph, %229
  %230 = phi i64 [ %226, %.lr.ph ], [ %240, %229 ]
  %.0350540 = phi i64 [ 0, %.lr.ph ], [ %239, %229 ]
  %231 = sub i64 %230, %.0350540
  %232 = call i64 @llvm.umin.i64(i64 %231, i64 134217728)
  %233 = load ptr, ptr %227, align 8, !tbaa !34
  %234 = load ptr, ptr %12, align 8, !tbaa !17
  %235 = call i32 %233(ptr noundef nonnull %146, ptr noundef %234, i64 noundef %.0350540, i64 noundef %232, ptr noundef %225) #4
  %236 = load ptr, ptr %228, align 8, !tbaa !35
  %237 = load ptr, ptr %14, align 8, !tbaa !17
  %238 = call i32 %236(ptr noundef nonnull %42, ptr noundef %237, i64 noundef %.0350540, i64 noundef %232, ptr noundef %225) #4
  %239 = add i64 %232, %.0350540
  %240 = load i64, ptr %13, align 8
  %241 = icmp ugt i64 %240, %239
  br i1 %241, label %229, label %._crit_edge, !llvm.loop !36

._crit_edge:                                      ; preds = %229, %222
  call void @Longtail_Free(ptr noundef %225) #4
  %242 = getelementptr inbounds i8, ptr %42, i64 72
  %243 = load ptr, ptr %242, align 8, !tbaa !31
  %244 = load ptr, ptr %14, align 8, !tbaa !17
  call void %243(ptr noundef nonnull %42, ptr noundef %244) #4
  %245 = getelementptr inbounds i8, ptr %146, i64 72
  %246 = load ptr, ptr %245, align 8, !tbaa !31
  %247 = load ptr, ptr %12, align 8, !tbaa !17
  call void %246(ptr noundef nonnull %146, ptr noundef %247) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %15) #4
  %248 = getelementptr inbounds i8, ptr %146, i64 64
  %249 = load ptr, ptr %248, align 8, !tbaa !38
  %250 = load i8, ptr %3, align 1, !tbaa !29
  %251 = icmp eq i8 %250, 46
  %252 = select i1 %251, ptr %151, ptr %3
  %253 = call i32 %249(ptr noundef nonnull %146, ptr noundef nonnull %252, ptr noundef nonnull %15) #4
  %.not442 = icmp eq i32 %253, 0
  br i1 %.not442, label %270, label %254

254:                                              ; preds = %._crit_edge
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 2029, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.105, ptr noundef nonnull %3, ptr noundef %1, i32 noundef %253) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %255 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %255) #4
  %.not465 = icmp eq ptr %49, null
  br i1 %.not465, label %257, label %256

256:                                              ; preds = %254
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %257

257:                                              ; preds = %256, %254
  %.not466 = icmp eq ptr %48, null
  br i1 %.not466, label %259, label %258

258:                                              ; preds = %257
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %259

259:                                              ; preds = %258, %257
  %.not467 = icmp eq ptr %.0352, null
  br i1 %.not467, label %261, label %260

260:                                              ; preds = %259
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %261

261:                                              ; preds = %260, %259
  %.not468 = icmp eq ptr %.0351, null
  br i1 %.not468, label %263, label %262

262:                                              ; preds = %261
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %263

263:                                              ; preds = %262, %261
  %.not469 = icmp eq ptr %43, null
  br i1 %.not469, label %265, label %264

264:                                              ; preds = %263
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %265

265:                                              ; preds = %264, %263
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  %.not471 = icmp eq ptr %41, null
  br i1 %.not471, label %267, label %266

266:                                              ; preds = %265
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %267

267:                                              ; preds = %266, %265
  %.not472 = icmp eq ptr %40, null
  br i1 %.not472, label %269, label %268

268:                                              ; preds = %267
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  br label %269

269:                                              ; preds = %268, %267
  %.not473 = icmp eq ptr %39, null
  br i1 %.not473, label %307, label %.sink.split

270:                                              ; preds = %._crit_edge
  %271 = getelementptr inbounds i8, ptr %42, i64 56
  %272 = load ptr, ptr %271, align 8, !tbaa !39
  %273 = load i16, ptr %15, align 2, !tbaa !40
  %274 = call i32 %272(ptr noundef nonnull %42, ptr noundef %4, i16 noundef zeroext %273) #4
  %.not443 = icmp eq i32 %274, 0
  br i1 %.not443, label %291, label %275

275:                                              ; preds = %270
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.VersionIndex_cp, i32 noundef 2048, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.106, ptr noundef %4, i32 noundef %274) #4
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %276 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %276) #4
  %.not455 = icmp eq ptr %49, null
  br i1 %.not455, label %278, label %277

277:                                              ; preds = %275
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %278

278:                                              ; preds = %277, %275
  %.not456 = icmp eq ptr %48, null
  br i1 %.not456, label %280, label %279

279:                                              ; preds = %278
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %280

280:                                              ; preds = %279, %278
  %.not457 = icmp eq ptr %.0352, null
  br i1 %.not457, label %282, label %281

281:                                              ; preds = %280
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %282

282:                                              ; preds = %281, %280
  %.not458 = icmp eq ptr %.0351, null
  br i1 %.not458, label %284, label %283

283:                                              ; preds = %282
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %284

284:                                              ; preds = %283, %282
  %.not459 = icmp eq ptr %43, null
  br i1 %.not459, label %286, label %285

285:                                              ; preds = %284
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %286

286:                                              ; preds = %285, %284
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  %.not461 = icmp eq ptr %41, null
  br i1 %.not461, label %288, label %287

287:                                              ; preds = %286
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %288

288:                                              ; preds = %287, %286
  %.not462 = icmp eq ptr %40, null
  br i1 %.not462, label %290, label %289

289:                                              ; preds = %288
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  br label %290

290:                                              ; preds = %289, %288
  %.not463 = icmp eq ptr %39, null
  br i1 %.not463, label %307, label %.sink.split

291:                                              ; preds = %270
  call void @Longtail_DisposeAPI(ptr noundef nonnull %146) #4
  %292 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %292) #4
  %.not445 = icmp eq ptr %49, null
  br i1 %.not445, label %294, label %293

293:                                              ; preds = %291
  call void @Longtail_DisposeAPI(ptr noundef nonnull %49) #4
  br label %294

294:                                              ; preds = %293, %291
  %.not446 = icmp eq ptr %48, null
  br i1 %.not446, label %296, label %295

295:                                              ; preds = %294
  call void @Longtail_DisposeAPI(ptr noundef nonnull %48) #4
  br label %296

296:                                              ; preds = %295, %294
  %.not447 = icmp eq ptr %.0352, null
  br i1 %.not447, label %298, label %297

297:                                              ; preds = %296
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0352) #4
  br label %298

298:                                              ; preds = %297, %296
  %.not448 = icmp eq ptr %.0351, null
  br i1 %.not448, label %300, label %299

299:                                              ; preds = %298
  call void @Longtail_DisposeAPI(ptr noundef nonnull %.0351) #4
  br label %300

300:                                              ; preds = %299, %298
  %.not449 = icmp eq ptr %43, null
  br i1 %.not449, label %302, label %301

301:                                              ; preds = %300
  call void @Longtail_DisposeAPI(ptr noundef nonnull %43) #4
  br label %302

302:                                              ; preds = %301, %300
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42) #4
  %.not451 = icmp eq ptr %41, null
  br i1 %.not451, label %304, label %303

303:                                              ; preds = %302
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41) #4
  br label %304

304:                                              ; preds = %303, %302
  %.not452 = icmp eq ptr %40, null
  br i1 %.not452, label %306, label %305

305:                                              ; preds = %304
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40) #4
  br label %306

306:                                              ; preds = %305, %304
  %.not453 = icmp eq ptr %39, null
  br i1 %.not453, label %307, label %.sink.split

.sink.split:                                      ; preds = %306, %290, %269
  %.0.ph = phi i32 [ %253, %269 ], [ %274, %290 ], [ 0, %306 ]
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39) #4
  br label %307

307:                                              ; preds = %.sink.split, %306, %290, %269
  %.0 = phi i32 [ %253, %269 ], [ %274, %290 ], [ 0, %306 ], [ %.0.ph, %.sink.split ]
  call void @Longtail_Free(ptr noundef %37) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %15) #4
  br label %308

308:                                              ; preds = %307, %221
  %.1 = phi i32 [ %202, %221 ], [ %.0, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  br label %309

309:                                              ; preds = %308, %197
  %.2 = phi i32 [ %176, %197 ], [ %.1, %308 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  br label %310

310:                                              ; preds = %309, %171
  %.3 = phi i32 [ %153, %171 ], [ %.2, %309 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  br label %311

311:                                              ; preds = %310, %141, %119
  %.5 = phi i32 [ %102, %119 ], [ %123, %141 ], [ %.3, %310 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  br label %312

312:                                              ; preds = %311, %94
  %.6 = phi i32 [ %77, %94 ], [ %.5, %311 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  br label %313

313:                                              ; preds = %312, %69
  %.7 = phi i32 [ %50, %69 ], [ %.6, %312 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #4
  ret i32 %.7
}

declare ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef) local_unnamed_addr #1

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!28, !7, i64 8}
!28 = !{!"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}
!29 = !{!8, !8, i64 0}
!30 = !{!28, !7, i64 16}
!31 = !{!28, !7, i64 72}
!32 = !{!28, !7, i64 32}
!33 = !{!14, !14, i64 0}
!34 = !{!28, !7, i64 24}
!35 = !{!28, !7, i64 40}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!28, !7, i64 64}
!39 = !{!28, !7, i64 56}
!40 = !{!41, !41, i64 0}
!41 = !{!"short", !8, i64 0}


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