; 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.SyncFlush = type { %struct.Longtail_AsyncFlushAPI, ptr, i32 }
%struct.Longtail_AsyncFlushAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }
%struct.Longtail_HashRegistryAPI = type { %struct.Longtail_API, 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_JobAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_ChunkerAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_FileInfos = type { i32, i32, ptr, ptr, ptr, ptr }
%struct.Longtail_ProgressAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_VersionIndex = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.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.58 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [25 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.73 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [12 x i8], align 1
@__func__.Pack = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [49 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

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

declare ptr @Longtail_Alloc(ptr noundef, i64 noundef) #2

declare void @Longtail_Free(ptr noundef) #2

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

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

declare ptr @Longtail_CreateFullHashRegistry(...) #2

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

declare i32 @Longtail_GetCPUCount(...) #2

declare ptr @Longtail_CreateFullCompressionRegistry(...) #2

declare ptr @Longtail_CreateFSStorageAPI(...) #2

declare ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef, ptr noundef) #2

declare void @Longtail_DisposeAPI(ptr noundef) #2

declare ptr @Longtail_CreateHPCDCChunkerAPI(...) #2

declare i32 @Longtail_GetFilesRecursively2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @Longtail_CreateVersionIndex(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #2

declare i32 @Longtail_WriteContent(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

; Function Attrs: nounwind uwtable
declare dso_local void @SyncFlush_Wait(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @SyncFlush_Init(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @Pack(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #1 {
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca [10 x %struct.Longtail_LogFieldFmt_Private], align 16
  %23 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %struct.SyncFlush, align 8
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store i32 %2, ptr %14, align 4, !tbaa !9
  store i32 %3, ptr %15, align 4, !tbaa !9
  store i32 %4, ptr %16, align 4, !tbaa !9
  store i32 %5, ptr %17, align 4, !tbaa !9
  store i32 %6, ptr %18, align 4, !tbaa !9
  store i32 %7, ptr %19, align 4, !tbaa !9
  store i32 %8, ptr %20, align 4, !tbaa !9
  store i32 %9, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 240, ptr %22) #3
  %44 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i32 0, i32 0
  store ptr @.str.54, ptr %44, align 8, !tbaa !11
  %45 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i32 0, i32 1
  store ptr @.str.53, ptr %45, align 8, !tbaa !13
  %46 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i32 0, i32 2
  %47 = load ptr, ptr %12, align 8, !tbaa !5
  %48 = ptrtoint ptr %47 to i64
  %49 = inttoptr i64 %48 to ptr
  store ptr %49, ptr %46, align 8, !tbaa !14
  %50 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 1
  %51 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %50, i32 0, i32 0
  store ptr @.str.82, ptr %51, align 8, !tbaa !11
  %52 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %50, i32 0, i32 1
  store ptr @.str.53, ptr %52, align 8, !tbaa !13
  %53 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %50, i32 0, i32 2
  %54 = load ptr, ptr %13, align 8, !tbaa !5
  %55 = ptrtoint ptr %54 to i64
  %56 = inttoptr i64 %55 to ptr
  store ptr %56, ptr %53, align 8, !tbaa !14
  %57 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 2
  %58 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %57, i32 0, i32 0
  store ptr @.str.58, ptr %58, align 8, !tbaa !11
  %59 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %57, i32 0, i32 1
  store ptr @.str.59, ptr %59, align 8, !tbaa !13
  %60 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %57, i32 0, i32 2
  %61 = load i32, ptr %14, align 4, !tbaa !9
  %62 = zext i32 %61 to i64
  %63 = inttoptr i64 %62 to ptr
  store ptr %63, ptr %60, align 8, !tbaa !14
  %64 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 3
  %65 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %64, i32 0, i32 0
  store ptr @.str.60, ptr %65, align 8, !tbaa !11
  %66 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %64, i32 0, i32 1
  store ptr @.str.59, ptr %66, align 8, !tbaa !13
  %67 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %64, i32 0, i32 2
  %68 = load i32, ptr %15, align 4, !tbaa !9
  %69 = zext i32 %68 to i64
  %70 = inttoptr i64 %69 to ptr
  store ptr %70, ptr %67, align 8, !tbaa !14
  %71 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 4
  %72 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %71, i32 0, i32 0
  store ptr @.str.61, ptr %72, align 8, !tbaa !11
  %73 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %71, i32 0, i32 1
  store ptr @.str.59, ptr %73, align 8, !tbaa !13
  %74 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %71, i32 0, i32 2
  %75 = load i32, ptr %16, align 4, !tbaa !9
  %76 = zext i32 %75 to i64
  %77 = inttoptr i64 %76 to ptr
  store ptr %77, ptr %74, align 8, !tbaa !14
  %78 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 5
  %79 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %78, i32 0, i32 0
  store ptr @.str.62, ptr %79, align 8, !tbaa !11
  %80 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %78, i32 0, i32 1
  store ptr @.str.59, ptr %80, align 8, !tbaa !13
  %81 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %78, i32 0, i32 2
  %82 = load i32, ptr %17, align 4, !tbaa !9
  %83 = zext i32 %82 to i64
  %84 = inttoptr i64 %83 to ptr
  store ptr %84, ptr %81, align 8, !tbaa !14
  %85 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 6
  %86 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %85, i32 0, i32 0
  store ptr @.str.63, ptr %86, align 8, !tbaa !11
  %87 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %85, i32 0, i32 1
  store ptr @.str.59, ptr %87, align 8, !tbaa !13
  %88 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %85, i32 0, i32 2
  %89 = load i32, ptr %18, align 4, !tbaa !9
  %90 = zext i32 %89 to i64
  %91 = inttoptr i64 %90 to ptr
  store ptr %91, ptr %88, align 8, !tbaa !14
  %92 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 7
  %93 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %92, i32 0, i32 0
  store ptr @.str.64, ptr %93, align 8, !tbaa !11
  %94 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %92, i32 0, i32 1
  store ptr @.str.59, ptr %94, align 8, !tbaa !13
  %95 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %92, i32 0, i32 2
  %96 = load i32, ptr %19, align 4, !tbaa !9
  %97 = zext i32 %96 to i64
  %98 = inttoptr i64 %97 to ptr
  store ptr %98, ptr %95, align 8, !tbaa !14
  %99 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 8
  %100 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %99, i32 0, i32 0
  store ptr @.str.65, ptr %100, align 8, !tbaa !11
  %101 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %99, i32 0, i32 1
  store ptr @.str.66, ptr %101, align 8, !tbaa !13
  %102 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %99, i32 0, i32 2
  %103 = load i32, ptr %20, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = inttoptr i64 %104 to ptr
  store ptr %105, ptr %102, align 8, !tbaa !14
  %106 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %22, i64 9
  %107 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %106, i32 0, i32 0
  store ptr @.str.68, ptr %107, align 8, !tbaa !11
  %108 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %106, i32 0, i32 1
  store ptr @.str.66, ptr %108, align 8, !tbaa !13
  %109 = getelementptr inbounds %struct.Longtail_LogFieldFmt_Private, ptr %106, i32 0, i32 2
  %110 = load i32, ptr %21, align 4, !tbaa !9
  %111 = sext i32 %110 to i64
  %112 = inttoptr i64 %111 to ptr
  store ptr %112, ptr %109, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #3
  %113 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %23, i32 0, i32 0
  store ptr null, ptr %113, align 8, !tbaa !15
  %114 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %23, i32 0, i32 1
  %115 = getelementptr inbounds [10 x %struct.Longtail_LogFieldFmt_Private], ptr %22, i64 0, i64 0
  store ptr %115, ptr %114, align 8, !tbaa !18
  %116 = getelementptr inbounds %struct.Longtail_LogContextFmt_Private, ptr %23, i32 0, i32 2
  store i64 10, ptr %116, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  store ptr %23, ptr %24, align 8, !tbaa !5
  %117 = load ptr, ptr %24, align 8, !tbaa !5
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2139, ptr noundef %117, i32 noundef 0, ptr noundef @.str.70, ptr noundef @.str.71)
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %118 = call ptr (...) @Longtail_CreateFullHashRegistry()
  store ptr %118, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  %119 = call i32 (...) @Longtail_GetCPUCount()
  %120 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %119, i32 noundef 0)
  store ptr %120, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  %121 = call ptr (...) @Longtail_CreateFullCompressionRegistry()
  store ptr %121, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  %122 = call ptr (...) @Longtail_CreateFSStorageAPI()
  store ptr %122, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %123 = load ptr, ptr %25, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %123, i32 0, i32 1
  %125 = load ptr, ptr %124, align 8, !tbaa !20
  %126 = load ptr, ptr %25, align 8, !tbaa !5
  %127 = load i32, ptr %18, align 4, !tbaa !9
  %128 = call i32 %125(ptr noundef %126, i32 noundef %127, ptr noundef %29)
  store i32 %128, ptr %30, align 4, !tbaa !9
  %129 = load i32, ptr %30, align 4, !tbaa !9
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %157

131:                                              ; preds = %10
  %132 = load ptr, ptr %28, align 8, !tbaa !5
  %133 = icmp ne ptr %132, null
  br i1 %133, label %134, label %137

134:                                              ; preds = %131
  %135 = load ptr, ptr %28, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %135, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %136)
  br label %137

137:                                              ; preds = %134, %131
  %138 = load ptr, ptr %27, align 8, !tbaa !5
  %139 = icmp ne ptr %138, null
  br i1 %139, label %140, label %143

140:                                              ; preds = %137
  %141 = load ptr, ptr %27, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %141, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %142)
  br label %143

143:                                              ; preds = %140, %137
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = icmp ne ptr %144, null
  br i1 %145, label %146, label %149

146:                                              ; preds = %143
  %147 = load ptr, ptr %26, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %147, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %148)
  br label %149

149:                                              ; preds = %146, %143
  %150 = load ptr, ptr %25, align 8, !tbaa !5
  %151 = icmp ne ptr %150, null
  br i1 %151, label %152, label %155

152:                                              ; preds = %149
  %153 = load ptr, ptr %25, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %153, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %154)
  br label %155

155:                                              ; preds = %152, %149
  %156 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %156, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %724

157:                                              ; preds = %10
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  %158 = call ptr (...) @Longtail_CreateHPCDCChunkerAPI()
  store ptr %158, ptr %32, align 8, !tbaa !5
  %159 = load ptr, ptr %32, align 8, !tbaa !5
  %160 = icmp ne ptr %159, null
  br i1 %160, label %186, label %161

161:                                              ; preds = %157
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  %163 = icmp ne ptr %162, null
  br i1 %163, label %164, label %167

164:                                              ; preds = %161
  %165 = load ptr, ptr %28, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %165, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %166)
  br label %167

167:                                              ; preds = %164, %161
  %168 = load ptr, ptr %27, align 8, !tbaa !5
  %169 = icmp ne ptr %168, null
  br i1 %169, label %170, label %173

170:                                              ; preds = %167
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %171, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %172)
  br label %173

173:                                              ; preds = %170, %167
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = icmp ne ptr %174, null
  br i1 %175, label %176, label %179

176:                                              ; preds = %173
  %177 = load ptr, ptr %26, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %177, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %178)
  br label %179

179:                                              ; preds = %176, %173
  %180 = load ptr, ptr %25, align 8, !tbaa !5
  %181 = icmp ne ptr %180, null
  br i1 %181, label %182, label %185

182:                                              ; preds = %179
  %183 = load ptr, ptr %25, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %183, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %184)
  br label %185

185:                                              ; preds = %182, %179
  store i32 12, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %723

186:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  store ptr null, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  %187 = load ptr, ptr %28, align 8, !tbaa !5
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  %190 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %187, ptr noundef %188, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %189, ptr noundef %34)
  store i32 %190, ptr %30, align 4, !tbaa !9
  %191 = load i32, ptr %30, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %228

193:                                              ; preds = %186
  %194 = load ptr, ptr %24, align 8, !tbaa !5
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2179, ptr noundef %194, i32 noundef 3, ptr noundef @.str.73, ptr noundef %195, i32 noundef %196)
  %197 = load ptr, ptr %32, align 8, !tbaa !5
  %198 = icmp ne ptr %197, null
  br i1 %198, label %199, label %202

199:                                              ; preds = %193
  %200 = load ptr, ptr %32, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %200, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %201)
  br label %202

202:                                              ; preds = %199, %193
  %203 = load ptr, ptr %28, align 8, !tbaa !5
  %204 = icmp ne ptr %203, null
  br i1 %204, label %205, label %208

205:                                              ; preds = %202
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %206, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %207)
  br label %208

208:                                              ; preds = %205, %202
  %209 = load ptr, ptr %27, align 8, !tbaa !5
  %210 = icmp ne ptr %209, null
  br i1 %210, label %211, label %214

211:                                              ; preds = %208
  %212 = load ptr, ptr %27, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %212, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %213)
  br label %214

214:                                              ; preds = %211, %208
  %215 = load ptr, ptr %26, align 8, !tbaa !5
  %216 = icmp ne ptr %215, null
  br i1 %216, label %217, label %220

217:                                              ; preds = %214
  %218 = load ptr, ptr %26, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %218, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %219)
  br label %220

220:                                              ; preds = %217, %214
  %221 = load ptr, ptr %25, align 8, !tbaa !5
  %222 = icmp ne ptr %221, null
  br i1 %222, label %223, label %226

223:                                              ; preds = %220
  %224 = load ptr, ptr %25, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %224, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %225)
  br label %226

226:                                              ; preds = %223, %220
  %227 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %227, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %316

228:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  %229 = load ptr, ptr %34, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %229, i32 0, i32 0
  %231 = load i32, ptr %230, align 8, !tbaa !23
  %232 = zext i32 %231 to i64
  %233 = mul i64 4, %232
  %234 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %233)
  store ptr %234, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %248, %228
  %236 = load i32, ptr %36, align 4, !tbaa !9
  %237 = load ptr, ptr %34, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %237, i32 0, i32 0
  %239 = load i32, ptr %238, align 8, !tbaa !23
  %240 = icmp ult i32 %236, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %235
  store i32 2, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  br label %251

242:                                              ; preds = %235
  %243 = load i32, ptr %19, align 4, !tbaa !9
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i32, ptr %36, align 4, !tbaa !9
  %246 = zext i32 %245 to i64
  %247 = getelementptr inbounds i32, ptr %244, i64 %246
  store i32 %243, ptr %247, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %242
  %249 = load i32, ptr %36, align 4, !tbaa !9
  %250 = add i32 %249, 1
  store i32 %250, ptr %36, align 4, !tbaa !9
  br label %235, !llvm.loop !25

251:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  %252 = call ptr @MakeProgressAPI(ptr noundef @.str.74, i32 noundef 5)
  store ptr %252, ptr %37, align 8, !tbaa !5
  %253 = load ptr, ptr %37, align 8, !tbaa !5
  %254 = icmp ne ptr %253, null
  br i1 %254, label %255, label %273

255:                                              ; preds = %251
  %256 = load ptr, ptr %28, align 8, !tbaa !5
  %257 = load ptr, ptr %29, align 8, !tbaa !5
  %258 = load ptr, ptr %32, align 8, !tbaa !5
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load ptr, ptr %37, align 8, !tbaa !5
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = load ptr, ptr %34, align 8, !tbaa !5
  %263 = load ptr, ptr %35, align 8, !tbaa !5
  %264 = load i32, ptr %14, align 4, !tbaa !9
  %265 = load i32, ptr %20, align 4, !tbaa !9
  %266 = call i32 @Longtail_CreateVersionIndex(ptr noundef %256, ptr noundef %257, ptr noundef %258, ptr noundef %259, ptr noundef %260, ptr noundef null, ptr noundef null, ptr noundef %261, ptr noundef %262, ptr noundef %263, i32 noundef %264, i32 noundef %265, ptr noundef %33)
  store i32 %266, ptr %30, align 4, !tbaa !9
  %267 = load ptr, ptr %37, align 8, !tbaa !5
  %268 = icmp ne ptr %267, null
  br i1 %268, label %269, label %272

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

272:                                              ; preds = %269, %255
  br label %274

273:                                              ; preds = %251
  store i32 12, ptr %30, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %273, %272
  %275 = load ptr, ptr %35, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %275)
  %276 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %276)
  %277 = load i32, ptr %30, align 4, !tbaa !9
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %279, label %314

279:                                              ; preds = %274
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load ptr, ptr %12, align 8, !tbaa !5
  %282 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2221, ptr noundef %280, i32 noundef 3, ptr noundef @.str.75, ptr noundef %281, i32 noundef %282)
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = icmp ne ptr %283, null
  br i1 %284, label %285, label %288

285:                                              ; preds = %279
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %286, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %287)
  br label %288

288:                                              ; preds = %285, %279
  %289 = load ptr, ptr %28, align 8, !tbaa !5
  %290 = icmp ne ptr %289, null
  br i1 %290, label %291, label %294

291:                                              ; preds = %288
  %292 = load ptr, ptr %28, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %292, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %293)
  br label %294

294:                                              ; preds = %291, %288
  %295 = load ptr, ptr %27, align 8, !tbaa !5
  %296 = icmp ne ptr %295, null
  br i1 %296, label %297, label %300

297:                                              ; preds = %294
  %298 = load ptr, ptr %27, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %298, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %299)
  br label %300

300:                                              ; preds = %297, %294
  %301 = load ptr, ptr %26, align 8, !tbaa !5
  %302 = icmp ne ptr %301, null
  br i1 %302, label %303, label %306

303:                                              ; preds = %300
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %304, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %305)
  br label %306

306:                                              ; preds = %303, %300
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = icmp ne ptr %307, null
  br i1 %308, label %309, label %312

309:                                              ; preds = %306
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %310, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %311)
  br label %312

312:                                              ; preds = %309, %306
  %313 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %313, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %315

314:                                              ; preds = %274
  store i32 0, ptr %31, align 4
  br label %315

315:                                              ; preds = %314, %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  br label %316

316:                                              ; preds = %315, %226
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  %317 = load i32, ptr %31, align 4
  switch i32 %317, label %722 [
    i32 0, label %318
  ]

318:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %319 = load ptr, ptr %29, align 8, !tbaa !5
  %320 = load ptr, ptr %33, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %320, i32 0, i32 4
  %322 = load ptr, ptr %321, align 8, !tbaa !27
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = load ptr, ptr %33, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %324, i32 0, i32 12
  %326 = load ptr, ptr %325, align 8, !tbaa !29
  %327 = load ptr, ptr %33, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %327, i32 0, i32 13
  %329 = load ptr, ptr %328, align 8, !tbaa !30
  %330 = load ptr, ptr %33, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %330, i32 0, i32 14
  %332 = load ptr, ptr %331, align 8, !tbaa !31
  %333 = load i32, ptr %15, align 4, !tbaa !9
  %334 = load i32, ptr %16, align 4, !tbaa !9
  %335 = call i32 @Longtail_CreateStoreIndex(ptr noundef %319, i32 noundef %323, ptr noundef %326, ptr noundef %329, ptr noundef %332, i32 noundef %333, i32 noundef %334, ptr noundef %38)
  store i32 %335, ptr %30, align 4, !tbaa !9
  %336 = load i32, ptr %30, align 4, !tbaa !9
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %373

338:                                              ; preds = %318
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2243, ptr noundef %339, i32 noundef 3, ptr noundef @.str.76, i32 noundef %340)
  %341 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %341)
  %342 = load ptr, ptr %32, align 8, !tbaa !5
  %343 = icmp ne ptr %342, null
  br i1 %343, label %344, label %347

344:                                              ; preds = %338
  %345 = load ptr, ptr %32, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %345, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %346)
  br label %347

347:                                              ; preds = %344, %338
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  %349 = icmp ne ptr %348, null
  br i1 %349, label %350, label %353

350:                                              ; preds = %347
  %351 = load ptr, ptr %28, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %351, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %352)
  br label %353

353:                                              ; preds = %350, %347
  %354 = load ptr, ptr %27, align 8, !tbaa !5
  %355 = icmp ne ptr %354, null
  br i1 %355, label %356, label %359

356:                                              ; preds = %353
  %357 = load ptr, ptr %27, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %357, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %358)
  br label %359

359:                                              ; preds = %356, %353
  %360 = load ptr, ptr %26, align 8, !tbaa !5
  %361 = icmp ne ptr %360, null
  br i1 %361, label %362, label %365

362:                                              ; preds = %359
  %363 = load ptr, ptr %26, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %363, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %364)
  br label %365

365:                                              ; preds = %362, %359
  %366 = load ptr, ptr %25, align 8, !tbaa !5
  %367 = icmp ne ptr %366, null
  br i1 %367, label %368, label %371

368:                                              ; preds = %365
  %369 = load ptr, ptr %25, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %369, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %370)
  br label %371

371:                                              ; preds = %368, %365
  %372 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %372, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %721

373:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  %374 = load ptr, ptr %38, align 8, !tbaa !5
  %375 = load ptr, ptr %33, align 8, !tbaa !5
  %376 = call i32 @Longtail_CreateArchiveIndex(ptr noundef %374, ptr noundef %375, ptr noundef %39)
  store i32 %376, ptr %30, align 4, !tbaa !9
  %377 = load i32, ptr %30, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %415

379:                                              ; preds = %373
  %380 = load ptr, ptr %24, align 8, !tbaa !5
  %381 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2261, ptr noundef %380, i32 noundef 3, ptr noundef @.str.107, i32 noundef %381)
  %382 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %382)
  %383 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %383)
  %384 = load ptr, ptr %32, align 8, !tbaa !5
  %385 = icmp ne ptr %384, null
  br i1 %385, label %386, label %389

386:                                              ; preds = %379
  %387 = load ptr, ptr %32, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %387, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %388)
  br label %389

389:                                              ; preds = %386, %379
  %390 = load ptr, ptr %28, align 8, !tbaa !5
  %391 = icmp ne ptr %390, null
  br i1 %391, label %392, label %395

392:                                              ; preds = %389
  %393 = load ptr, ptr %28, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %393, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %394)
  br label %395

395:                                              ; preds = %392, %389
  %396 = load ptr, ptr %27, align 8, !tbaa !5
  %397 = icmp ne ptr %396, null
  br i1 %397, label %398, label %401

398:                                              ; preds = %395
  %399 = load ptr, ptr %27, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %399, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %400)
  br label %401

401:                                              ; preds = %398, %395
  %402 = load ptr, ptr %26, align 8, !tbaa !5
  %403 = icmp ne ptr %402, null
  br i1 %403, label %404, label %407

404:                                              ; preds = %401
  %405 = load ptr, ptr %26, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %405, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %406)
  br label %407

407:                                              ; preds = %404, %401
  %408 = load ptr, ptr %25, align 8, !tbaa !5
  %409 = icmp ne ptr %408, null
  br i1 %409, label %410, label %413

410:                                              ; preds = %407
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %411, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %412)
  br label %413

413:                                              ; preds = %410, %407
  %414 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %414, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %720

415:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  %416 = load ptr, ptr %28, align 8, !tbaa !5
  %417 = load ptr, ptr %13, align 8, !tbaa !5
  %418 = load ptr, ptr %39, align 8, !tbaa !5
  %419 = call ptr @Longtail_CreateArchiveBlockStore(ptr noundef %416, ptr noundef %417, ptr noundef %418, i32 noundef 1, i32 noundef 0)
  store ptr %419, ptr %40, align 8, !tbaa !5
  %420 = load ptr, ptr %40, align 8, !tbaa !5
  %421 = icmp eq ptr %420, null
  br i1 %421, label %422, label %457

422:                                              ; preds = %415
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2280, ptr noundef %423, i32 noundef 3, ptr noundef @.str.108, i32 noundef 12)
  %424 = load ptr, ptr %39, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %424)
  %425 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %425)
  %426 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %426)
  %427 = load ptr, ptr %32, align 8, !tbaa !5
  %428 = icmp ne ptr %427, null
  br i1 %428, label %429, label %432

429:                                              ; preds = %422
  %430 = load ptr, ptr %32, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %430, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %431)
  br label %432

432:                                              ; preds = %429, %422
  %433 = load ptr, ptr %28, align 8, !tbaa !5
  %434 = icmp ne ptr %433, null
  br i1 %434, label %435, label %438

435:                                              ; preds = %432
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %436, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %437)
  br label %438

438:                                              ; preds = %435, %432
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = icmp ne ptr %439, null
  br i1 %440, label %441, label %444

441:                                              ; preds = %438
  %442 = load ptr, ptr %27, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %442, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %443)
  br label %444

444:                                              ; preds = %441, %438
  %445 = load ptr, ptr %26, align 8, !tbaa !5
  %446 = icmp ne ptr %445, null
  br i1 %446, label %447, label %450

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

450:                                              ; preds = %447, %444
  %451 = load ptr, ptr %25, align 8, !tbaa !5
  %452 = icmp ne ptr %451, null
  br i1 %452, label %453, label %456

453:                                              ; preds = %450
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %454, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %455)
  br label %456

456:                                              ; preds = %453, %450
  store i32 12, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %719

457:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  %458 = load ptr, ptr %40, align 8, !tbaa !5
  %459 = load ptr, ptr %27, align 8, !tbaa !5
  %460 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %458, ptr noundef %459)
  store ptr %460, ptr %41, align 8, !tbaa !5
  %461 = load ptr, ptr %41, align 8, !tbaa !5
  %462 = icmp eq ptr %461, null
  br i1 %462, label %463, label %504

463:                                              ; preds = %457
  %464 = load ptr, ptr %24, align 8, !tbaa !5
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2295, ptr noundef %464, i32 noundef 3, ptr noundef @.str.109, i32 noundef 12)
  %465 = load ptr, ptr %40, align 8, !tbaa !5
  %466 = icmp ne ptr %465, null
  br i1 %466, label %467, label %470

467:                                              ; preds = %463
  %468 = load ptr, ptr %40, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %468, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %469)
  br label %470

470:                                              ; preds = %467, %463
  %471 = load ptr, ptr %39, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %471)
  %472 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %472)
  %473 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %473)
  %474 = load ptr, ptr %32, align 8, !tbaa !5
  %475 = icmp ne ptr %474, null
  br i1 %475, label %476, label %479

476:                                              ; preds = %470
  %477 = load ptr, ptr %32, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %477, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %478)
  br label %479

479:                                              ; preds = %476, %470
  %480 = load ptr, ptr %28, align 8, !tbaa !5
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %485

482:                                              ; preds = %479
  %483 = load ptr, ptr %28, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %483, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %484)
  br label %485

485:                                              ; preds = %482, %479
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = icmp ne ptr %486, null
  br i1 %487, label %488, label %491

488:                                              ; preds = %485
  %489 = load ptr, ptr %27, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %489, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %490)
  br label %491

491:                                              ; preds = %488, %485
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = icmp ne ptr %492, null
  br i1 %493, label %494, label %497

494:                                              ; preds = %491
  %495 = load ptr, ptr %26, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %495, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %496)
  br label %497

497:                                              ; preds = %494, %491
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = icmp ne ptr %498, null
  br i1 %499, label %500, label %503

500:                                              ; preds = %497
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %501, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %502)
  br label %503

503:                                              ; preds = %500, %497
  store i32 12, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %718

504:                                              ; preds = %457
  %505 = load i32, ptr %21, align 4, !tbaa !9
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %510

507:                                              ; preds = %504
  %508 = load ptr, ptr %38, align 8, !tbaa !5
  %509 = load ptr, ptr %33, align 8, !tbaa !5
  call void @InitMonitor(ptr noundef %508, ptr noundef %509, ptr noundef null)
  br label %510

510:                                              ; preds = %507, %504
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  %511 = load i32, ptr %21, align 4, !tbaa !9
  %512 = icmp ne i32 %511, 0
  %513 = zext i1 %512 to i64
  %514 = select i1 %512, i32 0, i32 5
  %515 = call ptr @MakeProgressAPI(ptr noundef @.str.77, i32 noundef %514)
  store ptr %515, ptr %42, align 8, !tbaa !5
  %516 = load ptr, ptr %42, align 8, !tbaa !5
  %517 = icmp ne ptr %516, null
  br i1 %517, label %518, label %533

518:                                              ; preds = %510
  %519 = load ptr, ptr %28, align 8, !tbaa !5
  %520 = load ptr, ptr %41, align 8, !tbaa !5
  %521 = load ptr, ptr %26, align 8, !tbaa !5
  %522 = load ptr, ptr %42, align 8, !tbaa !5
  %523 = load ptr, ptr %38, align 8, !tbaa !5
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = call i32 @Longtail_WriteContent(ptr noundef %519, ptr noundef %520, ptr noundef %521, ptr noundef %522, ptr noundef null, ptr noundef null, ptr noundef %523, ptr noundef %524, ptr noundef %525)
  store i32 %526, ptr %30, align 4, !tbaa !9
  %527 = load ptr, ptr %42, align 8, !tbaa !5
  %528 = icmp ne ptr %527, null
  br i1 %528, label %529, label %532

529:                                              ; preds = %518
  %530 = load ptr, ptr %42, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.Longtail_ProgressAPI, ptr %530, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %531)
  br label %532

532:                                              ; preds = %529, %518
  br label %534

533:                                              ; preds = %510
  store i32 12, ptr %30, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %533, %532
  %535 = load i32, ptr %30, align 4, !tbaa !9
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %588

537:                                              ; preds = %534
  %538 = load ptr, ptr %24, align 8, !tbaa !5
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = load ptr, ptr %13, align 8, !tbaa !5
  %541 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2335, ptr noundef %538, i32 noundef 3, ptr noundef @.str.78, ptr noundef %539, ptr noundef %540, i32 noundef %541)
  %542 = load ptr, ptr %41, align 8, !tbaa !5
  %543 = icmp ne ptr %542, null
  br i1 %543, label %544, label %547

544:                                              ; preds = %537
  %545 = load ptr, ptr %41, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %545, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %546)
  br label %547

547:                                              ; preds = %544, %537
  %548 = load ptr, ptr %40, align 8, !tbaa !5
  %549 = icmp ne ptr %548, null
  br i1 %549, label %550, label %553

550:                                              ; preds = %547
  %551 = load ptr, ptr %40, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %551, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %552)
  br label %553

553:                                              ; preds = %550, %547
  %554 = load ptr, ptr %39, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %554)
  %555 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %555)
  %556 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %556)
  %557 = load ptr, ptr %32, align 8, !tbaa !5
  %558 = icmp ne ptr %557, null
  br i1 %558, label %559, label %562

559:                                              ; preds = %553
  %560 = load ptr, ptr %32, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %560, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %561)
  br label %562

562:                                              ; preds = %559, %553
  %563 = load ptr, ptr %28, align 8, !tbaa !5
  %564 = icmp ne ptr %563, null
  br i1 %564, label %565, label %568

565:                                              ; preds = %562
  %566 = load ptr, ptr %28, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %566, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %567)
  br label %568

568:                                              ; preds = %565, %562
  %569 = load ptr, ptr %27, align 8, !tbaa !5
  %570 = icmp ne ptr %569, null
  br i1 %570, label %571, label %574

571:                                              ; preds = %568
  %572 = load ptr, ptr %27, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %572, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %573)
  br label %574

574:                                              ; preds = %571, %568
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = icmp ne ptr %575, null
  br i1 %576, label %577, label %580

577:                                              ; preds = %574
  %578 = load ptr, ptr %26, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %578, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %579)
  br label %580

580:                                              ; preds = %577, %574
  %581 = load ptr, ptr %25, align 8, !tbaa !5
  %582 = icmp ne ptr %581, null
  br i1 %582, label %583, label %586

583:                                              ; preds = %580
  %584 = load ptr, ptr %25, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %584, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %585)
  br label %586

586:                                              ; preds = %583, %580
  %587 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %587, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %717

588:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #3
  %589 = call i32 @SyncFlush_Init(ptr noundef %43)
  store i32 %589, ptr %30, align 4, !tbaa !9
  %590 = load i32, ptr %30, align 4, !tbaa !9
  %591 = icmp ne i32 %590, 0
  br i1 %591, label %592, label %639

592:                                              ; preds = %588
  %593 = load ptr, ptr %41, align 8, !tbaa !5
  %594 = icmp ne ptr %593, null
  br i1 %594, label %595, label %598

595:                                              ; preds = %592
  %596 = load ptr, ptr %41, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %596, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %597)
  br label %598

598:                                              ; preds = %595, %592
  %599 = load ptr, ptr %40, align 8, !tbaa !5
  %600 = icmp ne ptr %599, null
  br i1 %600, label %601, label %604

601:                                              ; preds = %598
  %602 = load ptr, ptr %40, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %602, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %603)
  br label %604

604:                                              ; preds = %601, %598
  %605 = load ptr, ptr %39, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %605)
  %606 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %606)
  %607 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %607)
  %608 = load ptr, ptr %32, align 8, !tbaa !5
  %609 = icmp ne ptr %608, null
  br i1 %609, label %610, label %613

610:                                              ; preds = %604
  %611 = load ptr, ptr %32, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %611, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %612)
  br label %613

613:                                              ; preds = %610, %604
  %614 = load ptr, ptr %28, align 8, !tbaa !5
  %615 = icmp ne ptr %614, null
  br i1 %615, label %616, label %619

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

619:                                              ; preds = %616, %613
  %620 = load ptr, ptr %27, align 8, !tbaa !5
  %621 = icmp ne ptr %620, null
  br i1 %621, label %622, label %625

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

625:                                              ; preds = %622, %619
  %626 = load ptr, ptr %26, align 8, !tbaa !5
  %627 = icmp ne ptr %626, null
  br i1 %627, label %628, label %631

628:                                              ; preds = %625
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %629, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %630)
  br label %631

631:                                              ; preds = %628, %625
  %632 = load ptr, ptr %25, align 8, !tbaa !5
  %633 = icmp ne ptr %632, null
  br i1 %633, label %634, label %637

634:                                              ; preds = %631
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %635, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %636)
  br label %637

637:                                              ; preds = %634, %631
  %638 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %638, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %716

639:                                              ; preds = %588
  %640 = load ptr, ptr %40, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %640, i32 0, i32 7
  %642 = load ptr, ptr %641, align 8, !tbaa !32
  %643 = load ptr, ptr %41, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.SyncFlush, ptr %43, i32 0, i32 0
  %645 = call i32 %642(ptr noundef %643, ptr noundef %644)
  store i32 %645, ptr %30, align 4, !tbaa !9
  %646 = load i32, ptr %30, align 4, !tbaa !9
  %647 = icmp ne i32 %646, 0
  br i1 %647, label %648, label %653

648:                                              ; preds = %639
  %649 = load ptr, ptr %24, align 8, !tbaa !5
  %650 = load ptr, ptr %12, align 8, !tbaa !5
  %651 = load ptr, ptr %13, align 8, !tbaa !5
  %652 = load i32, ptr %30, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2369, ptr noundef %649, i32 noundef 3, ptr noundef @.str.110, ptr noundef %650, ptr noundef %651, i32 noundef %652)
  br label %664

653:                                              ; preds = %639
  call void @SyncFlush_Wait(ptr noundef %43)
  %654 = getelementptr inbounds %struct.SyncFlush, ptr %43, i32 0, i32 2
  %655 = load i32, ptr %654, align 8, !tbaa !34
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %663

657:                                              ; preds = %653
  %658 = load ptr, ptr %24, align 8, !tbaa !5
  %659 = load ptr, ptr %12, align 8, !tbaa !5
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.SyncFlush, ptr %43, i32 0, i32 2
  %662 = load i32, ptr %661, align 8, !tbaa !34
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Pack, i32 noundef 2376, ptr noundef %658, i32 noundef 3, ptr noundef @.str.110, ptr noundef %659, ptr noundef %660, i32 noundef %662)
  br label %663

663:                                              ; preds = %657, %653
  br label %664

664:                                              ; preds = %663, %648
  %665 = getelementptr inbounds %struct.SyncFlush, ptr %43, i32 0, i32 0
  %666 = icmp ne ptr %665, null
  br i1 %666, label %667, label %670

667:                                              ; preds = %664
  %668 = getelementptr inbounds %struct.SyncFlush, ptr %43, i32 0, i32 0
  %669 = getelementptr inbounds %struct.Longtail_AsyncFlushAPI, ptr %668, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %669)
  br label %670

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

673:                                              ; preds = %670
  %674 = load ptr, ptr %41, 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 %40, align 8, !tbaa !5
  %678 = icmp ne ptr %677, null
  br i1 %678, label %679, label %682

679:                                              ; preds = %676
  %680 = load ptr, ptr %40, 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 %39, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %683)
  %684 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %684)
  %685 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %685)
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  %687 = icmp ne ptr %686, null
  br i1 %687, label %688, label %691

688:                                              ; preds = %682
  %689 = load ptr, ptr %32, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %689, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %690)
  br label %691

691:                                              ; preds = %688, %682
  %692 = load ptr, ptr %28, align 8, !tbaa !5
  %693 = icmp ne ptr %692, null
  br i1 %693, label %694, label %697

694:                                              ; preds = %691
  %695 = load ptr, ptr %28, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %695, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %696)
  br label %697

697:                                              ; preds = %694, %691
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = icmp ne ptr %698, null
  br i1 %699, label %700, label %703

700:                                              ; preds = %697
  %701 = load ptr, ptr %27, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %701, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %702)
  br label %703

703:                                              ; preds = %700, %697
  %704 = load ptr, ptr %26, align 8, !tbaa !5
  %705 = icmp ne ptr %704, null
  br i1 %705, label %706, label %709

706:                                              ; preds = %703
  %707 = load ptr, ptr %26, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %707, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %708)
  br label %709

709:                                              ; preds = %706, %703
  %710 = load ptr, ptr %25, align 8, !tbaa !5
  %711 = icmp ne ptr %710, null
  br i1 %711, label %712, label %715

712:                                              ; preds = %709
  %713 = load ptr, ptr %25, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %713, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %714)
  br label %715

715:                                              ; preds = %712, %709
  store i32 0, ptr %11, align 4
  store i32 1, ptr %31, align 4
  br label %716

716:                                              ; preds = %715, %637
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #3
  br label %717

717:                                              ; preds = %716, %586
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  br label %718

718:                                              ; preds = %717, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  br label %719

719:                                              ; preds = %718, %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  br label %720

720:                                              ; preds = %719, %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  br label %721

721:                                              ; preds = %720, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  br label %722

722:                                              ; preds = %721, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  br label %723

723:                                              ; preds = %722, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  br label %724

724:                                              ; preds = %723, %155
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 24, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 240, ptr %22) #3
  %725 = load i32, ptr %11, align 4
  ret i32 %725
}

declare i32 @Longtail_CreateArchiveIndex(ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @Longtail_CreateArchiveBlockStore(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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, !10, i64 0}
!24 = !{!"Longtail_FileInfos", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !6, i64 32}
!28 = !{!"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}
!29 = !{!28, !6, i64 96}
!30 = !{!28, !6, i64 104}
!31 = !{!28, !6, i64 112}
!32 = !{!33, !6, i64 56}
!33 = !{!"Longtail_BlockStoreAPI", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!34 = !{!35, !10, i64 24}
!35 = !{!"SyncFlush", !36, i64 0, !6, i64 16, !10, i64 24}
!36 = !{!"Longtail_AsyncFlushAPI", !22, i64 0, !6, i64 8}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Longtail_LogFieldFmt_Private = type { ptr, ptr, ptr }
%struct.Longtail_LogContextFmt_Private = type { ptr, ptr, i64 }
%struct.SyncFlush = type { %struct.Longtail_AsyncFlushAPI, ptr, i32 }
%struct.Longtail_AsyncFlushAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }

@.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.58 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [25 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.73 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [12 x i8], align 1
@__func__.Pack = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [49 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

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

declare ptr @Longtail_Alloc(ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @Longtail_Free(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

declare ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #2

declare ptr @Longtail_CreateHPCDCChunkerAPI(...) local_unnamed_addr #2

declare i32 @Longtail_GetFilesRecursively2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @Longtail_CreateVersionIndex(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @Longtail_WriteContent(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @SyncFlush_Init(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @Pack(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #1 {
  %11 = alloca [10 x %struct.Longtail_LogFieldFmt_Private], align 16
  %12 = alloca %struct.Longtail_LogContextFmt_Private, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.SyncFlush, align 8
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %11) #3
  store ptr @.str.54, ptr %11, align 16, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr @.str.53, ptr %19, align 8, !tbaa !10
  %20 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %0, ptr %20, align 16, !tbaa !11
  %21 = getelementptr inbounds i8, ptr %11, i64 24
  store ptr @.str.82, ptr %21, align 8, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %11, i64 32
  store ptr @.str.53, ptr %22, align 16, !tbaa !10
  %23 = getelementptr inbounds i8, ptr %11, i64 40
  store ptr %1, ptr %23, align 8, !tbaa !11
  %24 = getelementptr inbounds i8, ptr %11, i64 48
  store ptr @.str.58, ptr %24, align 16, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %11, i64 56
  store ptr @.str.59, ptr %25, align 8, !tbaa !10
  %26 = getelementptr inbounds i8, ptr %11, i64 64
  %27 = zext i32 %2 to i64
  %28 = inttoptr i64 %27 to ptr
  store ptr %28, ptr %26, align 16, !tbaa !11
  %29 = getelementptr inbounds i8, ptr %11, i64 72
  store ptr @.str.60, ptr %29, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %11, i64 80
  store ptr @.str.59, ptr %30, align 16, !tbaa !10
  %31 = getelementptr inbounds i8, ptr %11, i64 88
  %32 = zext i32 %3 to i64
  %33 = inttoptr i64 %32 to ptr
  store ptr %33, ptr %31, align 8, !tbaa !11
  %34 = getelementptr inbounds i8, ptr %11, i64 96
  store ptr @.str.61, ptr %34, align 16, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %11, i64 104
  store ptr @.str.59, ptr %35, align 8, !tbaa !10
  %36 = getelementptr inbounds i8, ptr %11, i64 112
  %37 = zext i32 %4 to i64
  %38 = inttoptr i64 %37 to ptr
  store ptr %38, ptr %36, align 16, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %11, i64 120
  store ptr @.str.62, ptr %39, align 8, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %11, i64 128
  store ptr @.str.59, ptr %40, align 16, !tbaa !10
  %41 = getelementptr inbounds i8, ptr %11, i64 136
  %42 = zext i32 %5 to i64
  %43 = inttoptr i64 %42 to ptr
  store ptr %43, ptr %41, align 8, !tbaa !11
  %44 = getelementptr inbounds i8, ptr %11, i64 144
  store ptr @.str.63, ptr %44, align 16, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %11, i64 152
  store ptr @.str.59, ptr %45, align 8, !tbaa !10
  %46 = getelementptr inbounds i8, ptr %11, i64 160
  %47 = zext i32 %6 to i64
  %48 = inttoptr i64 %47 to ptr
  store ptr %48, ptr %46, align 16, !tbaa !11
  %49 = getelementptr inbounds i8, ptr %11, i64 168
  store ptr @.str.64, ptr %49, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %11, i64 176
  store ptr @.str.59, ptr %50, align 16, !tbaa !10
  %51 = getelementptr inbounds i8, ptr %11, i64 184
  %52 = zext i32 %7 to i64
  %53 = inttoptr i64 %52 to ptr
  store ptr %53, ptr %51, align 8, !tbaa !11
  %54 = getelementptr inbounds i8, ptr %11, i64 192
  store ptr @.str.65, ptr %54, align 16, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %11, i64 200
  store ptr @.str.66, ptr %55, align 8, !tbaa !10
  %56 = getelementptr inbounds i8, ptr %11, i64 208
  %57 = sext i32 %8 to i64
  %58 = inttoptr i64 %57 to ptr
  store ptr %58, ptr %56, align 16, !tbaa !11
  %59 = getelementptr inbounds i8, ptr %11, i64 216
  store ptr @.str.68, ptr %59, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %11, i64 224
  store ptr @.str.66, ptr %60, align 16, !tbaa !10
  %61 = getelementptr inbounds i8, ptr %11, i64 232
  %62 = sext i32 %9 to i64
  %63 = inttoptr i64 %62 to ptr
  store ptr %63, ptr %61, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #3
  store ptr null, ptr %12, align 8, !tbaa !12
  %64 = getelementptr inbounds i8, ptr %12, i64 8
  store ptr %11, ptr %64, align 8, !tbaa !15
  %65 = getelementptr inbounds i8, ptr %12, i64 16
  store i64 10, ptr %65, align 8, !tbaa !16
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2139, ptr noundef nonnull %12, i32 noundef 0, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.71) #3
  %66 = call ptr (...) @Longtail_CreateFullHashRegistry() #3
  %67 = call i32 (...) @Longtail_GetCPUCount() #3
  %68 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef %67, i32 noundef 0) #3
  %69 = call ptr (...) @Longtail_CreateFullCompressionRegistry() #3
  %70 = call ptr (...) @Longtail_CreateFSStorageAPI() #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #3
  %71 = getelementptr inbounds i8, ptr %66, i64 8
  %72 = load ptr, ptr %71, align 8, !tbaa !17
  %73 = call i32 %72(ptr noundef %66, i32 noundef %6, ptr noundef nonnull %13) #3
  %.not = icmp eq i32 %73, 0
  br i1 %.not, label %81, label %74

74:                                               ; preds = %10
  %.not326 = icmp eq ptr %70, null
  br i1 %.not326, label %76, label %75

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

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

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

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

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

80:                                               ; preds = %78, %79
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %245

81:                                               ; preds = %10
  %82 = call ptr (...) @Longtail_CreateHPCDCChunkerAPI() #3
  %.not274 = icmp eq ptr %82, null
  br i1 %.not274, label %83, label %90

83:                                               ; preds = %81
  %.not275 = icmp eq ptr %70, null
  br i1 %.not275, label %85, label %84

84:                                               ; preds = %83
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %85

85:                                               ; preds = %84, %83
  %.not276 = icmp eq ptr %69, null
  br i1 %.not276, label %87, label %86

86:                                               ; preds = %85
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %87

87:                                               ; preds = %86, %85
  %.not277 = icmp eq ptr %68, null
  br i1 %.not277, label %89, label %88

88:                                               ; preds = %87
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %89

89:                                               ; preds = %87, %88
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %245

90:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #3
  store ptr null, ptr %14, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #3
  %91 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %70, ptr noundef %68, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %0, ptr noundef nonnull %15) #3
  %.not279 = icmp eq i32 %91, 0
  br i1 %.not279, label %98, label %92

92:                                               ; preds = %90
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2179, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.73, ptr noundef %0, i32 noundef %91) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not286 = icmp eq ptr %70, null
  br i1 %.not286, label %94, label %93

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

94:                                               ; preds = %93, %92
  %.not287 = icmp eq ptr %69, null
  br i1 %.not287, label %96, label %95

95:                                               ; preds = %94
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %96

96:                                               ; preds = %95, %94
  %.not288 = icmp eq ptr %68, null
  br i1 %.not288, label %.thread.sink.split, label %97

97:                                               ; preds = %96
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %.thread.sink.split

98:                                               ; preds = %90
  %99 = load ptr, ptr %15, align 8, !tbaa !20
  %100 = load i32, ptr %99, align 8, !tbaa !21
  %101 = zext i32 %100 to i64
  %102 = shl nuw nsw i64 %101, 2
  %103 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %102) #3
  %104 = load ptr, ptr %15, align 8, !tbaa !20
  %105 = load i32, ptr %104, align 8, !tbaa !21
  %.not338 = icmp eq i32 %105, 0
  br i1 %.not338, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %98
  %106 = call ptr @MakeProgressAPI(ptr noundef nonnull @.str.74, i32 noundef 5)
  %.not280 = icmp eq ptr %106, null
  br i1 %.not280, label %115, label %111

.lr.ph:                                           ; preds = %98, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %98 ]
  %107 = getelementptr inbounds i32, ptr %103, i64 %indvars.iv
  store i32 %7, ptr %107, align 4, !tbaa !24
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %108 = load i32, ptr %104, align 8, !tbaa !21
  %109 = zext i32 %108 to i64
  %110 = icmp ult i64 %indvars.iv.next, %109
  br i1 %110, label %.lr.ph, label %._crit_edge, !llvm.loop !25

111:                                              ; preds = %._crit_edge
  %112 = load ptr, ptr %13, align 8, !tbaa !20
  %113 = load ptr, ptr %15, align 8, !tbaa !20
  %114 = call i32 @Longtail_CreateVersionIndex(ptr noundef %70, ptr noundef %112, ptr noundef nonnull %82, ptr noundef %68, ptr noundef nonnull %106, ptr noundef null, ptr noundef null, ptr noundef %0, ptr noundef %113, ptr noundef %103, i32 noundef %2, i32 noundef %8, ptr noundef nonnull %14) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %106) #3
  br label %115

115:                                              ; preds = %._crit_edge, %111
  %.0214 = phi i32 [ %114, %111 ], [ 12, %._crit_edge ]
  call void @Longtail_Free(ptr noundef %103) #3
  %116 = load ptr, ptr %15, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %116) #3
  %.not281 = icmp eq i32 %.0214, 0
  br i1 %.not281, label %124, label %117

117:                                              ; preds = %115
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2221, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.75, ptr noundef %0, i32 noundef %.0214) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not282 = icmp eq ptr %70, null
  br i1 %.not282, label %119, label %118

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

119:                                              ; preds = %118, %117
  %.not283 = icmp eq ptr %69, null
  br i1 %.not283, label %121, label %120

120:                                              ; preds = %119
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %121

121:                                              ; preds = %120, %119
  %.not284 = icmp eq ptr %68, null
  br i1 %.not284, label %123, label %122

122:                                              ; preds = %121
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %123

123:                                              ; preds = %122, %121
  %.not285 = icmp eq ptr %66, null
  br i1 %.not285, label %.thread, label %.thread.sink.split

.thread.sink.split:                               ; preds = %123, %97, %96
  %.1.ph.ph = phi i32 [ %91, %96 ], [ %91, %97 ], [ %.0214, %123 ]
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %123
  %.1.ph = phi i32 [ %.0214, %123 ], [ %.1.ph.ph, %.thread.sink.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  br label %244

124:                                              ; preds = %115
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #3
  %125 = load ptr, ptr %13, align 8, !tbaa !20
  %126 = load ptr, ptr %14, align 8, !tbaa !20
  %127 = getelementptr inbounds i8, ptr %126, i64 32
  %128 = load ptr, ptr %127, align 8, !tbaa !27
  %129 = load i32, ptr %128, align 4, !tbaa !24
  %130 = getelementptr inbounds i8, ptr %126, i64 96
  %131 = load ptr, ptr %130, align 8, !tbaa !29
  %132 = getelementptr inbounds i8, ptr %126, i64 104
  %133 = load ptr, ptr %132, align 8, !tbaa !30
  %134 = getelementptr inbounds i8, ptr %126, i64 112
  %135 = load ptr, ptr %134, align 8, !tbaa !31
  %136 = call i32 @Longtail_CreateStoreIndex(ptr noundef %125, i32 noundef %129, ptr noundef %131, ptr noundef %133, ptr noundef %135, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %16) #3
  %.not290 = icmp eq i32 %136, 0
  br i1 %.not290, label %146, label %137

137:                                              ; preds = %124
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2243, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.76, i32 noundef %136) #3
  %138 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %138) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not322 = icmp eq ptr %70, null
  br i1 %.not322, label %140, label %139

139:                                              ; preds = %137
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %140

140:                                              ; preds = %139, %137
  %.not323 = icmp eq ptr %69, null
  br i1 %.not323, label %142, label %141

141:                                              ; preds = %140
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %142

142:                                              ; preds = %141, %140
  %.not324 = icmp eq ptr %68, null
  br i1 %.not324, label %144, label %143

143:                                              ; preds = %142
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %144

144:                                              ; preds = %143, %142
  %.not325 = icmp eq ptr %66, null
  br i1 %.not325, label %243, label %145

145:                                              ; preds = %144
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %243

146:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #3
  %147 = load ptr, ptr %16, align 8, !tbaa !20
  %148 = load ptr, ptr %14, align 8, !tbaa !20
  %149 = call i32 @Longtail_CreateArchiveIndex(ptr noundef %147, ptr noundef %148, ptr noundef nonnull %17) #3
  %.not291 = icmp eq i32 %149, 0
  br i1 %.not291, label %160, label %150

150:                                              ; preds = %146
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2261, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.107, i32 noundef %149) #3
  %151 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %151) #3
  %152 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %152) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not318 = icmp eq ptr %70, null
  br i1 %.not318, label %154, label %153

153:                                              ; preds = %150
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %154

154:                                              ; preds = %153, %150
  %.not319 = icmp eq ptr %69, null
  br i1 %.not319, label %156, label %155

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

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

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

158:                                              ; preds = %157, %156
  %.not321 = icmp eq ptr %66, null
  br i1 %.not321, label %242, label %159

159:                                              ; preds = %158
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %242

160:                                              ; preds = %146
  %161 = load ptr, ptr %17, align 8, !tbaa !20
  %162 = call ptr @Longtail_CreateArchiveBlockStore(ptr noundef %70, ptr noundef %1, ptr noundef %161, i32 noundef 1, i32 noundef 0) #3
  %163 = icmp eq ptr %162, null
  br i1 %163, label %164, label %175

164:                                              ; preds = %160
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2280, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.108, i32 noundef 12) #3
  %165 = load ptr, ptr %17, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %165) #3
  %166 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %166) #3
  %167 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %167) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not314 = icmp eq ptr %70, null
  br i1 %.not314, label %169, label %168

168:                                              ; preds = %164
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %169

169:                                              ; preds = %168, %164
  %.not315 = icmp eq ptr %69, null
  br i1 %.not315, label %171, label %170

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

171:                                              ; preds = %170, %169
  %.not316 = icmp eq ptr %68, null
  br i1 %.not316, label %173, label %172

172:                                              ; preds = %171
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %173

173:                                              ; preds = %172, %171
  %.not317 = icmp eq ptr %66, null
  br i1 %.not317, label %242, label %174

174:                                              ; preds = %173
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %242

175:                                              ; preds = %160
  %176 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef nonnull %162, ptr noundef %69) #3
  %177 = icmp eq ptr %176, null
  br i1 %177, label %178, label %189

178:                                              ; preds = %175
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2295, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.109, i32 noundef 12) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %162) #3
  %179 = load ptr, ptr %17, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %179) #3
  %180 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %180) #3
  %181 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %181) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not310 = icmp eq ptr %70, null
  br i1 %.not310, label %183, label %182

182:                                              ; preds = %178
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %183

183:                                              ; preds = %182, %178
  %.not311 = icmp eq ptr %69, null
  br i1 %.not311, label %185, label %184

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

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

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

187:                                              ; preds = %186, %185
  %.not313 = icmp eq ptr %66, null
  br i1 %.not313, label %242, label %188

188:                                              ; preds = %187
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %242

189:                                              ; preds = %175
  %.not292 = icmp eq i32 %9, 0
  br i1 %.not292, label %193, label %190

190:                                              ; preds = %189
  %191 = load ptr, ptr %16, align 8, !tbaa !20
  %192 = load ptr, ptr %14, align 8, !tbaa !20
  call void @InitMonitor(ptr noundef %191, ptr noundef %192, ptr noundef null)
  br label %193

193:                                              ; preds = %190, %189
  %194 = phi i32 [ 0, %190 ], [ 5, %189 ]
  %195 = call ptr @MakeProgressAPI(ptr noundef nonnull @.str.77, i32 noundef %194)
  %.not293 = icmp eq ptr %195, null
  br i1 %.not293, label %.thread333, label %196

196:                                              ; preds = %193
  %197 = load ptr, ptr %16, align 8, !tbaa !20
  %198 = load ptr, ptr %14, align 8, !tbaa !20
  %199 = call i32 @Longtail_WriteContent(ptr noundef %70, ptr noundef nonnull %176, ptr noundef %68, ptr noundef nonnull %195, ptr noundef null, ptr noundef null, ptr noundef %197, ptr noundef %198, ptr noundef %0) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %195) #3
  %.not294 = icmp eq i32 %199, 0
  br i1 %.not294, label %210, label %.thread333

.thread333:                                       ; preds = %193, %196
  %.1215336 = phi i32 [ %199, %196 ], [ 12, %193 ]
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2335, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.78, ptr noundef %0, ptr noundef %1, i32 noundef %.1215336) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %176) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %162) #3
  %200 = load ptr, ptr %17, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %200) #3
  %201 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %201) #3
  %202 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %202) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not306 = icmp eq ptr %70, null
  br i1 %.not306, label %204, label %203

203:                                              ; preds = %.thread333
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %204

204:                                              ; preds = %203, %.thread333
  %.not307 = icmp eq ptr %69, null
  br i1 %.not307, label %206, label %205

205:                                              ; preds = %204
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %206

206:                                              ; preds = %205, %204
  %.not308 = icmp eq ptr %68, null
  br i1 %.not308, label %208, label %207

207:                                              ; preds = %206
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %208

208:                                              ; preds = %207, %206
  %.not309 = icmp eq ptr %66, null
  br i1 %.not309, label %242, label %209

209:                                              ; preds = %208
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %242

210:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #3
  %211 = call i32 @SyncFlush_Init(ptr noundef nonnull %18)
  %.not295 = icmp eq i32 %211, 0
  br i1 %.not295, label %222, label %212

212:                                              ; preds = %210
  call void @Longtail_DisposeAPI(ptr noundef nonnull %176) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %162) #3
  %213 = load ptr, ptr %17, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %213) #3
  %214 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %214) #3
  %215 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %215) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not302 = icmp eq ptr %70, null
  br i1 %.not302, label %217, label %216

216:                                              ; preds = %212
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %217

217:                                              ; preds = %216, %212
  %.not303 = icmp eq ptr %69, null
  br i1 %.not303, label %219, label %218

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

219:                                              ; preds = %218, %217
  %.not304 = icmp eq ptr %68, null
  br i1 %.not304, label %221, label %220

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

221:                                              ; preds = %220, %219
  %.not305 = icmp eq ptr %66, null
  br i1 %.not305, label %241, label %.sink.split

222:                                              ; preds = %210
  %223 = getelementptr inbounds i8, ptr %162, i64 56
  %224 = load ptr, ptr %223, align 8, !tbaa !32
  %225 = call i32 %224(ptr noundef nonnull %176, ptr noundef nonnull %18) #3
  %.not296 = icmp eq i32 %225, 0
  br i1 %.not296, label %227, label %226

226:                                              ; preds = %222
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2369, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.110, ptr noundef %0, ptr noundef %1, i32 noundef %225) #3
  br label %231

227:                                              ; preds = %222
  call void @SyncFlush_Wait(ptr noundef nonnull %18)
  %228 = getelementptr inbounds i8, ptr %18, i64 24
  %229 = load i32, ptr %228, align 8, !tbaa !34
  %.not297 = icmp eq i32 %229, 0
  br i1 %.not297, label %231, label %230

230:                                              ; preds = %227
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Pack, i32 noundef 2376, ptr noundef nonnull %12, i32 noundef 3, ptr noundef nonnull @.str.110, ptr noundef %0, ptr noundef %1, i32 noundef %229) #3
  br label %231

231:                                              ; preds = %226, %230, %227
  call void @Longtail_DisposeAPI(ptr noundef nonnull %18) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %176) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %162) #3
  %232 = load ptr, ptr %17, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %232) #3
  %233 = load ptr, ptr %16, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %233) #3
  %234 = load ptr, ptr %14, align 8, !tbaa !20
  call void @Longtail_Free(ptr noundef %234) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %82) #3
  %.not298 = icmp eq ptr %70, null
  br i1 %.not298, label %236, label %235

235:                                              ; preds = %231
  call void @Longtail_DisposeAPI(ptr noundef nonnull %70) #3
  br label %236

236:                                              ; preds = %235, %231
  %.not299 = icmp eq ptr %69, null
  br i1 %.not299, label %238, label %237

237:                                              ; preds = %236
  call void @Longtail_DisposeAPI(ptr noundef nonnull %69) #3
  br label %238

238:                                              ; preds = %237, %236
  %.not300 = icmp eq ptr %68, null
  br i1 %.not300, label %240, label %239

239:                                              ; preds = %238
  call void @Longtail_DisposeAPI(ptr noundef nonnull %68) #3
  br label %240

240:                                              ; preds = %239, %238
  %.not301 = icmp eq ptr %66, null
  br i1 %.not301, label %241, label %.sink.split

.sink.split:                                      ; preds = %240, %221
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66) #3
  br label %241

241:                                              ; preds = %.sink.split, %240, %221
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #3
  br label %242

242:                                              ; preds = %174, %173, %241, %209, %208, %187, %188, %158, %159
  %.6 = phi i32 [ %149, %159 ], [ %149, %158 ], [ 12, %174 ], [ 12, %173 ], [ 12, %188 ], [ 12, %187 ], [ %211, %241 ], [ %.1215336, %209 ], [ %.1215336, %208 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #3
  br label %243

243:                                              ; preds = %144, %145, %242
  %.7 = phi i32 [ %.6, %242 ], [ %136, %145 ], [ %136, %144 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #3
  br label %244

244:                                              ; preds = %.thread, %243
  %.8 = phi i32 [ %.7, %243 ], [ %.1.ph, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  br label %245

245:                                              ; preds = %244, %89, %80
  %.10 = phi i32 [ %73, %80 ], [ %.8, %244 ], [ 12, %89 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %11) #3
  ret i32 %.10
}

declare i32 @Longtail_CreateArchiveIndex(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @Longtail_CreateArchiveBlockStore(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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, !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 = !{!18, !7, i64 8}
!18 = !{!"Longtail_HashRegistryAPI", !19, i64 0, !7, i64 8}
!19 = !{!"Longtail_API", !7, i64 0}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !23, i64 0}
!22 = !{!"Longtail_FileInfos", !23, i64 0, !23, i64 4, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32}
!23 = !{!"int", !8, i64 0}
!24 = !{!23, !23, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !7, i64 32}
!28 = !{!"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}
!29 = !{!28, !7, i64 96}
!30 = !{!28, !7, i64 104}
!31 = !{!28, !7, i64 112}
!32 = !{!33, !7, i64 56}
!33 = !{!"Longtail_BlockStoreAPI", !19, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56}
!34 = !{!35, !23, i64 24}
!35 = !{!"SyncFlush", !36, i64 0, !7, i64 16, !23, i64 24}
!36 = !{!"Longtail_AsyncFlushAPI", !19, i64 0, !7, i64 8}


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