; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN44Longtail_TestChangeVersionDiskFull (TestCase8TestBodyEv)

; 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.FailableStorageAPI = type { %struct.Longtail_StorageAPI, ptr, i32, i32 }
%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_API = type { ptr }
%struct.jc_test_fixture = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.jc_test_stats, i32, i32, i32, i32 }
%struct.jc_test_stats = type { i32, i32, i32, i32, i64 }
%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_ConcurrentChunkWriteAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, 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_HashAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_CompressionRegistryAPI = type { %struct.Longtail_API, ptr }

@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.470 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.489 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.490 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.688 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.689 = external hidden unnamed_addr constant [101 x i8], align 1
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [1 x ptr], align 8
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [1 x ptr], align 8
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_PERMISSIONS = external hidden unnamed_addr constant [1 x i16], align 2
@.str.712 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.714 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.715 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.716 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.717 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.718 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.719 = external hidden unnamed_addr constant [170 x i8], align 1
@.str.720 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.721 = external hidden unnamed_addr constant [196 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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZL19jc_test_get_fixturev() #2

declare void @_Z28jc_test_increment_assertionsv() #1

declare void @_Z21jc_test_set_test_faili(i32 noundef) #1

declare void @Longtail_Free(ptr noundef) #1

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, ptr noundef) #4 align 2

declare void @Longtail_DisposeAPI(ptr noundef) #1

declare ptr @Longtail_CreateBlake3HashAPI() #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

declare ptr @Longtail_CreateHPCDCChunkerAPI() #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare ptr @Longtail_CreateInMemStorageAPI() #1

declare ptr @Longtail_CreateFullCompressionRegistry() #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP20Longtail_VersionDiffS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

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) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca [1 x ptr], align 8
  %19 = alloca [1 x ptr], align 8
  %20 = alloca [1 x i64], align 8
  %21 = alloca [1 x i16], align 2
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %60 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #6
  %61 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %61, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #6
  %62 = load ptr, ptr %3, align 8, !tbaa !5
  %63 = call noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef %62)
  store ptr %63, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  %64 = load ptr, ptr %3, align 8, !tbaa !5
  %65 = call noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef %64)
  store ptr %65, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.FailableStorageAPI, ptr %66, i32 0, i32 0
  store ptr %67, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.FailableStorageAPI, ptr %68, i32 0, i32 0
  store ptr %69, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %70 = call ptr @Longtail_CreateFullCompressionRegistry()
  store ptr %70, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %71 = call ptr @Longtail_CreateBlake3HashAPI()
  store ptr %71, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %72 = call ptr @Longtail_CreateHPCDCChunkerAPI()
  store ptr %72, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  %73 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  store ptr %73, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %74 = load ptr, ptr %11, align 8, !tbaa !5
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %74, ptr noundef %75, ptr noundef @.str.601, ptr noundef null, i32 noundef 0)
  store ptr %76, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %77 = load ptr, ptr %11, align 8, !tbaa !5
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %77, ptr noundef %78, ptr noundef @.str.270, ptr noundef null, i32 noundef 0)
  store ptr %79, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %80 = load ptr, ptr %13, align 8, !tbaa !5
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %80, ptr noundef %81)
  store ptr %82, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %83 = load ptr, ptr %11, align 8, !tbaa !5
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  %85 = load ptr, ptr %13, align 8, !tbaa !5
  %86 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %83, ptr noundef %84, ptr noundef %85)
  store ptr %86, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %87 = load ptr, ptr %15, align 8, !tbaa !5
  %88 = load ptr, ptr %8, align 8, !tbaa !5
  %89 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %87, ptr noundef %88)
  store ptr %89, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 1, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_FILENAMES, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_STRINGS, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %90 = getelementptr inbounds [1 x ptr], ptr %19, i64 0, i64 0
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = call i64 @strlen(ptr noundef %91) #7
  %93 = add i64 %92, 1
  store i64 %93, ptr %20, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %21) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_PERMISSIONS, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %94

94:                                               ; preds = %215, %1
  %95 = load i32, ptr %22, align 4, !tbaa !9
  %96 = icmp ult i32 %95, 1
  br i1 %96, label %98, label %97

97:                                               ; preds = %94
  store i32 2, ptr %23, align 4
  br label %218

98:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %99, i32 0, i32 12
  %101 = load ptr, ptr %100, align 8, !tbaa !13
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = load i32, ptr %22, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds [1 x ptr], ptr %18, i64 0, i64 %104
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  %107 = call noundef ptr %101(ptr noundef %102, ptr noundef @.str.677, ptr noundef %106)
  store ptr %107, ptr %24, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %98
  %109 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %110 = getelementptr inbounds %struct.jc_test_fixture, ptr %109, i32 0, i32 11
  %111 = load i32, ptr %110, align 8
  %112 = and i32 %111, -16776961
  %113 = or i32 %112, 1485056
  store i32 %113, ptr %110, align 8
  %114 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %115 = getelementptr inbounds %struct.jc_test_fixture, ptr %114, i32 0, i32 4
  store ptr @.str.3, ptr %115, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = load ptr, ptr %24, align 8, !tbaa !5
  %118 = call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %116, ptr noundef %117)
  %119 = call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %118, ptr noundef @.str.46, ptr noundef @.str.712)
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %122

121:                                              ; preds = %108
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %212

122:                                              ; preds = %108
  br label %123

123:                                              ; preds = %122
  br label %124

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  br label %125

125:                                              ; preds = %124
  %126 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %127 = getelementptr inbounds %struct.jc_test_fixture, ptr %126, i32 0, i32 11
  %128 = load i32, ptr %127, align 8
  %129 = and i32 %128, -16776961
  %130 = or i32 %129, 1485568
  store i32 %130, ptr %127, align 8
  %131 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %132 = getelementptr inbounds %struct.jc_test_fixture, ptr %131, i32 0, i32 4
  store ptr @.str.3, ptr %132, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %133, i32 0, i32 4
  %135 = load ptr, ptr %134, align 8, !tbaa !19
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = load ptr, ptr %24, align 8, !tbaa !5
  %138 = call noundef i32 %135(ptr noundef %136, ptr noundef %137, i64 noundef 0, ptr noundef %25)
  store i32 %138, ptr %27, align 4, !tbaa !9
  %139 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef @.str.46, ptr noundef @.str.713, ptr noundef null)
  %140 = icmp eq i32 %139, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br i1 %140, label %141, label %142

141:                                              ; preds = %125
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %211

142:                                              ; preds = %125
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  br label %145

145:                                              ; preds = %144
  %146 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %147 = getelementptr inbounds %struct.jc_test_fixture, ptr %146, i32 0, i32 11
  %148 = load i32, ptr %147, align 8
  %149 = and i32 %148, -16776961
  %150 = or i32 %149, 1485824
  store i32 %150, ptr %147, align 8
  %151 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %152 = getelementptr inbounds %struct.jc_test_fixture, ptr %151, i32 0, i32 4
  store ptr @.str.3, ptr %152, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %153 = load ptr, ptr %25, align 8, !tbaa !5
  %154 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %153, ptr noundef @.str.388, ptr noundef @.str.389)
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %145
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %211

157:                                              ; preds = %145
  br label %158

158:                                              ; preds = %157
  br label %159

159:                                              ; preds = %158
  %160 = load i32, ptr %22, align 4, !tbaa !9
  %161 = zext i32 %160 to i64
  %162 = getelementptr inbounds [1 x i64], ptr %20, i64 0, i64 %161
  %163 = load i64, ptr %162, align 8, !tbaa !11
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %194

165:                                              ; preds = %159
  br label %166

166:                                              ; preds = %165
  %167 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %168 = getelementptr inbounds %struct.jc_test_fixture, ptr %167, i32 0, i32 11
  %169 = load i32, ptr %168, align 8
  %170 = and i32 %169, -16776961
  %171 = or i32 %170, 1486592
  store i32 %171, ptr %168, align 8
  %172 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %173 = getelementptr inbounds %struct.jc_test_fixture, ptr %172, i32 0, i32 4
  store ptr @.str.3, ptr %173, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %174, i32 0, i32 5
  %176 = load ptr, ptr %175, align 8, !tbaa !20
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  %179 = load i32, ptr %22, align 4, !tbaa !9
  %180 = zext i32 %179 to i64
  %181 = getelementptr inbounds [1 x i64], ptr %20, i64 0, i64 %180
  %182 = load i64, ptr %181, align 8, !tbaa !11
  %183 = load i32, ptr %22, align 4, !tbaa !9
  %184 = zext i32 %183 to i64
  %185 = getelementptr inbounds [1 x ptr], ptr %19, i64 0, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = call noundef i32 %176(ptr noundef %177, ptr noundef %178, i64 noundef 0, i64 noundef %182, ptr noundef %186)
  store i32 %187, ptr %29, align 4, !tbaa !9
  %188 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef @.str.46, ptr noundef @.str.714, ptr noundef null)
  %189 = icmp eq i32 %188, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br i1 %189, label %190, label %191

190:                                              ; preds = %166
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %211

191:                                              ; preds = %166
  br label %192

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %192
  br label %194

194:                                              ; preds = %193, %159
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %195, i32 0, i32 9
  %197 = load ptr, ptr %196, align 8, !tbaa !21
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  call void %197(ptr noundef %198, ptr noundef %199)
  store ptr null, ptr %25, align 8, !tbaa !5
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %200, i32 0, i32 7
  %202 = load ptr, ptr %201, align 8, !tbaa !22
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i32, ptr %22, align 4, !tbaa !9
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds [1 x i16], ptr %21, i64 0, i64 %206
  %208 = load i16, ptr %207, align 2, !tbaa !23
  %209 = call noundef i32 %202(ptr noundef %203, ptr noundef %204, i16 noundef zeroext %208)
  %210 = load ptr, ptr %24, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %210)
  store i32 0, ptr %23, align 4
  br label %211

211:                                              ; preds = %194, %190, %156, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %212

212:                                              ; preds = %211, %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  %213 = load i32, ptr %23, align 4
  switch i32 %213, label %218 [
    i32 0, label %214
  ]

214:                                              ; preds = %212
  br label %215

215:                                              ; preds = %214
  %216 = load i32, ptr %22, align 4, !tbaa !9
  %217 = add i32 %216, 1
  store i32 %217, ptr %22, align 4, !tbaa !9
  br label %94, !llvm.loop !25

218:                                              ; preds = %212, %97
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  %219 = load i32, ptr %23, align 4
  switch i32 %219, label %637 [
    i32 2, label %220
  ]

220:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  br label %221

221:                                              ; preds = %220
  %222 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %223 = getelementptr inbounds %struct.jc_test_fixture, ptr %222, i32 0, i32 11
  %224 = load i32, ptr %223, align 8
  %225 = and i32 %224, -16776961
  %226 = or i32 %225, 1488896
  store i32 %226, ptr %223, align 8
  %227 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %228 = getelementptr inbounds %struct.jc_test_fixture, ptr %227, i32 0, i32 4
  store ptr @.str.3, ptr %228, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = load ptr, ptr %11, align 8, !tbaa !5
  %231 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %229, ptr noundef %230, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.677, ptr noundef %30)
  store i32 %231, ptr %32, align 4, !tbaa !9
  %232 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef @.str.46, ptr noundef @.str.715, ptr noundef null)
  %233 = icmp eq i32 %232, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br i1 %233, label %234, label %235

234:                                              ; preds = %221
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %636

235:                                              ; preds = %221
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236
  br label %238

238:                                              ; preds = %237
  %239 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %240 = getelementptr inbounds %struct.jc_test_fixture, ptr %239, i32 0, i32 11
  %241 = load i32, ptr %240, align 8
  %242 = and i32 %241, -16776961
  %243 = or i32 %242, 1489152
  store i32 %243, ptr %240, align 8
  %244 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %245 = getelementptr inbounds %struct.jc_test_fixture, ptr %244, i32 0, i32 4
  store ptr @.str.3, ptr %245, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %246 = load ptr, ptr %30, align 8, !tbaa !5
  %247 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %246, ptr noundef @.str.253, ptr noundef @.str.679)
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %249, label %250

249:                                              ; preds = %238
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %636

250:                                              ; preds = %238
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %253 = load ptr, ptr %6, align 8, !tbaa !5
  %254 = load ptr, ptr %30, align 8, !tbaa !5
  %255 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef %253, ptr noundef %254)
  store ptr %255, ptr %33, align 8, !tbaa !5
  br label %256

256:                                              ; preds = %252
  %257 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %258 = getelementptr inbounds %struct.jc_test_fixture, ptr %257, i32 0, i32 11
  %259 = load i32, ptr %258, align 8
  %260 = and i32 %259, -16776961
  %261 = or i32 %260, 1489664
  store i32 %261, ptr %258, align 8
  %262 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %263 = getelementptr inbounds %struct.jc_test_fixture, ptr %262, i32 0, i32 4
  store ptr @.str.3, ptr %263, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %264 = load ptr, ptr %33, align 8, !tbaa !5
  %265 = call noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef null, ptr noundef %264, ptr noundef @.str.255, ptr noundef @.str.256)
  %266 = icmp eq i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %256
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %635

268:                                              ; preds = %256
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  br label %271

271:                                              ; preds = %270
  %272 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %273 = getelementptr inbounds %struct.jc_test_fixture, ptr %272, i32 0, i32 11
  %274 = load i32, ptr %273, align 8
  %275 = and i32 %274, -16776961
  %276 = or i32 %275, 1493504
  store i32 %276, ptr %273, align 8
  %277 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %278 = getelementptr inbounds %struct.jc_test_fixture, ptr %277, i32 0, i32 4
  store ptr @.str.3, ptr %278, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %279 = load ptr, ptr %6, align 8, !tbaa !5
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = load ptr, ptr %10, align 8, !tbaa !5
  %282 = load ptr, ptr %11, align 8, !tbaa !5
  %283 = load ptr, ptr %30, align 8, !tbaa !5
  %284 = load ptr, ptr %33, align 8, !tbaa !5
  %285 = call i32 @Longtail_CreateVersionIndex(ptr noundef %279, ptr noundef %280, ptr noundef %281, ptr noundef %282, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.677, ptr noundef %283, ptr noundef %284, i32 noundef 48, i32 noundef 0, ptr noundef %34)
  store i32 %285, ptr %36, align 4, !tbaa !9
  %286 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef @.str.46, ptr noundef @.str.716, ptr noundef null)
  %287 = icmp eq i32 %286, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br i1 %287, label %288, label %289

288:                                              ; preds = %271
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %634

289:                                              ; preds = %271
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  br label %292

292:                                              ; preds = %291
  %293 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %294 = getelementptr inbounds %struct.jc_test_fixture, ptr %293, i32 0, i32 11
  %295 = load i32, ptr %294, align 8
  %296 = and i32 %295, -16776961
  %297 = or i32 %296, 1493760
  store i32 %297, ptr %294, align 8
  %298 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %299 = getelementptr inbounds %struct.jc_test_fixture, ptr %298, i32 0, i32 4
  store ptr @.str.3, ptr %299, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %300 = load ptr, ptr %34, align 8, !tbaa !5
  %301 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %300, ptr noundef @.str.259, ptr noundef @.str.260)
  %302 = icmp eq i32 %301, 0
  br i1 %302, label %303, label %304

303:                                              ; preds = %292
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %634

304:                                              ; preds = %292
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  %307 = load ptr, ptr %33, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %307)
  store ptr null, ptr %33, align 8, !tbaa !5
  %308 = load ptr, ptr %30, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %308)
  store ptr null, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %309 = load ptr, ptr %14, align 8, !tbaa !5
  %310 = load ptr, ptr %34, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %310, i32 0, i32 4
  %312 = load ptr, ptr %311, align 8, !tbaa !27
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = load ptr, ptr %34, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %314, i32 0, i32 12
  %316 = load ptr, ptr %315, align 8, !tbaa !29
  %317 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %309, i32 noundef %313, ptr noundef %316, i32 noundef 0)
  store ptr %317, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  br label %318

318:                                              ; preds = %306
  %319 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %320 = getelementptr inbounds %struct.jc_test_fixture, ptr %319, i32 0, i32 11
  %321 = load i32, ptr %320, align 8
  %322 = and i32 %321, -16776961
  %323 = or i32 %322, 1497600
  store i32 %323, ptr %320, align 8
  %324 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %325 = getelementptr inbounds %struct.jc_test_fixture, ptr %324, i32 0, i32 4
  store ptr @.str.3, ptr %325, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  %327 = load ptr, ptr %37, align 8, !tbaa !5
  %328 = load ptr, ptr %34, align 8, !tbaa !5
  %329 = call i32 @Longtail_CreateMissingContent(ptr noundef %326, ptr noundef %327, ptr noundef %328, i32 noundef 32, i32 noundef 1, ptr noundef %38)
  store i32 %329, ptr %40, align 4, !tbaa !9
  %330 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef @.str.46, ptr noundef @.str.412, ptr noundef null)
  %331 = icmp eq i32 %330, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br i1 %331, label %332, label %333

332:                                              ; preds = %318
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %633

333:                                              ; preds = %318
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  %337 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %338 = getelementptr inbounds %struct.jc_test_fixture, ptr %337, i32 0, i32 11
  %339 = load i32, ptr %338, align 8
  %340 = and i32 %339, -16776961
  %341 = or i32 %340, 1500416
  store i32 %341, ptr %338, align 8
  %342 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %343 = getelementptr inbounds %struct.jc_test_fixture, ptr %342, i32 0, i32 4
  store ptr @.str.3, ptr %343, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store i32 0, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %344 = load ptr, ptr %6, align 8, !tbaa !5
  %345 = load ptr, ptr %14, align 8, !tbaa !5
  %346 = load ptr, ptr %11, align 8, !tbaa !5
  %347 = load ptr, ptr %38, align 8, !tbaa !5
  %348 = load ptr, ptr %34, align 8, !tbaa !5
  %349 = call i32 @Longtail_WriteContent(ptr noundef %344, ptr noundef %345, ptr noundef %346, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %347, ptr noundef %348, ptr noundef @.str.677)
  store i32 %349, ptr %42, align 4, !tbaa !9
  %350 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef @.str.46, ptr noundef @.str.717, ptr noundef null)
  %351 = icmp eq i32 %350, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br i1 %351, label %352, label %353

352:                                              ; preds = %336
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %633

353:                                              ; preds = %336
  br label %354

354:                                              ; preds = %353
  br label %355

355:                                              ; preds = %354
  %356 = load ptr, ptr %38, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %356)
  store ptr null, ptr %38, align 8, !tbaa !5
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %357)
  store ptr null, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  br label %358

358:                                              ; preds = %355
  %359 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %360 = getelementptr inbounds %struct.jc_test_fixture, ptr %359, i32 0, i32 11
  %361 = load i32, ptr %360, align 8
  %362 = and i32 %361, -16776961
  %363 = or i32 %362, 1502208
  store i32 %363, ptr %360, align 8
  %364 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %365 = getelementptr inbounds %struct.jc_test_fixture, ptr %364, i32 0, i32 4
  store ptr @.str.3, ptr %365, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %366 = load ptr, ptr %6, align 8, !tbaa !5
  %367 = load ptr, ptr %11, align 8, !tbaa !5
  %368 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %366, ptr noundef %367, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.681, ptr noundef %43)
  store i32 %368, ptr %45, align 4, !tbaa !9
  %369 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef @.str.46, ptr noundef @.str.718, ptr noundef null)
  %370 = icmp eq i32 %369, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br i1 %370, label %371, label %372

371:                                              ; preds = %358
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %632

372:                                              ; preds = %358
  br label %373

373:                                              ; preds = %372
  br label %374

374:                                              ; preds = %373
  br label %375

375:                                              ; preds = %374
  %376 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %377 = getelementptr inbounds %struct.jc_test_fixture, ptr %376, i32 0, i32 11
  %378 = load i32, ptr %377, align 8
  %379 = and i32 %378, -16776961
  %380 = or i32 %379, 1502464
  store i32 %380, ptr %377, align 8
  %381 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %382 = getelementptr inbounds %struct.jc_test_fixture, ptr %381, i32 0, i32 4
  store ptr @.str.3, ptr %382, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %383 = load ptr, ptr %43, align 8, !tbaa !5
  %384 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %383, ptr noundef @.str.253, ptr noundef @.str.683)
  %385 = icmp eq i32 %384, 0
  br i1 %385, label %386, label %387

386:                                              ; preds = %375
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %632

387:                                              ; preds = %375
  br label %388

388:                                              ; preds = %387
  br label %389

389:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = load ptr, ptr %43, align 8, !tbaa !5
  %392 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef %390, ptr noundef %391)
  store ptr %392, ptr %46, align 8, !tbaa !5
  br label %393

393:                                              ; preds = %389
  %394 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %395 = getelementptr inbounds %struct.jc_test_fixture, ptr %394, i32 0, i32 11
  %396 = load i32, ptr %395, align 8
  %397 = and i32 %396, -16776961
  %398 = or i32 %397, 1502976
  store i32 %398, ptr %395, align 8
  %399 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %400 = getelementptr inbounds %struct.jc_test_fixture, ptr %399, i32 0, i32 4
  store ptr @.str.3, ptr %400, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %401 = load ptr, ptr %46, align 8, !tbaa !5
  %402 = call noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef null, ptr noundef %401, ptr noundef @.str.255, ptr noundef @.str.684)
  %403 = icmp eq i32 %402, 0
  br i1 %403, label %404, label %405

404:                                              ; preds = %393
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %631

405:                                              ; preds = %393
  br label %406

406:                                              ; preds = %405
  br label %407

407:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  br label %408

408:                                              ; preds = %407
  %409 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %410 = getelementptr inbounds %struct.jc_test_fixture, ptr %409, i32 0, i32 11
  %411 = load i32, ptr %410, align 8
  %412 = and i32 %411, -16776961
  %413 = or i32 %412, 1506816
  store i32 %413, ptr %410, align 8
  %414 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %415 = getelementptr inbounds %struct.jc_test_fixture, ptr %414, i32 0, i32 4
  store ptr @.str.3, ptr %415, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 0, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %416 = load ptr, ptr %6, align 8, !tbaa !5
  %417 = load ptr, ptr %9, align 8, !tbaa !5
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  %419 = load ptr, ptr %11, align 8, !tbaa !5
  %420 = load ptr, ptr %43, align 8, !tbaa !5
  %421 = load ptr, ptr %46, align 8, !tbaa !5
  %422 = call i32 @Longtail_CreateVersionIndex(ptr noundef %416, ptr noundef %417, ptr noundef %418, ptr noundef %419, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.681, ptr noundef %420, ptr noundef %421, i32 noundef 16, i32 noundef 0, ptr noundef %47)
  store i32 %422, ptr %49, align 4, !tbaa !9
  %423 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef @.str.46, ptr noundef @.str.719, ptr noundef null)
  %424 = icmp eq i32 %423, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br i1 %424, label %425, label %426

425:                                              ; preds = %408
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %630

426:                                              ; preds = %408
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  %430 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %431 = getelementptr inbounds %struct.jc_test_fixture, ptr %430, i32 0, i32 11
  %432 = load i32, ptr %431, align 8
  %433 = and i32 %432, -16776961
  %434 = or i32 %433, 1507072
  store i32 %434, ptr %431, align 8
  %435 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %436 = getelementptr inbounds %struct.jc_test_fixture, ptr %435, i32 0, i32 4
  store ptr @.str.3, ptr %436, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %437 = load ptr, ptr %47, align 8, !tbaa !5
  %438 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %437, ptr noundef @.str.259, ptr noundef @.str.686)
  %439 = icmp eq i32 %438, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %429
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %630

441:                                              ; preds = %429
  br label %442

442:                                              ; preds = %441
  br label %443

443:                                              ; preds = %442
  %444 = load ptr, ptr %46, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %444)
  store ptr null, ptr %46, align 8, !tbaa !5
  %445 = load ptr, ptr %43, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %445)
  store ptr null, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  br label %446

446:                                              ; preds = %443
  %447 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %448 = getelementptr inbounds %struct.jc_test_fixture, ptr %447, i32 0, i32 11
  %449 = load i32, ptr %448, align 8
  %450 = and i32 %449, -16776961
  %451 = or i32 %450, 1509888
  store i32 %451, ptr %448, align 8
  %452 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %453 = getelementptr inbounds %struct.jc_test_fixture, ptr %452, i32 0, i32 4
  store ptr @.str.3, ptr %453, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 0, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %454 = load ptr, ptr %9, align 8, !tbaa !5
  %455 = load ptr, ptr %47, align 8, !tbaa !5
  %456 = load ptr, ptr %34, align 8, !tbaa !5
  %457 = call i32 @Longtail_CreateVersionDiff(ptr noundef %454, ptr noundef %455, ptr noundef %456, ptr noundef %50)
  store i32 %457, ptr %52, align 4, !tbaa !9
  %458 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef @.str.46, ptr noundef @.str.688, ptr noundef null)
  %459 = icmp eq i32 %458, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br i1 %459, label %460, label %461

460:                                              ; preds = %446
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %629

461:                                              ; preds = %446
  br label %462

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463
  %465 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %466 = getelementptr inbounds %struct.jc_test_fixture, ptr %465, i32 0, i32 11
  %467 = load i32, ptr %466, align 8
  %468 = and i32 %467, -16776961
  %469 = or i32 %468, 1510144
  store i32 %469, ptr %466, align 8
  %470 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %471 = getelementptr inbounds %struct.jc_test_fixture, ptr %470, i32 0, i32 4
  store ptr @.str.3, ptr %471, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  %472 = load ptr, ptr %50, align 8, !tbaa !5
  %473 = call noundef i32 @_Z14jc_test_cmp_NEIP20Longtail_VersionDiffS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %472, ptr noundef @.str.489, ptr noundef @.str.490)
  %474 = icmp eq i32 %473, 0
  br i1 %474, label %475, label %476

475:                                              ; preds = %464
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %629

476:                                              ; preds = %464
  br label %477

477:                                              ; preds = %476
  br label %478

478:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %479 = load ptr, ptr %34, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %479, i32 0, i32 4
  %481 = load ptr, ptr %480, align 8, !tbaa !27
  %482 = load i32, ptr %481, align 4, !tbaa !9
  %483 = zext i32 %482 to i64
  %484 = mul i64 8, %483
  %485 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %484)
  store ptr %485, ptr %54, align 8, !tbaa !5
  br label %486

486:                                              ; preds = %478
  %487 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %488 = getelementptr inbounds %struct.jc_test_fixture, ptr %487, i32 0, i32 11
  %489 = load i32, ptr %488, align 8
  %490 = and i32 %489, -16776961
  %491 = or i32 %490, 1512192
  store i32 %491, ptr %488, align 8
  %492 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %493 = getelementptr inbounds %struct.jc_test_fixture, ptr %492, i32 0, i32 4
  store ptr @.str.3, ptr %493, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %494 = load ptr, ptr %34, align 8, !tbaa !5
  %495 = load ptr, ptr %50, align 8, !tbaa !5
  %496 = load ptr, ptr %54, align 8, !tbaa !5
  %497 = call i32 @Longtail_GetRequiredChunkHashes(ptr noundef %494, ptr noundef %495, ptr noundef %53, ptr noundef %496)
  store i32 %497, ptr %56, align 4, !tbaa !9
  %498 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef @.str.46, ptr noundef @.str.689, ptr noundef null)
  %499 = icmp eq i32 %498, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br i1 %499, label %500, label %501

500:                                              ; preds = %486
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %628

501:                                              ; preds = %486
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  %504 = load ptr, ptr %14, align 8, !tbaa !5
  %505 = load i32, ptr %53, align 4, !tbaa !9
  %506 = load ptr, ptr %54, align 8, !tbaa !5
  %507 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %504, i32 noundef %505, ptr noundef %506, i32 noundef 0)
  store ptr %507, ptr %37, align 8, !tbaa !5
  %508 = load ptr, ptr %54, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %508)
  call void @Longtail_SetLogLevel(i32 noundef 4)
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.FailableStorageAPI, ptr %509, i32 0, i32 2
  store i32 3, ptr %510, align 8, !tbaa !30
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.FailableStorageAPI, ptr %511, i32 0, i32 3
  store i32 28, ptr %512, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  %513 = load ptr, ptr %6, align 8, !tbaa !5
  %514 = load ptr, ptr %34, align 8, !tbaa !5
  %515 = load ptr, ptr %50, align 8, !tbaa !5
  %516 = call ptr @Longtail_CreateConcurrentChunkWriteAPI(ptr noundef %513, ptr noundef %514, ptr noundef %515, ptr noundef @.str.470)
  store ptr %516, ptr %57, align 8, !tbaa !5
  br label %517

517:                                              ; preds = %503
  %518 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %519 = getelementptr inbounds %struct.jc_test_fixture, ptr %518, i32 0, i32 11
  %520 = load i32, ptr %519, align 8
  %521 = and i32 %520, -16776961
  %522 = or i32 %521, 1518080
  store i32 %522, ptr %519, align 8
  %523 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %524 = getelementptr inbounds %struct.jc_test_fixture, ptr %523, i32 0, i32 4
  store ptr @.str.3, ptr %524, align 8, !tbaa !16
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 28, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %525 = load ptr, ptr %16, align 8, !tbaa !5
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  %527 = load ptr, ptr %57, align 8, !tbaa !5
  %528 = load ptr, ptr %9, align 8, !tbaa !5
  %529 = load ptr, ptr %11, align 8, !tbaa !5
  %530 = load ptr, ptr %37, align 8, !tbaa !5
  %531 = load ptr, ptr %47, align 8, !tbaa !5
  %532 = load ptr, ptr %34, align 8, !tbaa !5
  %533 = load ptr, ptr %50, align 8, !tbaa !5
  %534 = call i32 @Longtail_ChangeVersion2(ptr noundef %525, ptr noundef %526, ptr noundef %527, ptr noundef %528, ptr noundef %529, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %530, ptr noundef %531, ptr noundef %532, ptr noundef %533, ptr noundef @.str.470, i32 noundef 1)
  store i32 %534, ptr %59, align 4, !tbaa !9
  %535 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef @.str.720, ptr noundef @.str.721)
  %536 = icmp eq i32 %535, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br i1 %536, label %537, label %538

537:                                              ; preds = %517
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %23, align 4
  br label %627

538:                                              ; preds = %517
  br label %539

539:                                              ; preds = %538
  br label %540

540:                                              ; preds = %539
  %541 = load ptr, ptr %57, align 8, !tbaa !5
  %542 = icmp ne ptr %541, null
  br i1 %542, label %543, label %546

543:                                              ; preds = %540
  %544 = load ptr, ptr %57, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.Longtail_ConcurrentChunkWriteAPI, ptr %544, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %545)
  br label %546

546:                                              ; preds = %543, %540
  call void @Longtail_SetLogLevel(i32 noundef 3)
  %547 = load ptr, ptr %37, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %547)
  %548 = load ptr, ptr %50, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %548)
  %549 = load ptr, ptr %47, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %549)
  %550 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %550)
  %551 = load ptr, ptr %16, align 8, !tbaa !5
  %552 = icmp ne ptr %551, null
  br i1 %552, label %553, label %556

553:                                              ; preds = %546
  %554 = load ptr, ptr %16, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %554, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %555)
  br label %556

556:                                              ; preds = %553, %546
  %557 = load ptr, ptr %15, align 8, !tbaa !5
  %558 = icmp ne ptr %557, null
  br i1 %558, label %559, label %562

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

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

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

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

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

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

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

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

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

586:                                              ; preds = %583, %580
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = icmp ne ptr %587, null
  br i1 %588, label %589, label %592

589:                                              ; preds = %586
  %590 = load ptr, ptr %10, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %590, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %591)
  br label %592

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

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

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

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

604:                                              ; preds = %601, %598
  %605 = load ptr, ptr %5, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.FailableStorageAPI, ptr %605, i32 0, i32 0
  %607 = icmp ne ptr %606, null
  br i1 %607, label %608, label %612

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

612:                                              ; preds = %608, %604
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.FailableStorageAPI, ptr %613, i32 0, i32 0
  %615 = icmp ne ptr %614, null
  br i1 %615, label %616, label %620

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

620:                                              ; preds = %616, %612
  %621 = load ptr, ptr %3, align 8, !tbaa !5
  %622 = icmp ne ptr %621, null
  br i1 %622, label %623, label %626

623:                                              ; preds = %620
  %624 = load ptr, ptr %3, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %624, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %625)
  br label %626

626:                                              ; preds = %623, %620
  store i32 0, ptr %23, align 4
  br label %627

627:                                              ; preds = %626, %537
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  br label %628

628:                                              ; preds = %627, %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %629

629:                                              ; preds = %628, %475, %460
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  br label %630

630:                                              ; preds = %629, %440, %425
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br label %631

631:                                              ; preds = %630, %404
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %632

632:                                              ; preds = %631, %386, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  br label %633

633:                                              ; preds = %632, %352, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %634

634:                                              ; preds = %633, %303, %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %635

635:                                              ; preds = %634, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  br label %636

636:                                              ; preds = %635, %249, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %637

637:                                              ; preds = %636, %218
  call void @llvm.lifetime.end.p0(i64 2, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #6
  %638 = load i32, ptr %23, align 4
  switch i32 %638, label %640 [
    i32 0, label %639
    i32 1, label %639
  ]

639:                                              ; preds = %637, %637
  ret void

640:                                              ; preds = %637
  unreachable
}

declare void @Longtail_SetLogLevel(i32 noundef) #1

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

!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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !6, i64 96}
!14 = !{!"_ZTS19Longtail_StorageAPI", !15, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!15 = !{!"_ZTS12Longtail_API", !6, i64 0}
!16 = !{!17, !6, i64 32}
!17 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !18, i64 64, !10, i64 88, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 92, !10, i64 96, !10, i64 97, !10, i64 99, !10, i64 100}
!18 = !{!"_ZTS13jc_test_stats", !10, i64 0, !10, i64 4, !10, i64 6, !10, i64 8, !10, i64 12, !12, i64 16}
!19 = !{!14, !6, i64 32}
!20 = !{!14, !6, i64 40}
!21 = !{!14, !6, i64 72}
!22 = !{!14, !6, i64 56}
!23 = !{!24, !24, i64 0}
!24 = !{!"short", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !6, i64 32}
!28 = !{!"_ZTS21Longtail_VersionIndex", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !6, i64 136, !6, i64 144}
!29 = !{!28, !6, i64 96}
!30 = !{!31, !10, i64 224}
!31 = !{!"_ZTS18FailableStorageAPI", !14, i64 0, !6, i64 216, !10, i64 224, !10, i64 228}
!32 = !{!31, !10, i64 228}


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

@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.470 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.489 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.490 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.688 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.689 = external hidden unnamed_addr constant [101 x i8], align 1
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [1 x ptr], align 8
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [1 x ptr], align 8
@__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_PERMISSIONS = external hidden unnamed_addr constant [1 x i16], align 2
@.str.712 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.714 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.715 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.716 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.717 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.718 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.719 = external hidden unnamed_addr constant [170 x i8], align 1
@.str.720 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.721 = external hidden unnamed_addr constant [196 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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZL19jc_test_get_fixturev() local_unnamed_addr #2

declare void @_Z28jc_test_increment_assertionsv() local_unnamed_addr #1

declare void @_Z21jc_test_set_test_faili(i32 noundef) local_unnamed_addr #1

declare void @Longtail_Free(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #1

declare ptr @Longtail_CreateBlake3HashAPI() local_unnamed_addr #1

declare ptr @Longtail_CreateHPCDCChunkerAPI() local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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 #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare ptr @Longtail_CreateInMemStorageAPI() local_unnamed_addr #1

declare ptr @Longtail_CreateFullCompressionRegistry() local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP20Longtail_VersionDiffS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

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 #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 {
.critedge142:
  %1 = alloca ptr, align 8
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = tail call ptr @Longtail_CreateInMemStorageAPI()
  %32 = tail call noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef %31)
  %33 = tail call noundef ptr @_Z24CreateFailableStorageAPIP19Longtail_StorageAPI(ptr noundef %31)
  %34 = tail call ptr @Longtail_CreateFullCompressionRegistry()
  %35 = tail call ptr @Longtail_CreateBlake3HashAPI()
  %36 = tail call ptr @Longtail_CreateHPCDCChunkerAPI()
  %37 = tail call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  %38 = tail call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %37, ptr noundef %32, ptr noundef nonnull @.str.601, ptr noundef null, i32 noundef 0)
  %39 = tail call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %37, ptr noundef %33, ptr noundef nonnull @.str.270, ptr noundef null, i32 noundef 0)
  %40 = tail call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %39, ptr noundef %34)
  %41 = tail call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %37, ptr noundef %38, ptr noundef %39)
  %42 = tail call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %41, ptr noundef %34)
  %43 = load ptr, ptr @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_STRINGS, align 8, !tbaa !5
  %44 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %43) #5
  %45 = add i64 %44, 1
  %46 = getelementptr inbounds i8, ptr %32, i64 96
  %47 = load ptr, ptr %46, align 8, !tbaa !9
  %48 = load ptr, ptr @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_FILENAMES, align 8, !tbaa !5
  %49 = tail call noundef ptr %47(ptr noundef %32, ptr noundef nonnull @.str.677, ptr noundef %48)
  %50 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %51 = getelementptr inbounds i8, ptr %50, i64 96
  %52 = load i32, ptr %51, align 8
  %53 = and i32 %52, -16776961
  %54 = or disjoint i32 %53, 1485056
  store i32 %54, ptr %51, align 8
  %55 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %56 = getelementptr inbounds i8, ptr %55, i64 32
  store ptr @.str.3, ptr %56, align 8, !tbaa !12
  tail call void @_Z28jc_test_increment_assertionsv()
  %57 = tail call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %32, ptr noundef %49)
  %58 = tail call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %57, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.712)
  %59 = icmp eq i32 %58, 0
  br i1 %59, label %.thread, label %60

.thread:                                          ; preds = %.critedge142
  tail call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %369

60:                                               ; preds = %.critedge142
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #6
  %61 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %62 = getelementptr inbounds i8, ptr %61, i64 96
  %63 = load i32, ptr %62, align 8
  %64 = and i32 %63, -16776961
  %65 = or disjoint i32 %64, 1485568
  store i32 %65, ptr %62, align 8
  %66 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %67 = getelementptr inbounds i8, ptr %66, i64 32
  store ptr @.str.3, ptr %67, align 8, !tbaa !12
  tail call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #6
  store i32 0, ptr %2, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  %68 = getelementptr inbounds i8, ptr %32, i64 32
  %69 = load ptr, ptr %68, align 8, !tbaa !18
  %70 = call noundef i32 %69(ptr noundef nonnull %32, ptr noundef %49, i64 noundef 0, ptr noundef nonnull %1)
  store i32 %70, ptr %3, align 4, !tbaa !17
  %71 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.713, ptr noundef null)
  %72 = icmp eq i32 %71, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  br i1 %72, label %.thread138, label %73

73:                                               ; preds = %60
  %74 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %75 = getelementptr inbounds i8, ptr %74, i64 96
  %76 = load i32, ptr %75, align 8
  %77 = and i32 %76, -16776961
  %78 = or disjoint i32 %77, 1485824
  store i32 %78, ptr %75, align 8
  %79 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %80 = getelementptr inbounds i8, ptr %79, i64 32
  store ptr @.str.3, ptr %80, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %81 = load ptr, ptr %1, align 8, !tbaa !5
  %82 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %81, ptr noundef nonnull @.str.388, ptr noundef nonnull @.str.389)
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %.thread138, label %84

84:                                               ; preds = %73
  %.not = icmp eq i64 %45, 0
  br i1 %.not, label %.critedge, label %85

85:                                               ; preds = %84
  %86 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %87 = getelementptr inbounds i8, ptr %86, i64 96
  %88 = load i32, ptr %87, align 8
  %89 = and i32 %88, -16776961
  %90 = or disjoint i32 %89, 1486592
  store i32 %90, ptr %87, align 8
  %91 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %92 = getelementptr inbounds i8, ptr %91, i64 32
  store ptr @.str.3, ptr %92, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 0, ptr %4, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %93 = getelementptr inbounds i8, ptr %32, i64 40
  %94 = load ptr, ptr %93, align 8, !tbaa !19
  %95 = load ptr, ptr %1, align 8, !tbaa !5
  %96 = call noundef i32 %94(ptr noundef nonnull %32, ptr noundef %95, i64 noundef 0, i64 noundef %45, ptr noundef %43)
  store i32 %96, ptr %5, align 4, !tbaa !17
  %97 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.714, ptr noundef null)
  %98 = icmp eq i32 %97, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br i1 %98, label %.thread138, label %.critedge

.thread138:                                       ; preds = %85, %73, %60
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #6
  br label %369

.critedge:                                        ; preds = %84, %85
  %99 = getelementptr inbounds i8, ptr %32, i64 72
  %100 = load ptr, ptr %99, align 8, !tbaa !20
  %101 = load ptr, ptr %1, align 8, !tbaa !5
  call void %100(ptr noundef nonnull %32, ptr noundef %101)
  store ptr null, ptr %1, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %32, i64 56
  %103 = load ptr, ptr %102, align 8, !tbaa !21
  %104 = load i16, ptr @__const._ZN44Longtail_TestChangeVersionDiskFull__TestCase8TestBodyEv.TEST_PERMISSIONS, align 2, !tbaa !22
  %105 = call noundef i32 %103(ptr noundef nonnull %32, ptr noundef %49, i16 noundef zeroext %104)
  call void @Longtail_Free(ptr noundef %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %106 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %107 = getelementptr inbounds i8, ptr %106, i64 96
  %108 = load i32, ptr %107, align 8
  %109 = and i32 %108, -16776961
  %110 = or disjoint i32 %109, 1488896
  store i32 %110, ptr %107, align 8
  %111 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %112 = getelementptr inbounds i8, ptr %111, i64 32
  store ptr @.str.3, ptr %112, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 0, ptr %7, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  %113 = call i32 @Longtail_GetFilesRecursively2(ptr noundef nonnull %32, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.677, ptr noundef nonnull %6)
  store i32 %113, ptr %8, align 4, !tbaa !17
  %114 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.715, ptr noundef null)
  %115 = icmp eq i32 %114, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  br i1 %115, label %116, label %117

116:                                              ; preds = %.critedge
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %368

117:                                              ; preds = %.critedge
  %118 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %119 = getelementptr inbounds i8, ptr %118, i64 96
  %120 = load i32, ptr %119, align 8
  %121 = and i32 %120, -16776961
  %122 = or disjoint i32 %121, 1489152
  store i32 %122, ptr %119, align 8
  %123 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %124 = getelementptr inbounds i8, ptr %123, i64 32
  store ptr @.str.3, ptr %124, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %125, ptr noundef nonnull @.str.253, ptr noundef nonnull @.str.679)
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %117
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %368

129:                                              ; preds = %117
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef nonnull %32, ptr noundef %130)
  %132 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %133 = getelementptr inbounds i8, ptr %132, i64 96
  %134 = load i32, ptr %133, align 8
  %135 = and i32 %134, -16776961
  %136 = or disjoint i32 %135, 1489664
  store i32 %136, ptr %133, align 8
  %137 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %138 = getelementptr inbounds i8, ptr %137, i64 32
  store ptr @.str.3, ptr %138, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %139 = call noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef null, ptr noundef %131, ptr noundef nonnull @.str.255, ptr noundef nonnull @.str.256)
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %129
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %368

142:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %143 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %144 = getelementptr inbounds i8, ptr %143, i64 96
  %145 = load i32, ptr %144, align 8
  %146 = and i32 %145, -16776961
  %147 = or disjoint i32 %146, 1493504
  store i32 %147, ptr %144, align 8
  %148 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %149 = getelementptr inbounds i8, ptr %148, i64 32
  store ptr @.str.3, ptr %149, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  store i32 0, ptr %10, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = call i32 @Longtail_CreateVersionIndex(ptr noundef nonnull %32, ptr noundef %35, ptr noundef %36, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.677, ptr noundef %150, ptr noundef %131, i32 noundef 48, i32 noundef 0, ptr noundef nonnull %9)
  store i32 %151, ptr %11, align 4, !tbaa !17
  %152 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.716, ptr noundef null)
  %153 = icmp eq i32 %152, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br i1 %153, label %154, label %155

154:                                              ; preds = %142
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %367

155:                                              ; preds = %142
  %156 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %157 = getelementptr inbounds i8, ptr %156, i64 96
  %158 = load i32, ptr %157, align 8
  %159 = and i32 %158, -16776961
  %160 = or disjoint i32 %159, 1493760
  store i32 %160, ptr %157, align 8
  %161 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %162 = getelementptr inbounds i8, ptr %161, i64 32
  store ptr @.str.3, ptr %162, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %163 = load ptr, ptr %9, align 8, !tbaa !5
  %164 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %163, ptr noundef nonnull @.str.259, ptr noundef nonnull @.str.260)
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %155
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %367

167:                                              ; preds = %155
  call void @Longtail_Free(ptr noundef %131)
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %168)
  store ptr null, ptr %6, align 8, !tbaa !5
  %169 = load ptr, ptr %9, align 8, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %169, i64 32
  %171 = load ptr, ptr %170, align 8, !tbaa !24
  %172 = load i32, ptr %171, align 4, !tbaa !17
  %173 = getelementptr inbounds i8, ptr %169, i64 96
  %174 = load ptr, ptr %173, align 8, !tbaa !26
  %175 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %40, i32 noundef %172, ptr noundef %174, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %176 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %177 = getelementptr inbounds i8, ptr %176, i64 96
  %178 = load i32, ptr %177, align 8
  %179 = and i32 %178, -16776961
  %180 = or disjoint i32 %179, 1497600
  store i32 %180, ptr %177, align 8
  %181 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %182 = getelementptr inbounds i8, ptr %181, i64 32
  store ptr @.str.3, ptr %182, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  store i32 0, ptr %13, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = call i32 @Longtail_CreateMissingContent(ptr noundef %35, ptr noundef %175, ptr noundef %183, i32 noundef 32, i32 noundef 1, ptr noundef nonnull %12)
  store i32 %184, ptr %14, align 4, !tbaa !17
  %185 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.412, ptr noundef null)
  %186 = icmp eq i32 %185, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br i1 %186, label %187, label %188

187:                                              ; preds = %167
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %366

188:                                              ; preds = %167
  %189 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %190 = getelementptr inbounds i8, ptr %189, i64 96
  %191 = load i32, ptr %190, align 8
  %192 = and i32 %191, -16776961
  %193 = or disjoint i32 %192, 1500416
  store i32 %193, ptr %190, align 8
  %194 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %195 = getelementptr inbounds i8, ptr %194, i64 32
  store ptr @.str.3, ptr %195, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  store i32 0, ptr %15, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = call i32 @Longtail_WriteContent(ptr noundef nonnull %32, ptr noundef %40, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %196, ptr noundef %197, ptr noundef nonnull @.str.677)
  store i32 %198, ptr %16, align 4, !tbaa !17
  %199 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.717, ptr noundef null)
  %200 = icmp eq i32 %199, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  br i1 %200, label %201, label %202

201:                                              ; preds = %188
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %366

202:                                              ; preds = %188
  %203 = load ptr, ptr %12, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %203)
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %175)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %204 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %205 = getelementptr inbounds i8, ptr %204, i64 96
  %206 = load i32, ptr %205, align 8
  %207 = and i32 %206, -16776961
  %208 = or disjoint i32 %207, 1502208
  store i32 %208, ptr %205, align 8
  %209 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %210 = getelementptr inbounds i8, ptr %209, i64 32
  store ptr @.str.3, ptr %210, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 0, ptr %18, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  %211 = call i32 @Longtail_GetFilesRecursively2(ptr noundef nonnull %32, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.681, ptr noundef nonnull %17)
  store i32 %211, ptr %19, align 4, !tbaa !17
  %212 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.718, ptr noundef null)
  %213 = icmp eq i32 %212, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %213, label %214, label %215

214:                                              ; preds = %202
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %365

215:                                              ; preds = %202
  %216 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %217 = getelementptr inbounds i8, ptr %216, i64 96
  %218 = load i32, ptr %217, align 8
  %219 = and i32 %218, -16776961
  %220 = or disjoint i32 %219, 1502464
  store i32 %220, ptr %217, align 8
  %221 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %222 = getelementptr inbounds i8, ptr %221, i64 32
  store ptr @.str.3, ptr %222, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %223, ptr noundef nonnull @.str.253, ptr noundef nonnull @.str.683)
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %227

226:                                              ; preds = %215
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %365

227:                                              ; preds = %215
  %228 = load ptr, ptr %17, align 8, !tbaa !5
  %229 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef nonnull %32, ptr noundef %228)
  %230 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %231 = getelementptr inbounds i8, ptr %230, i64 96
  %232 = load i32, ptr %231, align 8
  %233 = and i32 %232, -16776961
  %234 = or disjoint i32 %233, 1502976
  store i32 %234, ptr %231, align 8
  %235 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %236 = getelementptr inbounds i8, ptr %235, i64 32
  store ptr @.str.3, ptr %236, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %237 = call noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef null, ptr noundef %229, ptr noundef nonnull @.str.255, ptr noundef nonnull @.str.684)
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %240

239:                                              ; preds = %227
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %365

240:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %241 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %242 = getelementptr inbounds i8, ptr %241, i64 96
  %243 = load i32, ptr %242, align 8
  %244 = and i32 %243, -16776961
  %245 = or disjoint i32 %244, 1506816
  store i32 %245, ptr %242, align 8
  %246 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %247 = getelementptr inbounds i8, ptr %246, i64 32
  store ptr @.str.3, ptr %247, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  store i32 0, ptr %21, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  %248 = load ptr, ptr %17, align 8, !tbaa !5
  %249 = call i32 @Longtail_CreateVersionIndex(ptr noundef nonnull %32, ptr noundef %35, ptr noundef %36, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.681, ptr noundef %248, ptr noundef %229, i32 noundef 16, i32 noundef 0, ptr noundef nonnull %20)
  store i32 %249, ptr %22, align 4, !tbaa !17
  %250 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.719, ptr noundef null)
  %251 = icmp eq i32 %250, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br i1 %251, label %252, label %253

252:                                              ; preds = %240
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %364

253:                                              ; preds = %240
  %254 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %255 = getelementptr inbounds i8, ptr %254, i64 96
  %256 = load i32, ptr %255, align 8
  %257 = and i32 %256, -16776961
  %258 = or disjoint i32 %257, 1507072
  store i32 %258, ptr %255, align 8
  %259 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %260 = getelementptr inbounds i8, ptr %259, i64 32
  store ptr @.str.3, ptr %260, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %261 = load ptr, ptr %20, align 8, !tbaa !5
  %262 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %261, ptr noundef nonnull @.str.259, ptr noundef nonnull @.str.686)
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %265

264:                                              ; preds = %253
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %364

265:                                              ; preds = %253
  call void @Longtail_Free(ptr noundef %229)
  %266 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %266)
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %267 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %268 = getelementptr inbounds i8, ptr %267, i64 96
  %269 = load i32, ptr %268, align 8
  %270 = and i32 %269, -16776961
  %271 = or disjoint i32 %270, 1509888
  store i32 %271, ptr %268, align 8
  %272 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %273 = getelementptr inbounds i8, ptr %272, i64 32
  store ptr @.str.3, ptr %273, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  store i32 0, ptr %24, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load ptr, ptr %9, align 8, !tbaa !5
  %276 = call i32 @Longtail_CreateVersionDiff(ptr noundef %35, ptr noundef %274, ptr noundef %275, ptr noundef nonnull %23)
  store i32 %276, ptr %25, align 4, !tbaa !17
  %277 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.688, ptr noundef null)
  %278 = icmp eq i32 %277, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  br i1 %278, label %279, label %280

279:                                              ; preds = %265
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %363

280:                                              ; preds = %265
  %281 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %282 = getelementptr inbounds i8, ptr %281, i64 96
  %283 = load i32, ptr %282, align 8
  %284 = and i32 %283, -16776961
  %285 = or disjoint i32 %284, 1510144
  store i32 %285, ptr %282, align 8
  %286 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %287 = getelementptr inbounds i8, ptr %286, i64 32
  store ptr @.str.3, ptr %287, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  %288 = load ptr, ptr %23, align 8, !tbaa !5
  %289 = call noundef i32 @_Z14jc_test_cmp_NEIP20Longtail_VersionDiffS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %288, ptr noundef nonnull @.str.489, ptr noundef nonnull @.str.490)
  %290 = icmp eq i32 %289, 0
  br i1 %290, label %291, label %292

291:                                              ; preds = %280
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %363

292:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  %293 = load ptr, ptr %9, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 32
  %295 = load ptr, ptr %294, align 8, !tbaa !24
  %296 = load i32, ptr %295, align 4, !tbaa !17
  %297 = zext i32 %296 to i64
  %298 = shl nuw nsw i64 %297, 3
  %299 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %298)
  %300 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %301 = getelementptr inbounds i8, ptr %300, i64 96
  %302 = load i32, ptr %301, align 8
  %303 = and i32 %302, -16776961
  %304 = or disjoint i32 %303, 1512192
  store i32 %304, ptr %301, align 8
  %305 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %306 = getelementptr inbounds i8, ptr %305, i64 32
  store ptr @.str.3, ptr %306, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  store i32 0, ptr %27, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  %307 = load ptr, ptr %9, align 8, !tbaa !5
  %308 = load ptr, ptr %23, align 8, !tbaa !5
  %309 = call i32 @Longtail_GetRequiredChunkHashes(ptr noundef %307, ptr noundef %308, ptr noundef nonnull %26, ptr noundef %299)
  store i32 %309, ptr %28, align 4, !tbaa !17
  %310 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.689, ptr noundef null)
  %311 = icmp eq i32 %310, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  br i1 %311, label %312, label %313

312:                                              ; preds = %292
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %362

313:                                              ; preds = %292
  %314 = load i32, ptr %26, align 4, !tbaa !17
  %315 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %40, i32 noundef %314, ptr noundef %299, i32 noundef 0)
  call void @Longtail_Free(ptr noundef %299)
  call void @Longtail_SetLogLevel(i32 noundef 4)
  %316 = getelementptr inbounds i8, ptr %32, i64 224
  store i32 3, ptr %316, align 8, !tbaa !27
  %317 = getelementptr inbounds i8, ptr %32, i64 228
  store i32 28, ptr %317, align 4, !tbaa !29
  %318 = load ptr, ptr %9, align 8, !tbaa !5
  %319 = load ptr, ptr %23, align 8, !tbaa !5
  %320 = call ptr @Longtail_CreateConcurrentChunkWriteAPI(ptr noundef nonnull %32, ptr noundef %318, ptr noundef %319, ptr noundef nonnull @.str.470)
  %321 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %322 = getelementptr inbounds i8, ptr %321, i64 96
  %323 = load i32, ptr %322, align 8
  %324 = and i32 %323, -16776961
  %325 = or disjoint i32 %324, 1518080
  store i32 %325, ptr %322, align 8
  %326 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %327 = getelementptr inbounds i8, ptr %326, i64 32
  store ptr @.str.3, ptr %327, align 8, !tbaa !12
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  store i32 28, ptr %29, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  %328 = load ptr, ptr %20, align 8, !tbaa !5
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = load ptr, ptr %23, align 8, !tbaa !5
  %331 = call i32 @Longtail_ChangeVersion2(ptr noundef %42, ptr noundef nonnull %32, ptr noundef %320, ptr noundef %35, ptr noundef %37, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %315, ptr noundef %328, ptr noundef %329, ptr noundef %330, ptr noundef nonnull @.str.470, i32 noundef 1)
  store i32 %331, ptr %30, align 4, !tbaa !17
  %332 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull @.str.720, ptr noundef nonnull @.str.721)
  %333 = icmp eq i32 %332, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  br i1 %333, label %334, label %335

334:                                              ; preds = %313
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %362

335:                                              ; preds = %313
  %.not122 = icmp eq ptr %320, null
  br i1 %.not122, label %337, label %336

336:                                              ; preds = %335
  call void @Longtail_DisposeAPI(ptr noundef nonnull %320)
  br label %337

337:                                              ; preds = %336, %335
  call void @Longtail_SetLogLevel(i32 noundef 3)
  call void @Longtail_Free(ptr noundef %315)
  %338 = load ptr, ptr %23, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %338)
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %339)
  %340 = load ptr, ptr %9, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %340)
  %.not123 = icmp eq ptr %42, null
  br i1 %.not123, label %342, label %341

341:                                              ; preds = %337
  call void @Longtail_DisposeAPI(ptr noundef nonnull %42)
  br label %342

342:                                              ; preds = %341, %337
  %.not124 = icmp eq ptr %41, null
  br i1 %.not124, label %344, label %343

343:                                              ; preds = %342
  call void @Longtail_DisposeAPI(ptr noundef nonnull %41)
  br label %344

344:                                              ; preds = %343, %342
  %.not125 = icmp eq ptr %40, null
  br i1 %.not125, label %346, label %345

345:                                              ; preds = %344
  call void @Longtail_DisposeAPI(ptr noundef nonnull %40)
  br label %346

346:                                              ; preds = %345, %344
  %.not126 = icmp eq ptr %39, null
  br i1 %.not126, label %348, label %347

347:                                              ; preds = %346
  call void @Longtail_DisposeAPI(ptr noundef nonnull %39)
  br label %348

348:                                              ; preds = %347, %346
  %.not127 = icmp eq ptr %38, null
  br i1 %.not127, label %350, label %349

349:                                              ; preds = %348
  call void @Longtail_DisposeAPI(ptr noundef nonnull %38)
  br label %350

350:                                              ; preds = %349, %348
  %.not128 = icmp eq ptr %37, null
  br i1 %.not128, label %352, label %351

351:                                              ; preds = %350
  call void @Longtail_DisposeAPI(ptr noundef nonnull %37)
  br label %352

352:                                              ; preds = %351, %350
  %.not129 = icmp eq ptr %36, null
  br i1 %.not129, label %354, label %353

353:                                              ; preds = %352
  call void @Longtail_DisposeAPI(ptr noundef nonnull %36)
  br label %354

354:                                              ; preds = %353, %352
  %.not130 = icmp eq ptr %35, null
  br i1 %.not130, label %356, label %355

355:                                              ; preds = %354
  call void @Longtail_DisposeAPI(ptr noundef nonnull %35)
  br label %356

356:                                              ; preds = %355, %354
  %.not131 = icmp eq ptr %34, null
  br i1 %.not131, label %358, label %357

357:                                              ; preds = %356
  call void @Longtail_DisposeAPI(ptr noundef nonnull %34)
  br label %358

358:                                              ; preds = %357, %356
  %.not132 = icmp eq ptr %33, null
  br i1 %.not132, label %360, label %359

359:                                              ; preds = %358
  call void @Longtail_DisposeAPI(ptr noundef nonnull %33)
  br label %360

360:                                              ; preds = %359, %358
  call void @Longtail_DisposeAPI(ptr noundef nonnull %32)
  %.not134 = icmp eq ptr %31, null
  br i1 %.not134, label %362, label %361

361:                                              ; preds = %360
  call void @Longtail_DisposeAPI(ptr noundef nonnull %31)
  br label %362

362:                                              ; preds = %334, %361, %360, %312
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br label %363

363:                                              ; preds = %362, %291, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  br label %364

364:                                              ; preds = %363, %264, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %365

365:                                              ; preds = %239, %364, %226, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  br label %366

366:                                              ; preds = %365, %201, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  br label %367

367:                                              ; preds = %366, %166, %154
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  br label %368

368:                                              ; preds = %141, %367, %128, %116
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %369

369:                                              ; preds = %.thread, %.thread138, %368
  ret void
}

declare void @Longtail_SetLogLevel(i32 noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 #5 = { nounwind willreturn memory(read) }
attributes #6 = { 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++ TBAA"}
!9 = !{!10, !6, i64 96}
!10 = !{!"_ZTS19Longtail_StorageAPI", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!11 = !{!"_ZTS12Longtail_API", !6, i64 0}
!12 = !{!13, !6, i64 32}
!13 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !14, i64 64, !15, i64 88, !15, i64 91, !15, i64 91, !15, i64 91, !15, i64 91, !15, i64 92, !15, i64 96, !15, i64 97, !15, i64 99, !15, i64 100}
!14 = !{!"_ZTS13jc_test_stats", !15, i64 0, !15, i64 4, !15, i64 6, !15, i64 8, !15, i64 12, !16, i64 16}
!15 = !{!"int", !7, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!15, !15, i64 0}
!18 = !{!10, !6, i64 32}
!19 = !{!10, !6, i64 40}
!20 = !{!10, !6, i64 72}
!21 = !{!10, !6, i64 56}
!22 = !{!23, !23, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = !{!25, !6, i64 32}
!25 = !{!"_ZTS21Longtail_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, !15, i64 128, !6, i64 136, !6, i64 144}
!26 = !{!25, !6, i64 96}
!27 = !{!28, !15, i64 224}
!28 = !{!"_ZTS18FailableStorageAPI", !10, i64 0, !6, i64 216, !15, i64 224, !15, i64 228}
!29 = !{!28, !15, i64 228}


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