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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Longtail_LogFieldFmt_Private = type { ptr, ptr, ptr }
%struct.Longtail_LogContextFmt_Private = type { ptr, ptr, i64 }
%struct.Longtail_ArchiveIndex = type { ptr, ptr, %struct.Longtail_StoreIndex, ptr, ptr, %struct.Longtail_VersionIndex }
%struct.Longtail_StoreIndex = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_VersionIndex = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr }
%struct.Longtail_HashRegistryAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }
%struct.Longtail_StorageAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_CompressionRegistryAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_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_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_VersionDiff = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_ConcurrentChunkWriteAPI = type { %struct.Longtail_API, 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.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.82 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [22 x i8], align 1
@__func__.Unpack = external hidden unnamed_addr constant [7 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [44 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

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

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

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

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

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

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

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

96:                                               ; preds = %6
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  %99 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2425, ptr noundef %97, i32 noundef 3, ptr noundef @.str.112, ptr noundef %98, i32 noundef %99)
  %100 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %100, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %786

101:                                              ; preds = %6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %102 = load ptr, ptr %21, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %102, i32 0, i32 5
  %104 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %103, i32 0, i32 1
  %105 = load ptr, ptr %104, align 8, !tbaa !20
  %106 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %106, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %107, i32 0, i32 1
  %109 = load ptr, ptr %108, align 8, !tbaa !24
  %110 = load ptr, ptr %18, align 8, !tbaa !5
  %111 = load i32, ptr %24, align 4, !tbaa !9
  %112 = call i32 %109(ptr noundef %110, i32 noundef %111, ptr noundef %25)
  store i32 %112, ptr %22, align 4, !tbaa !9
  %113 = load i32, ptr %22, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %145

115:                                              ; preds = %101
  %116 = load ptr, ptr %16, align 8, !tbaa !5
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2434, ptr noundef %116, i32 noundef 3, ptr noundef @.str.113, ptr noundef %117, i32 noundef %118)
  %119 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %119)
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = icmp ne ptr %120, null
  br i1 %121, label %122, label %125

122:                                              ; preds = %115
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %123, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %124)
  br label %125

125:                                              ; preds = %122, %115
  %126 = load ptr, ptr %19, align 8, !tbaa !5
  %127 = icmp ne ptr %126, null
  br i1 %127, label %128, label %131

128:                                              ; preds = %125
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %129, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %130)
  br label %131

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

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

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

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

143:                                              ; preds = %140, %137
  %144 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %144, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %785

145:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  %146 = call ptr (...) @Longtail_CreateHPCDCChunkerAPI()
  store ptr %146, ptr %26, align 8, !tbaa !5
  %147 = load ptr, ptr %26, align 8, !tbaa !5
  %148 = icmp eq ptr %147, null
  br i1 %148, label %149, label %179

149:                                              ; preds = %145
  %150 = load ptr, ptr %16, align 8, !tbaa !5
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2445, ptr noundef %150, i32 noundef 3, ptr noundef @.str.114, ptr noundef %151, i32 noundef %152)
  %153 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %153)
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = icmp ne ptr %154, null
  br i1 %155, label %156, label %159

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

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

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

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

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

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

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

177:                                              ; preds = %174, %171
  %178 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %178, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %784

179:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  store ptr null, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  %180 = load ptr, ptr %20, align 8, !tbaa !5
  %181 = load ptr, ptr %17, align 8, !tbaa !5
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %180, ptr noundef %181, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %182, ptr noundef %28)
  store i32 %183, ptr %22, align 4, !tbaa !9
  %184 = load i32, ptr %22, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %222

186:                                              ; preds = %179
  %187 = load ptr, ptr %16, align 8, !tbaa !5
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2467, ptr noundef %187, i32 noundef 3, ptr noundef @.str.73, ptr noundef %188, i32 noundef %189)
  %190 = load ptr, ptr %26, align 8, !tbaa !5
  %191 = icmp ne ptr %190, null
  br i1 %191, label %192, label %195

192:                                              ; preds = %186
  %193 = load ptr, ptr %26, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %193, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %194)
  br label %195

195:                                              ; preds = %192, %186
  %196 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %196)
  %197 = load ptr, ptr %20, align 8, !tbaa !5
  %198 = icmp ne ptr %197, null
  br i1 %198, label %199, label %202

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

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

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

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

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

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

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

220:                                              ; preds = %217, %214
  %221 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %221, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %314

222:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  %223 = load ptr, ptr %28, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %223, i32 0, i32 0
  %225 = load i32, ptr %224, align 8, !tbaa !27
  %226 = zext i32 %225 to i64
  %227 = mul i64 4, %226
  %228 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %227)
  store ptr %228, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %241, %222
  %230 = load i32, ptr %30, align 4, !tbaa !9
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 8, !tbaa !27
  %234 = icmp ult i32 %230, %233
  br i1 %234, label %236, label %235

235:                                              ; preds = %229
  store i32 2, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  br label %244

236:                                              ; preds = %229
  %237 = load ptr, ptr %29, align 8, !tbaa !5
  %238 = load i32, ptr %30, align 4, !tbaa !9
  %239 = zext i32 %238 to i64
  %240 = getelementptr inbounds i32, ptr %237, i64 %239
  store i32 0, ptr %240, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %236
  %242 = load i32, ptr %30, align 4, !tbaa !9
  %243 = add i32 %242, 1
  store i32 %243, ptr %30, align 4, !tbaa !9
  br label %229, !llvm.loop !29

244:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  %245 = call ptr @MakeProgressAPI(ptr noundef @.str.74, i32 noundef 5)
  store ptr %245, ptr %31, align 8, !tbaa !5
  %246 = load ptr, ptr %31, align 8, !tbaa !5
  %247 = icmp ne ptr %246, null
  br i1 %247, label %248, label %270

248:                                              ; preds = %244
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = load ptr, ptr %25, align 8, !tbaa !5
  %251 = load ptr, ptr %26, align 8, !tbaa !5
  %252 = load ptr, ptr %17, align 8, !tbaa !5
  %253 = load ptr, ptr %31, align 8, !tbaa !5
  %254 = load ptr, ptr %9, align 8, !tbaa !5
  %255 = load ptr, ptr %28, align 8, !tbaa !5
  %256 = load ptr, ptr %29, align 8, !tbaa !5
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %257, i32 0, i32 5
  %259 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %258, i32 0, i32 2
  %260 = load ptr, ptr %259, align 8, !tbaa !31
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = load i32, ptr %11, align 4, !tbaa !9
  %263 = call i32 @Longtail_CreateVersionIndex(ptr noundef %249, ptr noundef %250, ptr noundef %251, ptr noundef %252, ptr noundef %253, ptr noundef null, ptr noundef null, ptr noundef %254, ptr noundef %255, ptr noundef %256, i32 noundef %261, i32 noundef %262, ptr noundef %27)
  store i32 %263, ptr %22, align 4, !tbaa !9
  %264 = load ptr, ptr %31, align 8, !tbaa !5
  %265 = icmp ne ptr %264, null
  br i1 %265, label %266, label %269

266:                                              ; preds = %248
  %267 = load ptr, ptr %31, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.Longtail_ProgressAPI, ptr %267, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %268)
  br label %269

269:                                              ; preds = %266, %248
  br label %271

270:                                              ; preds = %244
  store i32 12, ptr %22, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %270, %269
  %272 = load ptr, ptr %29, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %272)
  %273 = load ptr, ptr %28, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %273)
  %274 = load i32, ptr %22, align 4, !tbaa !9
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %312

276:                                              ; preds = %271
  %277 = load ptr, ptr %16, align 8, !tbaa !5
  %278 = load ptr, ptr %9, align 8, !tbaa !5
  %279 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2510, ptr noundef %277, i32 noundef 3, ptr noundef @.str.75, ptr noundef %278, i32 noundef %279)
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = icmp ne ptr %280, null
  br i1 %281, label %282, label %285

282:                                              ; preds = %276
  %283 = load ptr, ptr %26, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %283, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %284)
  br label %285

285:                                              ; preds = %282, %276
  %286 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %286)
  %287 = load ptr, ptr %20, align 8, !tbaa !5
  %288 = icmp ne ptr %287, null
  br i1 %288, label %289, label %292

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

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

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

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

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

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

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

310:                                              ; preds = %307, %304
  %311 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %311, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %313

312:                                              ; preds = %271
  store i32 0, ptr %23, align 4
  br label %313

313:                                              ; preds = %312, %310
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  br label %314

314:                                              ; preds = %313, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  %315 = load i32, ptr %23, align 4
  switch i32 %315, label %783 [
    i32 0, label %316
  ]

316:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  %317 = load ptr, ptr %20, align 8, !tbaa !5
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  %319 = load ptr, ptr %21, align 8, !tbaa !5
  %320 = load i32, ptr %12, align 4, !tbaa !9
  %321 = call ptr @Longtail_CreateArchiveBlockStore(ptr noundef %317, ptr noundef %318, ptr noundef %319, i32 noundef 0, i32 noundef %320)
  store ptr %321, ptr %32, align 8, !tbaa !5
  %322 = load ptr, ptr %32, align 8, !tbaa !5
  %323 = icmp eq ptr %322, null
  br i1 %323, label %324, label %360

324:                                              ; preds = %316
  %325 = load ptr, ptr %16, align 8, !tbaa !5
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2529, ptr noundef %325, i32 noundef 3, ptr noundef @.str.115, ptr noundef %326, i32 noundef %327)
  %328 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %328)
  %329 = load ptr, ptr %26, align 8, !tbaa !5
  %330 = icmp ne ptr %329, null
  br i1 %330, label %331, label %334

331:                                              ; preds = %324
  %332 = load ptr, ptr %26, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %332, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %333)
  br label %334

334:                                              ; preds = %331, %324
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %335)
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = icmp ne ptr %336, null
  br i1 %337, label %338, label %341

338:                                              ; preds = %334
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %339, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %340)
  br label %341

341:                                              ; preds = %338, %334
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = icmp ne ptr %342, null
  br i1 %343, label %344, label %347

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

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

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

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

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

359:                                              ; preds = %356, %353
  store i32 12, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %782

360:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  %361 = load ptr, ptr %32, align 8, !tbaa !5
  %362 = load ptr, ptr %19, align 8, !tbaa !5
  %363 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %361, ptr noundef %362)
  store ptr %363, ptr %33, align 8, !tbaa !5
  %364 = load ptr, ptr %33, align 8, !tbaa !5
  %365 = icmp eq ptr %364, null
  br i1 %365, label %366, label %408

366:                                              ; preds = %360
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  %368 = load ptr, ptr %8, align 8, !tbaa !5
  %369 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2543, ptr noundef %367, i32 noundef 3, ptr noundef @.str.116, ptr noundef %368, i32 noundef %369)
  %370 = load ptr, ptr %32, align 8, !tbaa !5
  %371 = icmp ne ptr %370, null
  br i1 %371, label %372, label %375

372:                                              ; preds = %366
  %373 = load ptr, ptr %32, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %373, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %374)
  br label %375

375:                                              ; preds = %372, %366
  %376 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %376)
  %377 = load ptr, ptr %26, align 8, !tbaa !5
  %378 = icmp ne ptr %377, null
  br i1 %378, label %379, label %382

379:                                              ; preds = %375
  %380 = load ptr, ptr %26, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %380, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %381)
  br label %382

382:                                              ; preds = %379, %375
  %383 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %383)
  %384 = load ptr, ptr %20, align 8, !tbaa !5
  %385 = icmp ne ptr %384, null
  br i1 %385, label %386, label %389

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

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

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

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

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

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

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

407:                                              ; preds = %404, %401
  store i32 12, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %781

408:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  %409 = load ptr, ptr %25, align 8, !tbaa !5
  %410 = load ptr, ptr %27, align 8, !tbaa !5
  %411 = load ptr, ptr %21, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %411, i32 0, i32 5
  %413 = call i32 @Longtail_CreateVersionDiff(ptr noundef %409, ptr noundef %410, ptr noundef %412, ptr noundef %34)
  store i32 %413, ptr %22, align 4, !tbaa !9
  %414 = load i32, ptr %22, align 4, !tbaa !9
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %466

416:                                              ; preds = %408
  %417 = load ptr, ptr %16, align 8, !tbaa !5
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2563, ptr noundef %417, i32 noundef 3, ptr noundef @.str.86, ptr noundef %418, ptr noundef %419, i32 noundef %420)
  %421 = load ptr, ptr %33, align 8, !tbaa !5
  %422 = icmp ne ptr %421, null
  br i1 %422, label %423, label %426

423:                                              ; preds = %416
  %424 = load ptr, ptr %33, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %424, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %425)
  br label %426

426:                                              ; preds = %423, %416
  %427 = load ptr, ptr %32, align 8, !tbaa !5
  %428 = icmp ne ptr %427, null
  br i1 %428, label %429, label %432

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

432:                                              ; preds = %429, %426
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %433)
  %434 = load ptr, ptr %26, align 8, !tbaa !5
  %435 = icmp ne ptr %434, null
  br i1 %435, label %436, label %439

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

439:                                              ; preds = %436, %432
  %440 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %440)
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = icmp ne ptr %441, null
  br i1 %442, label %443, label %446

443:                                              ; preds = %439
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %444, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %445)
  br label %446

446:                                              ; preds = %443, %439
  %447 = load ptr, ptr %19, align 8, !tbaa !5
  %448 = icmp ne ptr %447, null
  br i1 %448, label %449, label %452

449:                                              ; preds = %446
  %450 = load ptr, ptr %19, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %450, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %451)
  br label %452

452:                                              ; preds = %449, %446
  %453 = load ptr, ptr %17, align 8, !tbaa !5
  %454 = icmp ne ptr %453, null
  br i1 %454, label %455, label %458

455:                                              ; preds = %452
  %456 = load ptr, ptr %17, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %456, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %457)
  br label %458

458:                                              ; preds = %455, %452
  %459 = load ptr, ptr %18, align 8, !tbaa !5
  %460 = icmp ne ptr %459, null
  br i1 %460, label %461, label %464

461:                                              ; preds = %458
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %462, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %463)
  br label %464

464:                                              ; preds = %461, %458
  %465 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %465, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %780

466:                                              ; preds = %408
  %467 = load ptr, ptr %34, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.Longtail_VersionDiff, ptr %467, i32 0, i32 0
  %469 = load ptr, ptr %468, align 8, !tbaa !32
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = icmp eq i32 %470, 0
  br i1 %471, label %472, label %539

472:                                              ; preds = %466
  %473 = load ptr, ptr %34, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.Longtail_VersionDiff, ptr %473, i32 0, i32 2
  %475 = load ptr, ptr %474, align 8, !tbaa !34
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %539

478:                                              ; preds = %472
  %479 = load ptr, ptr %34, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.Longtail_VersionDiff, ptr %479, i32 0, i32 1
  %481 = load ptr, ptr %480, align 8, !tbaa !35
  %482 = load i32, ptr %481, align 4, !tbaa !9
  %483 = icmp eq i32 %482, 0
  br i1 %483, label %484, label %539

484:                                              ; preds = %478
  %485 = load ptr, ptr %34, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.Longtail_VersionDiff, ptr %485, i32 0, i32 3
  %487 = load ptr, ptr %486, align 8, !tbaa !36
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = icmp eq i32 %488, 0
  br i1 %489, label %493, label %490

490:                                              ; preds = %484
  %491 = load i32, ptr %10, align 4, !tbaa !9
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %539, label %493

493:                                              ; preds = %490, %484
  %494 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %494)
  %495 = load ptr, ptr %33, align 8, !tbaa !5
  %496 = icmp ne ptr %495, null
  br i1 %496, label %497, label %500

497:                                              ; preds = %493
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %498, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %499)
  br label %500

500:                                              ; preds = %497, %493
  %501 = load ptr, ptr %32, align 8, !tbaa !5
  %502 = icmp ne ptr %501, null
  br i1 %502, label %503, label %506

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

506:                                              ; preds = %503, %500
  %507 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %507)
  %508 = load ptr, ptr %26, align 8, !tbaa !5
  %509 = icmp ne ptr %508, null
  br i1 %509, label %510, label %513

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

513:                                              ; preds = %510, %506
  %514 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %514)
  %515 = load ptr, ptr %20, align 8, !tbaa !5
  %516 = icmp ne ptr %515, null
  br i1 %516, label %517, label %520

517:                                              ; preds = %513
  %518 = load ptr, ptr %20, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %518, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %519)
  br label %520

520:                                              ; preds = %517, %513
  %521 = load ptr, ptr %19, align 8, !tbaa !5
  %522 = icmp ne ptr %521, null
  br i1 %522, label %523, label %526

523:                                              ; preds = %520
  %524 = load ptr, ptr %19, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %524, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %525)
  br label %526

526:                                              ; preds = %523, %520
  %527 = load ptr, ptr %17, align 8, !tbaa !5
  %528 = icmp ne ptr %527, null
  br i1 %528, label %529, label %532

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

532:                                              ; preds = %529, %526
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = icmp ne ptr %533, null
  br i1 %534, label %535, label %538

535:                                              ; preds = %532
  %536 = load ptr, ptr %18, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %536, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %537)
  br label %538

538:                                              ; preds = %535, %532
  store i32 0, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %780

539:                                              ; preds = %490, %478, %472, %466
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %540, i32 0, i32 5
  %542 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %541, i32 0, i32 4
  %543 = load ptr, ptr %542, align 8, !tbaa !37
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = zext i32 %544 to i64
  %546 = mul i64 8, %545
  %547 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %546)
  store ptr %547, ptr %36, align 8, !tbaa !5
  %548 = load ptr, ptr %21, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %548, i32 0, i32 5
  %550 = load ptr, ptr %34, align 8, !tbaa !5
  %551 = load ptr, ptr %36, align 8, !tbaa !5
  %552 = call i32 @Longtail_GetRequiredChunkHashes(ptr noundef %549, ptr noundef %550, ptr noundef %35, ptr noundef %551)
  store i32 %552, ptr %22, align 4, !tbaa !9
  %553 = load i32, ptr %22, align 4, !tbaa !9
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %555, label %605

555:                                              ; preds = %539
  %556 = load ptr, ptr %16, align 8, !tbaa !5
  %557 = load ptr, ptr %8, align 8, !tbaa !5
  %558 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2603, ptr noundef %556, i32 noundef 3, ptr noundef @.str.87, ptr noundef %557, i32 noundef %558)
  %559 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %559)
  %560 = load ptr, ptr %33, align 8, !tbaa !5
  %561 = icmp ne ptr %560, null
  br i1 %561, label %562, label %565

562:                                              ; preds = %555
  %563 = load ptr, ptr %33, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %563, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %564)
  br label %565

565:                                              ; preds = %562, %555
  %566 = load ptr, ptr %32, align 8, !tbaa !5
  %567 = icmp ne ptr %566, null
  br i1 %567, label %568, label %571

568:                                              ; preds = %565
  %569 = load ptr, ptr %32, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %569, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %570)
  br label %571

571:                                              ; preds = %568, %565
  %572 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %572)
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  %574 = icmp ne ptr %573, null
  br i1 %574, label %575, label %578

575:                                              ; preds = %571
  %576 = load ptr, ptr %26, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %576, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %577)
  br label %578

578:                                              ; preds = %575, %571
  %579 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %579)
  %580 = load ptr, ptr %20, align 8, !tbaa !5
  %581 = icmp ne ptr %580, null
  br i1 %581, label %582, label %585

582:                                              ; preds = %578
  %583 = load ptr, ptr %20, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %583, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %584)
  br label %585

585:                                              ; preds = %582, %578
  %586 = load ptr, ptr %19, align 8, !tbaa !5
  %587 = icmp ne ptr %586, null
  br i1 %587, label %588, label %591

588:                                              ; preds = %585
  %589 = load ptr, ptr %19, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %589, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %590)
  br label %591

591:                                              ; preds = %588, %585
  %592 = load ptr, ptr %17, align 8, !tbaa !5
  %593 = icmp ne ptr %592, null
  br i1 %593, label %594, label %597

594:                                              ; preds = %591
  %595 = load ptr, ptr %17, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %595, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %596)
  br label %597

597:                                              ; preds = %594, %591
  %598 = load ptr, ptr %18, align 8, !tbaa !5
  %599 = icmp ne ptr %598, null
  br i1 %599, label %600, label %603

600:                                              ; preds = %597
  %601 = load ptr, ptr %18, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %601, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %602)
  br label %603

603:                                              ; preds = %600, %597
  %604 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %604, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %779

605:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  %606 = load ptr, ptr %33, align 8, !tbaa !5
  %607 = load i32, ptr %35, align 4, !tbaa !9
  %608 = load ptr, ptr %36, align 8, !tbaa !5
  %609 = call i32 @SyncGetExistingContent(ptr noundef %606, i32 noundef %607, ptr noundef %608, i32 noundef 0, ptr noundef %37)
  store i32 %609, ptr %22, align 4, !tbaa !9
  %610 = load i32, ptr %22, align 4, !tbaa !9
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %663

612:                                              ; preds = %605
  %613 = load ptr, ptr %16, align 8, !tbaa !5
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2626, ptr noundef %613, i32 noundef 3, ptr noundef @.str.117, ptr noundef %614, i32 noundef %615)
  %616 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %616)
  %617 = load ptr, ptr %36, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %617)
  %618 = load ptr, ptr %33, align 8, !tbaa !5
  %619 = icmp ne ptr %618, null
  br i1 %619, label %620, label %623

620:                                              ; preds = %612
  %621 = load ptr, ptr %33, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %621, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %622)
  br label %623

623:                                              ; preds = %620, %612
  %624 = load ptr, ptr %32, align 8, !tbaa !5
  %625 = icmp ne ptr %624, null
  br i1 %625, label %626, label %629

626:                                              ; preds = %623
  %627 = load ptr, ptr %32, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %627, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %628)
  br label %629

629:                                              ; preds = %626, %623
  %630 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %630)
  %631 = load ptr, ptr %26, align 8, !tbaa !5
  %632 = icmp ne ptr %631, null
  br i1 %632, label %633, label %636

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

636:                                              ; preds = %633, %629
  %637 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %637)
  %638 = load ptr, ptr %20, align 8, !tbaa !5
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %643

640:                                              ; preds = %636
  %641 = load ptr, ptr %20, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %641, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %642)
  br label %643

643:                                              ; preds = %640, %636
  %644 = load ptr, ptr %19, align 8, !tbaa !5
  %645 = icmp ne ptr %644, null
  br i1 %645, label %646, label %649

646:                                              ; preds = %643
  %647 = load ptr, ptr %19, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %647, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %648)
  br label %649

649:                                              ; preds = %646, %643
  %650 = load ptr, ptr %17, align 8, !tbaa !5
  %651 = icmp ne ptr %650, null
  br i1 %651, label %652, label %655

652:                                              ; preds = %649
  %653 = load ptr, ptr %17, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %653, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %654)
  br label %655

655:                                              ; preds = %652, %649
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  %657 = icmp ne ptr %656, null
  br i1 %657, label %658, label %661

658:                                              ; preds = %655
  %659 = load ptr, ptr %18, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %659, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %660)
  br label %661

661:                                              ; preds = %658, %655
  %662 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %662, ptr %7, align 4
  store i32 1, ptr %23, align 4
  br label %778

663:                                              ; preds = %605
  %664 = load ptr, ptr %36, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %664)
  store ptr null, ptr %36, align 8, !tbaa !5
  %665 = load i32, ptr %13, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %672

667:                                              ; preds = %663
  %668 = load ptr, ptr %37, align 8, !tbaa !5
  %669 = load ptr, ptr %21, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %669, i32 0, i32 5
  %671 = load ptr, ptr %34, align 8, !tbaa !5
  call void @InitMonitor(ptr noundef %668, ptr noundef %670, ptr noundef %671)
  br label %672

672:                                              ; preds = %667, %663
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %673 = load i32, ptr %13, align 4, !tbaa !9
  %674 = icmp ne i32 %673, 0
  %675 = zext i1 %674 to i64
  %676 = select i1 %674, i32 0, i32 5
  %677 = call ptr @MakeProgressAPI(ptr noundef @.str.89, i32 noundef %676)
  store ptr %677, ptr %38, align 8, !tbaa !5
  %678 = load ptr, ptr %38, align 8, !tbaa !5
  %679 = icmp ne ptr %678, null
  br i1 %679, label %680, label %721

680:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  %681 = load ptr, ptr %20, align 8, !tbaa !5
  %682 = load ptr, ptr %21, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %682, i32 0, i32 5
  %684 = load ptr, ptr %34, align 8, !tbaa !5
  %685 = load ptr, ptr %9, align 8, !tbaa !5
  %686 = call ptr @Longtail_CreateConcurrentChunkWriteAPI(ptr noundef %681, ptr noundef %683, ptr noundef %684, ptr noundef %685)
  store ptr %686, ptr %39, align 8, !tbaa !5
  %687 = load ptr, ptr %39, align 8, !tbaa !5
  %688 = icmp ne ptr %687, null
  br i1 %688, label %689, label %713

689:                                              ; preds = %680
  %690 = load ptr, ptr %33, align 8, !tbaa !5
  %691 = load ptr, ptr %20, align 8, !tbaa !5
  %692 = load ptr, ptr %39, align 8, !tbaa !5
  %693 = load ptr, ptr %25, align 8, !tbaa !5
  %694 = load ptr, ptr %17, align 8, !tbaa !5
  %695 = load ptr, ptr %38, align 8, !tbaa !5
  %696 = load ptr, ptr %37, align 8, !tbaa !5
  %697 = load ptr, ptr %27, align 8, !tbaa !5
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.Longtail_ArchiveIndex, ptr %698, i32 0, i32 5
  %700 = load ptr, ptr %34, align 8, !tbaa !5
  %701 = load ptr, ptr %9, align 8, !tbaa !5
  %702 = load i32, ptr %10, align 4, !tbaa !9
  %703 = icmp ne i32 %702, 0
  %704 = zext i1 %703 to i64
  %705 = select i1 %703, i32 1, i32 0
  %706 = call i32 @Longtail_ChangeVersion2(ptr noundef %690, ptr noundef %691, ptr noundef %692, ptr noundef %693, ptr noundef %694, ptr noundef %695, ptr noundef null, ptr noundef null, ptr noundef %696, ptr noundef %697, ptr noundef %699, ptr noundef %700, ptr noundef %701, i32 noundef %705)
  store i32 %706, ptr %22, align 4, !tbaa !9
  %707 = load ptr, ptr %39, align 8, !tbaa !5
  %708 = icmp ne ptr %707, null
  br i1 %708, label %709, label %712

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

712:                                              ; preds = %709, %689
  br label %714

713:                                              ; preds = %680
  store i32 12, ptr %22, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %713, %712
  %715 = load ptr, ptr %38, align 8, !tbaa !5
  %716 = icmp ne ptr %715, null
  br i1 %716, label %717, label %720

717:                                              ; preds = %714
  %718 = load ptr, ptr %38, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.Longtail_ProgressAPI, ptr %718, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %719)
  br label %720

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

721:                                              ; preds = %672
  store i32 12, ptr %22, align 4, !tbaa !9
  br label %722

722:                                              ; preds = %721, %720
  %723 = load i32, ptr %22, align 4, !tbaa !9
  %724 = icmp ne i32 %723, 0
  br i1 %724, label %725, label %730

725:                                              ; preds = %722
  %726 = load ptr, ptr %16, align 8, !tbaa !5
  %727 = load ptr, ptr %9, align 8, !tbaa !5
  %728 = load ptr, ptr %8, align 8, !tbaa !5
  %729 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef @.str.69, ptr noundef @__func__.Unpack, i32 noundef 2684, ptr noundef %726, i32 noundef 3, ptr noundef @.str.118, ptr noundef %727, ptr noundef %728, i32 noundef %729)
  br label %730

730:                                              ; preds = %725, %722
  %731 = load ptr, ptr %37, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %731)
  %732 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %732)
  %733 = load ptr, ptr %33, align 8, !tbaa !5
  %734 = icmp ne ptr %733, null
  br i1 %734, label %735, label %738

735:                                              ; preds = %730
  %736 = load ptr, ptr %33, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %736, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %737)
  br label %738

738:                                              ; preds = %735, %730
  %739 = load ptr, ptr %32, align 8, !tbaa !5
  %740 = icmp ne ptr %739, null
  br i1 %740, label %741, label %744

741:                                              ; preds = %738
  %742 = load ptr, ptr %32, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %742, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %743)
  br label %744

744:                                              ; preds = %741, %738
  %745 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %745)
  %746 = load ptr, ptr %26, align 8, !tbaa !5
  %747 = icmp ne ptr %746, null
  br i1 %747, label %748, label %751

748:                                              ; preds = %744
  %749 = load ptr, ptr %26, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %749, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %750)
  br label %751

751:                                              ; preds = %748, %744
  %752 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %752)
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = icmp ne ptr %753, null
  br i1 %754, label %755, label %758

755:                                              ; preds = %751
  %756 = load ptr, ptr %20, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %756, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %757)
  br label %758

758:                                              ; preds = %755, %751
  %759 = load ptr, ptr %19, align 8, !tbaa !5
  %760 = icmp ne ptr %759, null
  br i1 %760, label %761, label %764

761:                                              ; preds = %758
  %762 = load ptr, ptr %19, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %762, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %763)
  br label %764

764:                                              ; preds = %761, %758
  %765 = load ptr, ptr %17, align 8, !tbaa !5
  %766 = icmp ne ptr %765, null
  br i1 %766, label %767, label %770

767:                                              ; preds = %764
  %768 = load ptr, ptr %17, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %768, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %769)
  br label %770

770:                                              ; preds = %767, %764
  %771 = load ptr, ptr %18, align 8, !tbaa !5
  %772 = icmp ne ptr %771, null
  br i1 %772, label %773, label %776

773:                                              ; preds = %770
  %774 = load ptr, ptr %18, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %774, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %775)
  br label %776

776:                                              ; preds = %773, %770
  %777 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %777, ptr %7, align 4
  store i32 1, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  br label %778

778:                                              ; preds = %776, %661
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  br label %779

779:                                              ; preds = %778, %603
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  br label %780

780:                                              ; preds = %779, %538, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  br label %781

781:                                              ; preds = %780, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  br label %782

782:                                              ; preds = %781, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  br label %783

783:                                              ; preds = %782, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  br label %784

784:                                              ; preds = %783, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  br label %785

785:                                              ; preds = %784, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  br label %786

786:                                              ; preds = %785, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #3
  %787 = load i32, ptr %7, align 4
  ret i32 %787
}

declare i32 @Longtail_ReadArchiveIndex(ptr noundef, ptr noundef, ptr 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 120}
!21 = !{!"Longtail_ArchiveIndex", !6, i64 0, !6, i64 8, !22, i64 16, !6, i64 96, !6, i64 104, !23, i64 112}
!22 = !{!"Longtail_StoreIndex", !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}
!23 = !{!"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}
!24 = !{!25, !6, i64 8}
!25 = !{!"Longtail_HashRegistryAPI", !26, i64 0, !6, i64 8}
!26 = !{!"Longtail_API", !6, i64 0}
!27 = !{!28, !10, i64 0}
!28 = !{!"Longtail_FileInfos", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!21, !6, i64 128}
!32 = !{!33, !6, i64 0}
!33 = !{!"Longtail_VersionDiff", !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}
!34 = !{!33, !6, i64 16}
!35 = !{!33, !6, i64 8}
!36 = !{!33, !6, i64 24}
!37 = !{!21, !6, i64 144}


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

%struct.Longtail_LogFieldFmt_Private = type { ptr, ptr, ptr }
%struct.Longtail_LogContextFmt_Private = type { ptr, ptr, i64 }

@.str.53 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [12 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.82 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [22 x i8], align 1
@__func__.Unpack = external hidden unnamed_addr constant [7 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [44 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

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

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

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

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

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

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

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

49:                                               ; preds = %6
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2425, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.112, ptr noundef %0, i32 noundef %48) #3
  br label %266

50:                                               ; preds = %6
  %51 = load ptr, ptr %9, align 8, !tbaa !17
  %52 = getelementptr inbounds i8, ptr %51, i64 120
  %53 = load ptr, ptr %52, align 8, !tbaa !18
  %54 = load i32, ptr %53, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #3
  %55 = getelementptr inbounds i8, ptr %45, i64 8
  %56 = load ptr, ptr %55, align 8, !tbaa !24
  %57 = call i32 %56(ptr noundef %45, i32 noundef %54, ptr noundef nonnull %10) #3
  %.not306 = icmp eq i32 %57, 0
  br i1 %.not306, label %66, label %58

58:                                               ; preds = %50
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2434, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.113, ptr noundef %0, i32 noundef %57) #3
  %59 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %59) #3
  %.not358 = icmp eq ptr %47, null
  br i1 %.not358, label %61, label %60

60:                                               ; preds = %58
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %61

61:                                               ; preds = %60, %58
  %.not359 = icmp eq ptr %46, null
  br i1 %.not359, label %63, label %62

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

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

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

65:                                               ; preds = %63, %64
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %265

66:                                               ; preds = %50
  %67 = call ptr (...) @Longtail_CreateHPCDCChunkerAPI() #3
  %68 = icmp eq ptr %67, null
  br i1 %68, label %69, label %77

69:                                               ; preds = %66
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2445, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.114, ptr noundef %0, i32 noundef 0) #3
  %70 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %70) #3
  %.not354 = icmp eq ptr %47, null
  br i1 %.not354, label %72, label %71

71:                                               ; preds = %69
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %72

72:                                               ; preds = %71, %69
  %.not355 = icmp eq ptr %46, null
  br i1 %.not355, label %74, label %73

73:                                               ; preds = %72
  call void @Longtail_DisposeAPI(ptr noundef nonnull %46) #3
  br label %74

74:                                               ; preds = %73, %72
  %.not356 = icmp eq ptr %44, null
  br i1 %.not356, label %76, label %75

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

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

77:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #3
  store ptr null, ptr %11, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #3
  %78 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %47, ptr noundef %44, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %1, ptr noundef nonnull %12) #3
  %.not307 = icmp eq i32 %78, 0
  br i1 %.not307, label %86, label %79

79:                                               ; preds = %77
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2467, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.73, ptr noundef %1, i32 noundef %78) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %80 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %80) #3
  %.not314 = icmp eq ptr %47, null
  br i1 %.not314, label %82, label %81

81:                                               ; preds = %79
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %82

82:                                               ; preds = %81, %79
  %.not315 = icmp eq ptr %46, null
  br i1 %.not315, label %84, label %83

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

84:                                               ; preds = %83, %82
  %.not316 = icmp eq ptr %44, null
  br i1 %.not316, label %.thread.sink.split, label %85

85:                                               ; preds = %84
  call void @Longtail_DisposeAPI(ptr noundef nonnull %44) #3
  br label %.thread.sink.split

86:                                               ; preds = %77
  %87 = load ptr, ptr %12, align 8, !tbaa !17
  %88 = load i32, ptr %87, align 8, !tbaa !27
  %89 = zext i32 %88 to i64
  %90 = shl nuw nsw i64 %89, 2
  %91 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %90) #3
  %92 = load ptr, ptr %12, align 8, !tbaa !17
  %93 = load i32, ptr %92, align 8, !tbaa !27
  %.not374 = icmp eq i32 %93, 0
  br i1 %.not374, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %86
  %94 = call ptr @MakeProgressAPI(ptr noundef nonnull @.str.74, i32 noundef 5)
  %.not308 = icmp eq ptr %94, null
  br i1 %.not308, label %107, label %99

.lr.ph:                                           ; preds = %86, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %86 ]
  %95 = getelementptr inbounds i32, ptr %91, i64 %indvars.iv
  store i32 0, ptr %95, align 4, !tbaa !23
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %96 = load i32, ptr %92, align 8, !tbaa !27
  %97 = zext i32 %96 to i64
  %98 = icmp ult i64 %indvars.iv.next, %97
  br i1 %98, label %.lr.ph, label %._crit_edge, !llvm.loop !29

99:                                               ; preds = %._crit_edge
  %100 = load ptr, ptr %10, align 8, !tbaa !17
  %101 = load ptr, ptr %12, align 8, !tbaa !17
  %102 = load ptr, ptr %9, align 8, !tbaa !17
  %103 = getelementptr inbounds i8, ptr %102, i64 128
  %104 = load ptr, ptr %103, align 8, !tbaa !31
  %105 = load i32, ptr %104, align 4, !tbaa !23
  %106 = call i32 @Longtail_CreateVersionIndex(ptr noundef %47, ptr noundef %100, ptr noundef nonnull %67, ptr noundef %44, ptr noundef nonnull %94, ptr noundef null, ptr noundef null, ptr noundef %1, ptr noundef %101, ptr noundef %91, i32 noundef %105, i32 noundef %3, ptr noundef nonnull %11) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %94) #3
  br label %107

107:                                              ; preds = %._crit_edge, %99
  %.0243 = phi i32 [ %106, %99 ], [ 12, %._crit_edge ]
  call void @Longtail_Free(ptr noundef %91) #3
  %108 = load ptr, ptr %12, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %108) #3
  %.not309 = icmp eq i32 %.0243, 0
  br i1 %.not309, label %117, label %109

109:                                              ; preds = %107
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2510, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.75, ptr noundef %1, i32 noundef %.0243) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %110 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %110) #3
  %.not310 = icmp eq ptr %47, null
  br i1 %.not310, label %112, label %111

111:                                              ; preds = %109
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %112

112:                                              ; preds = %111, %109
  %.not311 = icmp eq ptr %46, null
  br i1 %.not311, label %114, label %113

113:                                              ; preds = %112
  call void @Longtail_DisposeAPI(ptr noundef nonnull %46) #3
  br label %114

114:                                              ; preds = %113, %112
  %.not312 = icmp eq ptr %44, null
  br i1 %.not312, label %116, label %115

115:                                              ; preds = %114
  call void @Longtail_DisposeAPI(ptr noundef nonnull %44) #3
  br label %116

116:                                              ; preds = %115, %114
  %.not313 = icmp eq ptr %45, null
  br i1 %.not313, label %.thread, label %.thread.sink.split

.thread.sink.split:                               ; preds = %116, %85, %84
  %.1.ph.ph = phi i32 [ %78, %84 ], [ %78, %85 ], [ %.0243, %116 ]
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %.thread

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

117:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #3
  %118 = load ptr, ptr %9, align 8, !tbaa !17
  %119 = call ptr @Longtail_CreateArchiveBlockStore(ptr noundef %47, ptr noundef %0, ptr noundef %118, i32 noundef 0, i32 noundef %4) #3
  %120 = icmp eq ptr %119, null
  br i1 %120, label %121, label %131

121:                                              ; preds = %117
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2529, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.115, ptr noundef %0, i32 noundef 0) #3
  %122 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %122) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %123 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %123) #3
  %.not350 = icmp eq ptr %47, null
  br i1 %.not350, label %125, label %124

124:                                              ; preds = %121
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %125

125:                                              ; preds = %124, %121
  %.not351 = icmp eq ptr %46, null
  br i1 %.not351, label %127, label %126

126:                                              ; preds = %125
  call void @Longtail_DisposeAPI(ptr noundef nonnull %46) #3
  br label %127

127:                                              ; preds = %126, %125
  %.not352 = icmp eq ptr %44, null
  br i1 %.not352, label %129, label %128

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

129:                                              ; preds = %128, %127
  %.not353 = icmp eq ptr %45, null
  br i1 %.not353, label %264, label %130

130:                                              ; preds = %129
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %264

131:                                              ; preds = %117
  %132 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef nonnull %119, ptr noundef %46) #3
  %133 = icmp eq ptr %132, null
  br i1 %133, label %134, label %144

134:                                              ; preds = %131
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2543, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.116, ptr noundef %0, i32 noundef 0) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %135 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %135) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %136 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %136) #3
  %.not346 = icmp eq ptr %47, null
  br i1 %.not346, label %138, label %137

137:                                              ; preds = %134
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %138

138:                                              ; preds = %137, %134
  %.not347 = icmp eq ptr %46, null
  br i1 %.not347, label %140, label %139

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

140:                                              ; preds = %139, %138
  %.not348 = icmp eq ptr %44, null
  br i1 %.not348, label %142, label %141

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

142:                                              ; preds = %141, %140
  %.not349 = icmp eq ptr %45, null
  br i1 %.not349, label %264, label %143

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

144:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #3
  %145 = load ptr, ptr %10, align 8, !tbaa !17
  %146 = load ptr, ptr %11, align 8, !tbaa !17
  %147 = load ptr, ptr %9, align 8, !tbaa !17
  %148 = getelementptr inbounds i8, ptr %147, i64 112
  %149 = call i32 @Longtail_CreateVersionDiff(ptr noundef %145, ptr noundef %146, ptr noundef nonnull %148, ptr noundef nonnull %13) #3
  %.not318 = icmp eq i32 %149, 0
  br i1 %.not318, label %160, label %150

150:                                              ; preds = %144
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2563, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.86, ptr noundef %0, ptr noundef %1, i32 noundef %149) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %132) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %151 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %151) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %152 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %152) #3
  %.not342 = icmp eq ptr %47, null
  br i1 %.not342, label %154, label %153

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

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

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

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

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

158:                                              ; preds = %157, %156
  %.not345 = icmp eq ptr %45, null
  br i1 %.not345, label %263, label %159

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

160:                                              ; preds = %144
  %161 = load ptr, ptr %13, align 8, !tbaa !17
  %162 = load ptr, ptr %161, align 8, !tbaa !32
  %163 = load i32, ptr %162, align 4, !tbaa !23
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %165, label %191

165:                                              ; preds = %160
  %166 = getelementptr inbounds i8, ptr %161, i64 16
  %167 = load ptr, ptr %166, align 8, !tbaa !34
  %168 = load i32, ptr %167, align 4, !tbaa !23
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %170, label %191

170:                                              ; preds = %165
  %171 = getelementptr inbounds i8, ptr %161, i64 8
  %172 = load ptr, ptr %171, align 8, !tbaa !35
  %173 = load i32, ptr %172, align 4, !tbaa !23
  %174 = icmp eq i32 %173, 0
  br i1 %174, label %175, label %191

175:                                              ; preds = %170
  %176 = getelementptr inbounds i8, ptr %161, i64 24
  %177 = load ptr, ptr %176, align 8, !tbaa !36
  %178 = load i32, ptr %177, align 4, !tbaa !23
  %179 = icmp ne i32 %178, 0
  %180 = icmp ne i32 %2, 0
  %or.cond = and i1 %180, %179
  br i1 %or.cond, label %191, label %181

181:                                              ; preds = %175
  call void @Longtail_Free(ptr noundef nonnull %161) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %132) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %182 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %182) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %183 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %183) #3
  %.not319 = icmp eq ptr %47, null
  br i1 %.not319, label %185, label %184

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

185:                                              ; preds = %184, %181
  %.not320 = icmp eq ptr %46, null
  br i1 %.not320, label %187, label %186

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

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

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

189:                                              ; preds = %188, %187
  %.not322 = icmp eq ptr %45, null
  br i1 %.not322, label %263, label %190

190:                                              ; preds = %189
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %263

191:                                              ; preds = %175, %170, %165, %160
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #3
  %192 = load ptr, ptr %9, align 8, !tbaa !17
  %193 = getelementptr inbounds i8, ptr %192, i64 144
  %194 = load ptr, ptr %193, align 8, !tbaa !37
  %195 = load i32, ptr %194, align 4, !tbaa !23
  %196 = zext i32 %195 to i64
  %197 = shl nuw nsw i64 %196, 3
  %198 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %197) #3
  %199 = load ptr, ptr %9, align 8, !tbaa !17
  %200 = getelementptr inbounds i8, ptr %199, i64 112
  %201 = load ptr, ptr %13, align 8, !tbaa !17
  %202 = call i32 @Longtail_GetRequiredChunkHashes(ptr noundef nonnull %200, ptr noundef %201, ptr noundef nonnull %14, ptr noundef %198) #3
  %.not323 = icmp eq i32 %202, 0
  br i1 %.not323, label %214, label %203

203:                                              ; preds = %191
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2603, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.87, ptr noundef %0, i32 noundef %202) #3
  %204 = load ptr, ptr %13, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %204) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %132) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %205 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %205) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %206 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %206) #3
  %.not338 = icmp eq ptr %47, null
  br i1 %.not338, label %208, label %207

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

208:                                              ; preds = %207, %203
  %.not339 = icmp eq ptr %46, null
  br i1 %.not339, label %210, label %209

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

210:                                              ; preds = %209, %208
  %.not340 = icmp eq ptr %44, null
  br i1 %.not340, label %212, label %211

211:                                              ; preds = %210
  call void @Longtail_DisposeAPI(ptr noundef nonnull %44) #3
  br label %212

212:                                              ; preds = %211, %210
  %.not341 = icmp eq ptr %45, null
  br i1 %.not341, label %262, label %213

213:                                              ; preds = %212
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %262

214:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #3
  %215 = load i32, ptr %14, align 4, !tbaa !23
  %216 = call i32 @SyncGetExistingContent(ptr noundef nonnull %132, i32 noundef %215, ptr noundef %198, i32 noundef 0, ptr noundef nonnull %15)
  %.not324 = icmp eq i32 %216, 0
  br i1 %.not324, label %227, label %217

217:                                              ; preds = %214
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2626, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.117, ptr noundef %0, i32 noundef %216) #3
  %218 = load ptr, ptr %13, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %218) #3
  call void @Longtail_Free(ptr noundef %198) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %132) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %219 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %219) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %220 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %220) #3
  %.not334 = icmp eq ptr %47, null
  br i1 %.not334, label %222, label %221

221:                                              ; preds = %217
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %222

222:                                              ; preds = %221, %217
  %.not335 = icmp eq ptr %46, null
  br i1 %.not335, label %224, label %223

223:                                              ; preds = %222
  call void @Longtail_DisposeAPI(ptr noundef nonnull %46) #3
  br label %224

224:                                              ; preds = %223, %222
  %.not336 = icmp eq ptr %44, null
  br i1 %.not336, label %226, label %225

225:                                              ; preds = %224
  call void @Longtail_DisposeAPI(ptr noundef nonnull %44) #3
  br label %226

226:                                              ; preds = %225, %224
  %.not337 = icmp eq ptr %45, null
  br i1 %.not337, label %261, label %.sink.split

227:                                              ; preds = %214
  call void @Longtail_Free(ptr noundef %198) #3
  %.not325 = icmp eq i32 %5, 0
  br i1 %.not325, label %233, label %228

228:                                              ; preds = %227
  %229 = load ptr, ptr %15, align 8, !tbaa !17
  %230 = load ptr, ptr %9, align 8, !tbaa !17
  %231 = getelementptr inbounds i8, ptr %230, i64 112
  %232 = load ptr, ptr %13, align 8, !tbaa !17
  call void @InitMonitor(ptr noundef %229, ptr noundef nonnull %231, ptr noundef %232)
  br label %233

233:                                              ; preds = %228, %227
  %234 = phi i32 [ 0, %228 ], [ 5, %227 ]
  %235 = call ptr @MakeProgressAPI(ptr noundef nonnull @.str.89, i32 noundef %234)
  %.not326 = icmp eq ptr %235, null
  br i1 %.not326, label %.thread365, label %236

236:                                              ; preds = %233
  %237 = load ptr, ptr %9, align 8, !tbaa !17
  %238 = getelementptr inbounds i8, ptr %237, i64 112
  %239 = load ptr, ptr %13, align 8, !tbaa !17
  %240 = call ptr @Longtail_CreateConcurrentChunkWriteAPI(ptr noundef %47, ptr noundef nonnull %238, ptr noundef %239, ptr noundef %1) #3
  %.not327 = icmp eq ptr %240, null
  br i1 %.not327, label %.thread370, label %241

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

241:                                              ; preds = %236
  %242 = load ptr, ptr %10, align 8, !tbaa !17
  %243 = load ptr, ptr %15, align 8, !tbaa !17
  %244 = load ptr, ptr %11, align 8, !tbaa !17
  %245 = load ptr, ptr %9, align 8, !tbaa !17
  %246 = getelementptr inbounds i8, ptr %245, i64 112
  %247 = load ptr, ptr %13, align 8, !tbaa !17
  %.not328 = icmp ne i32 %2, 0
  %248 = zext i1 %.not328 to i32
  %249 = call i32 @Longtail_ChangeVersion2(ptr noundef nonnull %132, ptr noundef %47, ptr noundef nonnull %240, ptr noundef %242, ptr noundef %44, ptr noundef nonnull %235, ptr noundef null, ptr noundef null, ptr noundef %243, ptr noundef %244, ptr noundef nonnull %246, ptr noundef %247, ptr noundef %1, i32 noundef %248) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %240) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %235) #3
  %.not329 = icmp eq i32 %249, 0
  br i1 %.not329, label %250, label %.thread365

.thread365:                                       ; preds = %233, %.thread370, %241
  %.3246368 = phi i32 [ %249, %241 ], [ 12, %.thread370 ], [ 12, %233 ]
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @Longtail_CallLogger(ptr noundef nonnull @.str.69, ptr noundef nonnull @__func__.Unpack, i32 noundef 2684, ptr noundef nonnull %8, i32 noundef 3, ptr noundef nonnull @.str.118, ptr noundef %1, ptr noundef %0, i32 noundef %.3246368) #3
  br label %250

250:                                              ; preds = %.thread365, %241
  %.3246369 = phi i32 [ %.3246368, %.thread365 ], [ 0, %241 ]
  %251 = load ptr, ptr %15, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %251) #3
  %252 = load ptr, ptr %13, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %252) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %132) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %119) #3
  %253 = load ptr, ptr %11, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %253) #3
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67) #3
  %254 = load ptr, ptr %9, align 8, !tbaa !17
  call void @Longtail_Free(ptr noundef %254) #3
  %.not330 = icmp eq ptr %47, null
  br i1 %.not330, label %256, label %255

255:                                              ; preds = %250
  call void @Longtail_DisposeAPI(ptr noundef nonnull %47) #3
  br label %256

256:                                              ; preds = %255, %250
  %.not331 = icmp eq ptr %46, null
  br i1 %.not331, label %258, label %257

257:                                              ; preds = %256
  call void @Longtail_DisposeAPI(ptr noundef nonnull %46) #3
  br label %258

258:                                              ; preds = %257, %256
  %.not332 = icmp eq ptr %44, null
  br i1 %.not332, label %260, label %259

259:                                              ; preds = %258
  call void @Longtail_DisposeAPI(ptr noundef nonnull %44) #3
  br label %260

260:                                              ; preds = %259, %258
  %.not333 = icmp eq ptr %45, null
  br i1 %.not333, label %261, label %.sink.split

.sink.split:                                      ; preds = %260, %226
  %.2.ph = phi i32 [ %216, %226 ], [ %.3246369, %260 ]
  call void @Longtail_DisposeAPI(ptr noundef nonnull %45) #3
  br label %261

261:                                              ; preds = %.sink.split, %260, %226
  %.2 = phi i32 [ %216, %226 ], [ %.3246369, %260 ], [ %.2.ph, %.sink.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  br label %262

262:                                              ; preds = %212, %213, %261
  %.3 = phi i32 [ %.2, %261 ], [ %202, %213 ], [ %202, %212 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #3
  br label %263

263:                                              ; preds = %189, %190, %158, %159, %262
  %.4 = phi i32 [ %.3, %262 ], [ %149, %159 ], [ %149, %158 ], [ 0, %190 ], [ 0, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  br label %264

264:                                              ; preds = %.thread, %130, %129, %142, %143, %263
  %.7 = phi i32 [ 12, %130 ], [ 12, %129 ], [ %.4, %263 ], [ 12, %143 ], [ 12, %142 ], [ %.1.ph, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #3
  br label %265

265:                                              ; preds = %264, %76, %65
  %.9 = phi i32 [ %57, %65 ], [ %.7, %264 ], [ 0, %76 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #3
  br label %266

266:                                              ; preds = %265, %49
  %.10 = phi i32 [ %48, %49 ], [ %.9, %265 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #3
  ret i32 %.10
}

declare i32 @Longtail_ReadArchiveIndex(ptr noundef, ptr noundef, ptr 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 = !{!7, !7, i64 0}
!18 = !{!19, !7, i64 120}
!19 = !{!"Longtail_ArchiveIndex", !7, i64 0, !7, i64 8, !20, i64 16, !7, i64 96, !7, i64 104, !21, i64 112}
!20 = !{!"Longtail_StoreIndex", !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}
!21 = !{!"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, !22, i64 128, !7, i64 136, !7, i64 144}
!22 = !{!"int", !8, i64 0}
!23 = !{!22, !22, i64 0}
!24 = !{!25, !7, i64 8}
!25 = !{!"Longtail_HashRegistryAPI", !26, i64 0, !7, i64 8}
!26 = !{!"Longtail_API", !7, i64 0}
!27 = !{!28, !22, i64 0}
!28 = !{!"Longtail_FileInfos", !22, i64 0, !22, i64 4, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!19, !7, i64 128}
!32 = !{!33, !7, i64 0}
!33 = !{!"Longtail_VersionDiff", !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}
!34 = !{!33, !7, i64 16}
!35 = !{!33, !7, i64 8}
!36 = !{!33, !7, i64 24}
!37 = !{!19, !7, i64 144}


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