; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN34Longtail_AsyncBlockStore (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"

%class.TestAsyncBlockStore = type { %struct.Longtail_BlockStoreAPI, ptr, ptr, i32, ptr, ptr, ptr, [8 x ptr], i32, ptr, i64, ptr, i64, ptr, i64, ptr, ptr, ptr }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncFlushComplete = type <{ %struct.Longtail_AsyncFlushAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncFlushAPI = type { %struct.Longtail_API, 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_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_VersionIndex = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, 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.254 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [13 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.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.409 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.507 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.510 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.513 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.526 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.527 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.529 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.530 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.531 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.532 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [173 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.602 = external hidden unnamed_addr constant [69 x i8], align 1
@__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [8 x ptr], align 16
@__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [8 x ptr], align 16
@.str.603 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.604 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.605 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.606 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.607 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.608 = external hidden unnamed_addr constant [27 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

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

; 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), 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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28)) unnamed_addr #6 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_CreateStoreIndex(ptr noundef, i32 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_NEIP19Longtail_StoreIndexS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @Longtail_WriteVersion(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 i32 @_ZN19TestAsyncBlockStore14InitBlockStoreEPS_P16Longtail_HashAPIP15Longtail_JobAPI(ptr noundef, ptr noundef, ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %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 %class.TestAsyncBlockStore, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca [8 x ptr], align 16
  %18 = alloca [8 x ptr], align 16
  %19 = alloca [8 x i64], align 16
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %struct.TestAsyncFlushComplete, align 8
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.TestAsyncFlushComplete, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %struct.TestAsyncFlushComplete, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %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 i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i64, align 8
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %70 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %71 = call ptr @Longtail_CreateFullCompressionRegistry()
  store ptr %71, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %72 = call ptr @Longtail_CreateBlake3HashAPI()
  store ptr %72, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %73 = call ptr @Longtail_CreateHPCDCChunkerAPI()
  store ptr %73, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %74 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  store ptr %74, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %75 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %75, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %76, ptr noundef %77, ptr noundef @.str.601, ptr noundef null, i32 noundef 0)
  store ptr %78, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr %9) #7
  br label %79

79:                                               ; preds = %1
  %80 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %81 = getelementptr inbounds %struct.jc_test_fixture, ptr %80, i32 0, i32 11
  %82 = load i32, ptr %81, align 8
  %83 = and i32 %82, -16776961
  %84 = or i32 %83, 1064448
  store i32 %84, ptr %81, align 8
  %85 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %86 = getelementptr inbounds %struct.jc_test_fixture, ptr %85, i32 0, i32 4
  store ptr @.str.3, ptr %86, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = call noundef i32 @_ZN19TestAsyncBlockStore14InitBlockStoreEPS_P16Longtail_HashAPIP15Longtail_JobAPI(ptr noundef %9, ptr noundef %87, ptr noundef %88)
  store i32 %89, ptr %11, align 4, !tbaa !14
  %90 = 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 @.str.46, ptr noundef @.str.602, ptr noundef null)
  %91 = icmp eq i32 %90, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br i1 %91, label %92, label %93

92:                                               ; preds = %79
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %971

93:                                               ; preds = %79
  br label %94

94:                                               ; preds = %93
  br label %95

95:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %96 = getelementptr inbounds %class.TestAsyncBlockStore, ptr %9, i32 0, i32 0
  store ptr %96, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = load ptr, ptr %3, align 8, !tbaa !5
  %99 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %97, ptr noundef %98)
  store ptr %99, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = load ptr, ptr %14, align 8, !tbaa !5
  %103 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %100, ptr noundef %101, ptr noundef %102)
  store ptr %103, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 8, ptr %16, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %17, ptr align 16 @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_FILENAMES, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %18, ptr align 16 @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #7
  %104 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 0
  %105 = load ptr, ptr %104, align 16, !tbaa !5
  %106 = call i64 @strlen(ptr noundef %105) #8
  %107 = add i64 %106, 1
  store i64 %107, ptr %19, align 8, !tbaa !15
  %108 = getelementptr inbounds i64, ptr %19, i64 1
  %109 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 1
  %110 = load ptr, ptr %109, align 8, !tbaa !5
  %111 = call i64 @strlen(ptr noundef %110) #8
  %112 = add i64 %111, 1
  store i64 %112, ptr %108, align 8, !tbaa !15
  %113 = getelementptr inbounds i64, ptr %19, i64 2
  %114 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 2
  %115 = load ptr, ptr %114, align 16, !tbaa !5
  %116 = call i64 @strlen(ptr noundef %115) #8
  %117 = add i64 %116, 1
  store i64 %117, ptr %113, align 8, !tbaa !15
  %118 = getelementptr inbounds i64, ptr %19, i64 3
  %119 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 3
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  %121 = call i64 @strlen(ptr noundef %120) #8
  %122 = add i64 %121, 1
  store i64 %122, ptr %118, align 8, !tbaa !15
  %123 = getelementptr inbounds i64, ptr %19, i64 4
  %124 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 4
  %125 = load ptr, ptr %124, align 16, !tbaa !5
  %126 = call i64 @strlen(ptr noundef %125) #8
  %127 = add i64 %126, 1
  store i64 %127, ptr %123, align 8, !tbaa !15
  %128 = getelementptr inbounds i64, ptr %19, i64 5
  store i64 0, ptr %128, align 8, !tbaa !15
  %129 = getelementptr inbounds i64, ptr %19, i64 6
  %130 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 6
  %131 = load ptr, ptr %130, align 16, !tbaa !5
  %132 = call i64 @strlen(ptr noundef %131) #8
  %133 = add i64 %132, 1
  store i64 %133, ptr %129, align 8, !tbaa !15
  %134 = getelementptr inbounds i64, ptr %19, i64 7
  %135 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 7
  %136 = load ptr, ptr %135, align 8, !tbaa !5
  %137 = call i64 @strlen(ptr noundef %136) #8
  %138 = add i64 %137, 1
  store i64 %138, ptr %134, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !14
  br label %139

139:                                              ; preds = %250, %95
  %140 = load i32, ptr %20, align 4, !tbaa !14
  %141 = icmp ult i32 %140, 8
  br i1 %141, label %143, label %142

142:                                              ; preds = %139
  store i32 4, ptr %12, align 4
  br label %253

143:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %144 = load ptr, ptr %7, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %144, i32 0, i32 12
  %146 = load ptr, ptr %145, align 8, !tbaa !16
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = load i32, ptr %20, align 4, !tbaa !14
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds [8 x ptr], ptr %17, i64 0, i64 %149
  %151 = load ptr, ptr %150, align 8, !tbaa !5
  %152 = call noundef ptr %146(ptr noundef %147, ptr noundef @.str.409, ptr noundef %151)
  store ptr %152, ptr %21, align 8, !tbaa !5
  br label %153

153:                                              ; preds = %143
  %154 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %155 = getelementptr inbounds %struct.jc_test_fixture, ptr %154, i32 0, i32 11
  %156 = load i32, ptr %155, align 8
  %157 = and i32 %156, -16776961
  %158 = or i32 %157, 1087232
  store i32 %158, ptr %155, align 8
  %159 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %160 = getelementptr inbounds %struct.jc_test_fixture, ptr %159, i32 0, i32 4
  store ptr @.str.3, ptr %160, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = load ptr, ptr %21, align 8, !tbaa !5
  %163 = call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %161, ptr noundef %162)
  %164 = call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %163, ptr noundef @.str.46, ptr noundef @.str.526)
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %153
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %247

167:                                              ; preds = %153
  br label %168

168:                                              ; preds = %167
  br label %169

169:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  br label %170

170:                                              ; preds = %169
  %171 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %172 = getelementptr inbounds %struct.jc_test_fixture, ptr %171, i32 0, i32 11
  %173 = load i32, ptr %172, align 8
  %174 = and i32 %173, -16776961
  %175 = or i32 %174, 1087744
  store i32 %175, ptr %172, align 8
  %176 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %177 = getelementptr inbounds %struct.jc_test_fixture, ptr %176, i32 0, i32 4
  store ptr @.str.3, ptr %177, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %178 = load ptr, ptr %7, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %178, i32 0, i32 4
  %180 = load ptr, ptr %179, align 8, !tbaa !19
  %181 = load ptr, ptr %7, align 8, !tbaa !5
  %182 = load ptr, ptr %21, align 8, !tbaa !5
  %183 = call noundef i32 %180(ptr noundef %181, ptr noundef %182, i64 noundef 0, ptr noundef %22)
  store i32 %183, ptr %24, align 4, !tbaa !14
  %184 = 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) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef @.str.46, ptr noundef @.str.527, ptr noundef null)
  %185 = icmp eq i32 %184, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br i1 %185, label %186, label %187

186:                                              ; preds = %170
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %246

187:                                              ; preds = %170
  br label %188

188:                                              ; preds = %187
  br label %189

189:                                              ; preds = %188
  %190 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %190)
  br label %191

191:                                              ; preds = %189
  %192 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %193 = getelementptr inbounds %struct.jc_test_fixture, ptr %192, i32 0, i32 11
  %194 = load i32, ptr %193, align 8
  %195 = and i32 %194, -16776961
  %196 = or i32 %195, 1088256
  store i32 %196, ptr %193, align 8
  %197 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %198 = getelementptr inbounds %struct.jc_test_fixture, ptr %197, i32 0, i32 4
  store ptr @.str.3, ptr %198, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %199 = load ptr, ptr %22, align 8, !tbaa !5
  %200 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %199, ptr noundef @.str.388, ptr noundef @.str.389)
  %201 = icmp eq i32 %200, 0
  br i1 %201, label %202, label %203

202:                                              ; preds = %191
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %246

203:                                              ; preds = %191
  br label %204

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204
  %206 = load i32, ptr %20, align 4, !tbaa !14
  %207 = zext i32 %206 to i64
  %208 = getelementptr inbounds [8 x i64], ptr %19, i64 0, i64 %207
  %209 = load i64, ptr %208, align 8, !tbaa !15
  %210 = icmp ne i64 %209, 0
  br i1 %210, label %211, label %240

211:                                              ; preds = %205
  br label %212

212:                                              ; preds = %211
  %213 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %214 = getelementptr inbounds %struct.jc_test_fixture, ptr %213, i32 0, i32 11
  %215 = load i32, ptr %214, align 8
  %216 = and i32 %215, -16776961
  %217 = or i32 %216, 1089024
  store i32 %217, ptr %214, align 8
  %218 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %219 = getelementptr inbounds %struct.jc_test_fixture, ptr %218, i32 0, i32 4
  store ptr @.str.3, ptr %219, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %220 = load ptr, ptr %7, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %220, i32 0, i32 5
  %222 = load ptr, ptr %221, align 8, !tbaa !20
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = load ptr, ptr %22, align 8, !tbaa !5
  %225 = load i32, ptr %20, align 4, !tbaa !14
  %226 = zext i32 %225 to i64
  %227 = getelementptr inbounds [8 x i64], ptr %19, i64 0, i64 %226
  %228 = load i64, ptr %227, align 8, !tbaa !15
  %229 = load i32, ptr %20, align 4, !tbaa !14
  %230 = zext i32 %229 to i64
  %231 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 %230
  %232 = load ptr, ptr %231, align 8, !tbaa !5
  %233 = call noundef i32 %222(ptr noundef %223, ptr noundef %224, i64 noundef 0, i64 noundef %228, ptr noundef %232)
  store i32 %233, ptr %26, align 4, !tbaa !14
  %234 = 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) %25, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef @.str.46, ptr noundef @.str.528, ptr noundef null)
  %235 = icmp eq i32 %234, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br i1 %235, label %236, label %237

236:                                              ; preds = %212
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %246

237:                                              ; preds = %212
  br label %238

238:                                              ; preds = %237
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239, %205
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %241, i32 0, i32 9
  %243 = load ptr, ptr %242, align 8, !tbaa !21
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  call void %243(ptr noundef %244, ptr noundef %245)
  store ptr null, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %12, align 4
  br label %246

246:                                              ; preds = %240, %236, %202, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %247

247:                                              ; preds = %246, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %248 = load i32, ptr %12, align 4
  switch i32 %248, label %253 [
    i32 0, label %249
  ]

249:                                              ; preds = %247
  br label %250

250:                                              ; preds = %249
  %251 = load i32, ptr %20, align 4, !tbaa !14
  %252 = add i32 %251, 1
  store i32 %252, ptr %20, align 4, !tbaa !14
  br label %139, !llvm.loop !22

253:                                              ; preds = %247, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %254 = load i32, ptr %12, align 4
  switch i32 %254, label %970 [
    i32 4, label %255
  ]

255:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  br label %256

256:                                              ; preds = %255
  %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, 1090816
  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 !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %264 = load ptr, ptr %7, align 8, !tbaa !5
  %265 = load ptr, ptr %6, align 8, !tbaa !5
  %266 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %264, ptr noundef %265, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.409, ptr noundef %27)
  store i32 %266, ptr %29, align 4, !tbaa !14
  %267 = 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.529, ptr noundef null)
  %268 = icmp eq i32 %267, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br i1 %268, label %269, label %270

269:                                              ; preds = %256
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %969

270:                                              ; preds = %256
  br label %271

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  %274 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %275 = getelementptr inbounds %struct.jc_test_fixture, ptr %274, i32 0, i32 11
  %276 = load i32, ptr %275, align 8
  %277 = and i32 %276, -16776961
  %278 = or i32 %277, 1091072
  store i32 %278, ptr %275, align 8
  %279 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %280 = getelementptr inbounds %struct.jc_test_fixture, ptr %279, i32 0, i32 4
  store ptr @.str.3, ptr %280, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %281 = load ptr, ptr %27, align 8, !tbaa !5
  %282 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %281, ptr noundef @.str.253, ptr noundef @.str.254)
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %285

284:                                              ; preds = %273
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %969

285:                                              ; preds = %273
  br label %286

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %288 = load ptr, ptr %7, align 8, !tbaa !5
  %289 = load ptr, ptr %27, align 8, !tbaa !5
  %290 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef %288, ptr noundef %289)
  store ptr %290, ptr %30, align 8, !tbaa !5
  br label %291

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

302:                                              ; preds = %291
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %968

303:                                              ; preds = %291
  br label %304

304:                                              ; preds = %303
  br label %305

305:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  br label %306

306:                                              ; preds = %305
  %307 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %308 = getelementptr inbounds %struct.jc_test_fixture, ptr %307, i32 0, i32 11
  %309 = load i32, ptr %308, align 8
  %310 = and i32 %309, -16776961
  %311 = or i32 %310, 1095424
  store i32 %311, ptr %308, align 8
  %312 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %313 = getelementptr inbounds %struct.jc_test_fixture, ptr %312, i32 0, i32 4
  store ptr @.str.3, ptr %313, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %314 = load ptr, ptr %7, align 8, !tbaa !5
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = load ptr, ptr %27, align 8, !tbaa !5
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = call i32 @Longtail_CreateVersionIndex(ptr noundef %314, ptr noundef %315, ptr noundef %316, ptr noundef %317, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.409, ptr noundef %318, ptr noundef %319, i32 noundef 50, i32 noundef 0, ptr noundef %31)
  store i32 %320, ptr %33, align 4, !tbaa !14
  %321 = 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) %32, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef @.str.46, ptr noundef @.str.531, ptr noundef null)
  %322 = icmp eq i32 %321, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br i1 %322, label %323, label %324

323:                                              ; preds = %306
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %967

324:                                              ; preds = %306
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  %328 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %329 = getelementptr inbounds %struct.jc_test_fixture, ptr %328, i32 0, i32 11
  %330 = load i32, ptr %329, align 8
  %331 = and i32 %330, -16776961
  %332 = or i32 %331, 1095680
  store i32 %332, ptr %329, align 8
  %333 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %334 = getelementptr inbounds %struct.jc_test_fixture, ptr %333, i32 0, i32 4
  store ptr @.str.3, ptr %334, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %335 = load ptr, ptr %31, align 8, !tbaa !5
  %336 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %335, ptr noundef @.str.259, ptr noundef @.str.260)
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %339

338:                                              ; preds = %327
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %967

339:                                              ; preds = %327
  br label %340

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340
  %342 = load ptr, ptr %30, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %342)
  store ptr null, ptr %30, align 8, !tbaa !5
  %343 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %343)
  store ptr null, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %344 = load ptr, ptr %15, align 8, !tbaa !5
  %345 = load ptr, ptr %31, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %345, i32 0, i32 4
  %347 = load ptr, ptr %346, align 8, !tbaa !24
  %348 = load i32, ptr %347, align 4, !tbaa !14
  %349 = load ptr, ptr %31, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %349, i32 0, i32 12
  %351 = load ptr, ptr %350, align 8, !tbaa !26
  %352 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %344, i32 noundef %348, ptr noundef %351, i32 noundef 0)
  store ptr %352, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  br label %353

353:                                              ; preds = %341
  %354 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %355 = getelementptr inbounds %struct.jc_test_fixture, ptr %354, i32 0, i32 11
  %356 = load i32, ptr %355, align 8
  %357 = and i32 %356, -16776961
  %358 = or i32 %357, 1099520
  store i32 %358, ptr %355, align 8
  %359 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %360 = getelementptr inbounds %struct.jc_test_fixture, ptr %359, i32 0, i32 4
  store ptr @.str.3, ptr %360, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 0, ptr %36, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = load ptr, ptr %34, align 8, !tbaa !5
  %363 = load ptr, ptr %31, align 8, !tbaa !5
  %364 = call i32 @Longtail_CreateMissingContent(ptr noundef %361, ptr noundef %362, ptr noundef %363, i32 noundef 32, i32 noundef 3, ptr noundef %35)
  store i32 %364, ptr %37, align 4, !tbaa !14
  %365 = 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) %36, ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef @.str.46, ptr noundef @.str.412, ptr noundef null)
  %366 = icmp eq i32 %365, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br i1 %366, label %367, label %368

367:                                              ; preds = %353
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %966

368:                                              ; preds = %353
  br label %369

369:                                              ; preds = %368
  br label %370

370:                                              ; preds = %369
  br label %371

371:                                              ; preds = %370
  %372 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %373 = getelementptr inbounds %struct.jc_test_fixture, ptr %372, i32 0, i32 11
  %374 = load i32, ptr %373, align 8
  %375 = and i32 %374, -16776961
  %376 = or i32 %375, 1102336
  store i32 %376, ptr %373, align 8
  %377 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %378 = getelementptr inbounds %struct.jc_test_fixture, ptr %377, i32 0, i32 4
  store ptr @.str.3, ptr %378, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  store i32 0, ptr %38, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = load ptr, ptr %15, align 8, !tbaa !5
  %381 = load ptr, ptr %6, align 8, !tbaa !5
  %382 = load ptr, ptr %35, align 8, !tbaa !5
  %383 = load ptr, ptr %31, align 8, !tbaa !5
  %384 = call i32 @Longtail_WriteContent(ptr noundef %379, ptr noundef %380, ptr noundef %381, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %382, ptr noundef %383, ptr noundef @.str.409)
  store i32 %384, ptr %39, align 4, !tbaa !14
  %385 = 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) %38, ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef @.str.46, ptr noundef @.str.532, ptr noundef null)
  %386 = icmp eq i32 %385, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br i1 %386, label %387, label %388

387:                                              ; preds = %371
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %966

388:                                              ; preds = %371
  br label %389

389:                                              ; preds = %388
  br label %390

390:                                              ; preds = %389
  %391 = load ptr, ptr %35, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %391)
  store ptr null, ptr %35, align 8, !tbaa !5
  %392 = load ptr, ptr %34, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %392)
  store ptr null, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  call void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %40)
  br label %393

393:                                              ; preds = %390
  %394 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %395 unwind label %416

395:                                              ; preds = %393
  %396 = getelementptr inbounds %struct.jc_test_fixture, ptr %394, i32 0, i32 11
  %397 = load i32, ptr %396, align 8
  %398 = and i32 %397, -16776961
  %399 = or i32 %398, 1104128
  store i32 %399, ptr %396, align 8
  %400 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %401 unwind label %416

401:                                              ; preds = %395
  %402 = getelementptr inbounds %struct.jc_test_fixture, ptr %400, i32 0, i32 4
  store ptr @.str.3, ptr %402, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %403 unwind label %416

403:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 0, ptr %43, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %404 = load ptr, ptr %13, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %404, i32 0, i32 7
  %406 = load ptr, ptr %405, align 8, !tbaa !27
  %407 = load ptr, ptr %13, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %40, i32 0, i32 0
  %409 = invoke noundef i32 %406(ptr noundef %407, ptr noundef %408)
          to label %410 unwind label %420

410:                                              ; preds = %403
  store i32 %409, ptr %44, align 4, !tbaa !14
  %411 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef @.str.46, ptr noundef @.str.603, ptr noundef null)
          to label %412 unwind label %420

412:                                              ; preds = %410
  %413 = icmp eq i32 %411, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br i1 %413, label %414, label %424

414:                                              ; preds = %412
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %415 unwind label %416

415:                                              ; preds = %414
  store i32 1, ptr %12, align 4
  br label %965

416:                                              ; preds = %414, %401, %395, %393
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %41, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %42, align 4
  br label %979

420:                                              ; preds = %410, %403
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %41, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %979

424:                                              ; preds = %412
  br label %425

425:                                              ; preds = %424
  br label %426

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  invoke void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %45)
          to label %427 unwind label %451

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  %429 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %430 unwind label %455

430:                                              ; preds = %428
  %431 = getelementptr inbounds %struct.jc_test_fixture, ptr %429, i32 0, i32 11
  %432 = load i32, ptr %431, align 8
  %433 = and i32 %432, -16776961
  %434 = or i32 %433, 1104896
  store i32 %434, ptr %431, align 8
  %435 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %436 unwind label %455

436:                                              ; preds = %430
  %437 = getelementptr inbounds %struct.jc_test_fixture, ptr %435, i32 0, i32 4
  store ptr @.str.3, ptr %437, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %438 unwind label %455

438:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  store i32 0, ptr %46, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %439 = load ptr, ptr %13, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %439, i32 0, i32 7
  %441 = load ptr, ptr %440, align 8, !tbaa !27
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %45, i32 0, i32 0
  %444 = invoke noundef i32 %441(ptr noundef %442, ptr noundef %443)
          to label %445 unwind label %459

445:                                              ; preds = %438
  store i32 %444, ptr %47, align 4, !tbaa !14
  %446 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef @.str.46, ptr noundef @.str.604, ptr noundef null)
          to label %447 unwind label %459

447:                                              ; preds = %445
  %448 = icmp eq i32 %446, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br i1 %448, label %449, label %463

449:                                              ; preds = %447
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %450 unwind label %455

450:                                              ; preds = %449
  store i32 1, ptr %12, align 4
  br label %964

451:                                              ; preds = %426
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %41, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %42, align 4
  br label %978

455:                                              ; preds = %449, %436, %430, %428
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %41, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %42, align 4
  br label %977

459:                                              ; preds = %445, %438
  %460 = landingpad { ptr, i32 }
          cleanup
  %461 = extractvalue { ptr, i32 } %460, 0
  store ptr %461, ptr %41, align 8
  %462 = extractvalue { ptr, i32 } %460, 1
  store i32 %462, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %977

463:                                              ; preds = %447
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  invoke void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %48)
          to label %466 unwind label %490

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  %468 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %469 unwind label %494

469:                                              ; preds = %467
  %470 = getelementptr inbounds %struct.jc_test_fixture, ptr %468, i32 0, i32 11
  %471 = load i32, ptr %470, align 8
  %472 = and i32 %471, -16776961
  %473 = or i32 %472, 1105664
  store i32 %473, ptr %470, align 8
  %474 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %475 unwind label %494

475:                                              ; preds = %469
  %476 = getelementptr inbounds %struct.jc_test_fixture, ptr %474, i32 0, i32 4
  store ptr @.str.3, ptr %476, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %477 unwind label %494

477:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  store i32 0, ptr %49, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %478 = load ptr, ptr %13, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %478, i32 0, i32 7
  %480 = load ptr, ptr %479, align 8, !tbaa !27
  %481 = load ptr, ptr %13, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %48, i32 0, i32 0
  %483 = invoke noundef i32 %480(ptr noundef %481, ptr noundef %482)
          to label %484 unwind label %498

484:                                              ; preds = %477
  store i32 %483, ptr %50, align 4, !tbaa !14
  %485 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef @.str.46, ptr noundef @.str.605, ptr noundef null)
          to label %486 unwind label %498

486:                                              ; preds = %484
  %487 = icmp eq i32 %485, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br i1 %487, label %488, label %502

488:                                              ; preds = %486
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %489 unwind label %494

489:                                              ; preds = %488
  store i32 1, ptr %12, align 4
  br label %963

490:                                              ; preds = %465
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %41, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %42, align 4
  br label %976

494:                                              ; preds = %571, %564, %558, %556, %554, %546, %539, %533, %531, %529, %521, %514, %508, %506, %504, %488, %475, %469, %467
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %41, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %42, align 4
  br label %975

498:                                              ; preds = %484, %477
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %41, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br label %975

502:                                              ; preds = %486
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %40)
          to label %505 unwind label %494

505:                                              ; preds = %504
  br label %506

506:                                              ; preds = %505
  %507 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %508 unwind label %494

508:                                              ; preds = %506
  %509 = getelementptr inbounds %struct.jc_test_fixture, ptr %507, i32 0, i32 11
  %510 = load i32, ptr %509, align 8
  %511 = and i32 %510, -16776961
  %512 = or i32 %511, 1106432
  store i32 %512, ptr %509, align 8
  %513 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %514 unwind label %494

514:                                              ; preds = %508
  %515 = getelementptr inbounds %struct.jc_test_fixture, ptr %513, i32 0, i32 4
  store ptr @.str.3, ptr %515, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %516 unwind label %494

516:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  store i32 0, ptr %51, align 4, !tbaa !14
  %517 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %40, i32 0, i32 2
  %518 = invoke 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) %517, ptr noundef @.str.46, ptr noundef @.str.606, ptr noundef null)
          to label %519 unwind label %523

519:                                              ; preds = %516
  %520 = icmp eq i32 %518, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br i1 %520, label %521, label %527

521:                                              ; preds = %519
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %522 unwind label %494

522:                                              ; preds = %521
  store i32 1, ptr %12, align 4
  br label %963

523:                                              ; preds = %516
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %41, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %975

527:                                              ; preds = %519
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %45)
          to label %530 unwind label %494

530:                                              ; preds = %529
  br label %531

531:                                              ; preds = %530
  %532 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %533 unwind label %494

533:                                              ; preds = %531
  %534 = getelementptr inbounds %struct.jc_test_fixture, ptr %532, i32 0, i32 11
  %535 = load i32, ptr %534, align 8
  %536 = and i32 %535, -16776961
  %537 = or i32 %536, 1106944
  store i32 %537, ptr %534, align 8
  %538 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %539 unwind label %494

539:                                              ; preds = %533
  %540 = getelementptr inbounds %struct.jc_test_fixture, ptr %538, i32 0, i32 4
  store ptr @.str.3, ptr %540, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %541 unwind label %494

541:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  store i32 0, ptr %52, align 4, !tbaa !14
  %542 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %45, i32 0, i32 2
  %543 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %542, ptr noundef @.str.46, ptr noundef @.str.607, ptr noundef null)
          to label %544 unwind label %548

544:                                              ; preds = %541
  %545 = icmp eq i32 %543, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br i1 %545, label %546, label %552

546:                                              ; preds = %544
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %547 unwind label %494

547:                                              ; preds = %546
  store i32 1, ptr %12, align 4
  br label %963

548:                                              ; preds = %541
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %41, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br label %975

552:                                              ; preds = %544
  br label %553

553:                                              ; preds = %552
  br label %554

554:                                              ; preds = %553
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %48)
          to label %555 unwind label %494

555:                                              ; preds = %554
  br label %556

556:                                              ; preds = %555
  %557 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %558 unwind label %494

558:                                              ; preds = %556
  %559 = getelementptr inbounds %struct.jc_test_fixture, ptr %557, i32 0, i32 11
  %560 = load i32, ptr %559, align 8
  %561 = and i32 %560, -16776961
  %562 = or i32 %561, 1107456
  store i32 %562, ptr %559, align 8
  %563 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %564 unwind label %494

564:                                              ; preds = %558
  %565 = getelementptr inbounds %struct.jc_test_fixture, ptr %563, i32 0, i32 4
  store ptr @.str.3, ptr %565, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %566 unwind label %494

566:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  store i32 0, ptr %53, align 4, !tbaa !14
  %567 = getelementptr inbounds %struct.TestAsyncFlushComplete, ptr %48, i32 0, i32 2
  %568 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %567, ptr noundef @.str.46, ptr noundef @.str.608, ptr noundef null)
          to label %569 unwind label %573

569:                                              ; preds = %566
  %570 = icmp eq i32 %568, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  br i1 %570, label %571, label %577

571:                                              ; preds = %569
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %572 unwind label %494

572:                                              ; preds = %571
  store i32 1, ptr %12, align 4
  br label %963

573:                                              ; preds = %566
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %41, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  br label %975

577:                                              ; preds = %569
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  br label %580

580:                                              ; preds = %579
  %581 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %582 unwind label %612

582:                                              ; preds = %580
  %583 = getelementptr inbounds %struct.jc_test_fixture, ptr %581, i32 0, i32 11
  %584 = load i32, ptr %583, align 8
  %585 = and i32 %584, -16776961
  %586 = or i32 %585, 1110272
  store i32 %586, ptr %583, align 8
  %587 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %588 unwind label %612

588:                                              ; preds = %582
  %589 = getelementptr inbounds %struct.jc_test_fixture, ptr %587, i32 0, i32 4
  store ptr @.str.3, ptr %589, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %590 unwind label %612

590:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  store i32 0, ptr %55, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  %591 = load ptr, ptr %4, align 8, !tbaa !5
  %592 = load ptr, ptr %31, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %592, i32 0, i32 4
  %594 = load ptr, ptr %593, align 8, !tbaa !24
  %595 = load i32, ptr %594, align 4, !tbaa !14
  %596 = load ptr, ptr %31, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %596, i32 0, i32 12
  %598 = load ptr, ptr %597, align 8, !tbaa !26
  %599 = load ptr, ptr %31, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %599, i32 0, i32 13
  %601 = load ptr, ptr %600, align 8, !tbaa !29
  %602 = load ptr, ptr %31, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.Longtail_VersionIndex, ptr %602, i32 0, i32 14
  %604 = load ptr, ptr %603, align 8, !tbaa !30
  %605 = invoke i32 @Longtail_CreateStoreIndex(ptr noundef %591, i32 noundef %595, ptr noundef %598, ptr noundef %601, ptr noundef %604, i32 noundef 32, i32 noundef 3, ptr noundef %54)
          to label %606 unwind label %616

606:                                              ; preds = %590
  store i32 %605, ptr %56, align 4, !tbaa !14
  %607 = invoke 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.533, ptr noundef null)
          to label %608 unwind label %616

608:                                              ; preds = %606
  %609 = icmp eq i32 %607, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  br i1 %609, label %610, label %620

610:                                              ; preds = %608
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %611 unwind label %612

611:                                              ; preds = %610
  store i32 1, ptr %12, align 4
  br label %962

612:                                              ; preds = %957, %950, %943, %936, %929, %922, %915, %908, %901, %896, %894, %664, %651, %645, %643, %638, %633, %631, %625, %623, %610, %588, %582, %580
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %41, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %42, align 4
  br label %974

616:                                              ; preds = %606, %590
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %41, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  br label %974

620:                                              ; preds = %608
  br label %621

621:                                              ; preds = %620
  br label %622

622:                                              ; preds = %621
  br label %623

623:                                              ; preds = %622
  %624 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %625 unwind label %612

625:                                              ; preds = %623
  %626 = getelementptr inbounds %struct.jc_test_fixture, ptr %624, i32 0, i32 11
  %627 = load i32, ptr %626, align 8
  %628 = and i32 %627, -16776961
  %629 = or i32 %628, 1110528
  store i32 %629, ptr %626, align 8
  %630 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %631 unwind label %612

631:                                              ; preds = %625
  %632 = getelementptr inbounds %struct.jc_test_fixture, ptr %630, i32 0, i32 4
  store ptr @.str.3, ptr %632, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %633 unwind label %612

633:                                              ; preds = %631
  %634 = load ptr, ptr %54, align 8, !tbaa !5
  %635 = invoke noundef i32 @_Z14jc_test_cmp_NEIP19Longtail_StoreIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %634, ptr noundef @.str.534, ptr noundef @.str.535)
          to label %636 unwind label %612

636:                                              ; preds = %633
  %637 = icmp eq i32 %635, 0
  br i1 %637, label %638, label %640

638:                                              ; preds = %636
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %639 unwind label %612

639:                                              ; preds = %638
  store i32 1, ptr %12, align 4
  br label %962

640:                                              ; preds = %636
  br label %641

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  %644 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %645 unwind label %612

645:                                              ; preds = %643
  %646 = getelementptr inbounds %struct.jc_test_fixture, ptr %644, i32 0, i32 11
  %647 = load i32, ptr %646, align 8
  %648 = and i32 %647, -16776961
  %649 = or i32 %648, 1113600
  store i32 %649, ptr %646, align 8
  %650 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %651 unwind label %612

651:                                              ; preds = %645
  %652 = getelementptr inbounds %struct.jc_test_fixture, ptr %650, i32 0, i32 4
  store ptr @.str.3, ptr %652, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %653 unwind label %612

653:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  store i32 0, ptr %57, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  %654 = load ptr, ptr %15, align 8, !tbaa !5
  %655 = load ptr, ptr %7, align 8, !tbaa !5
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = load ptr, ptr %54, align 8, !tbaa !5
  %658 = load ptr, ptr %31, align 8, !tbaa !5
  %659 = invoke i32 @Longtail_WriteVersion(ptr noundef %654, ptr noundef %655, ptr noundef %656, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %657, ptr noundef %658, ptr noundef @.str.536, i32 noundef 1)
          to label %660 unwind label %666

660:                                              ; preds = %653
  store i32 %659, ptr %58, align 4, !tbaa !14
  %661 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef @.str.46, ptr noundef @.str.537, ptr noundef null)
          to label %662 unwind label %666

662:                                              ; preds = %660
  %663 = icmp eq i32 %661, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br i1 %663, label %664, label %670

664:                                              ; preds = %662
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %665 unwind label %612

665:                                              ; preds = %664
  store i32 1, ptr %12, align 4
  br label %962

666:                                              ; preds = %660, %653
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %41, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br label %974

670:                                              ; preds = %662
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  store i32 0, ptr %59, align 4, !tbaa !14
  br label %673

673:                                              ; preds = %885, %672
  %674 = load i32, ptr %59, align 4, !tbaa !14
  %675 = icmp ult i32 %674, 8
  br i1 %675, label %677, label %676

676:                                              ; preds = %673
  store i32 47, ptr %12, align 4
  br label %892

677:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %678 = load ptr, ptr %7, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %678, i32 0, i32 12
  %680 = load ptr, ptr %679, align 8, !tbaa !16
  %681 = load ptr, ptr %7, align 8, !tbaa !5
  %682 = load i32, ptr %59, align 4, !tbaa !14
  %683 = zext i32 %682 to i64
  %684 = getelementptr inbounds [8 x ptr], ptr %17, i64 0, i64 %683
  %685 = load ptr, ptr %684, align 8, !tbaa !5
  %686 = invoke noundef ptr %680(ptr noundef %681, ptr noundef @.str.536, ptr noundef %685)
          to label %687 unwind label %711

687:                                              ; preds = %677
  store ptr %686, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  br label %688

688:                                              ; preds = %687
  %689 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %690 unwind label %715

690:                                              ; preds = %688
  %691 = getelementptr inbounds %struct.jc_test_fixture, ptr %689, i32 0, i32 11
  %692 = load i32, ptr %691, align 8
  %693 = and i32 %692, -16776961
  %694 = or i32 %693, 1115136
  store i32 %694, ptr %691, align 8
  %695 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %696 unwind label %715

696:                                              ; preds = %690
  %697 = getelementptr inbounds %struct.jc_test_fixture, ptr %695, i32 0, i32 4
  store ptr @.str.3, ptr %697, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %698 unwind label %715

698:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  store i32 0, ptr %62, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  %699 = load ptr, ptr %7, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %699, i32 0, i32 1
  %701 = load ptr, ptr %700, align 8, !tbaa !31
  %702 = load ptr, ptr %7, align 8, !tbaa !5
  %703 = load ptr, ptr %60, align 8, !tbaa !5
  %704 = invoke noundef i32 %701(ptr noundef %702, ptr noundef %703, ptr noundef %61)
          to label %705 unwind label %719

705:                                              ; preds = %698
  store i32 %704, ptr %63, align 4, !tbaa !14
  %706 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef @.str.46, ptr noundef @.str.538, ptr noundef null)
          to label %707 unwind label %719

707:                                              ; preds = %705
  %708 = icmp eq i32 %706, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br i1 %708, label %709, label %723

709:                                              ; preds = %707
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %710 unwind label %715

710:                                              ; preds = %709
  store i32 1, ptr %12, align 4
  br label %882

711:                                              ; preds = %677
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %41, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %42, align 4
  br label %891

715:                                              ; preds = %743, %738, %736, %730, %728, %725, %709, %696, %690, %688
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %41, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %42, align 4
  br label %890

719:                                              ; preds = %705, %698
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %41, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %890

723:                                              ; preds = %707
  br label %724

724:                                              ; preds = %723
  br label %725

725:                                              ; preds = %724
  %726 = load ptr, ptr %60, align 8, !tbaa !5
  invoke void @Longtail_Free(ptr noundef %726)
          to label %727 unwind label %715

727:                                              ; preds = %725
  br label %728

728:                                              ; preds = %727
  %729 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %730 unwind label %715

730:                                              ; preds = %728
  %731 = getelementptr inbounds %struct.jc_test_fixture, ptr %729, i32 0, i32 11
  %732 = load i32, ptr %731, align 8
  %733 = and i32 %732, -16776961
  %734 = or i32 %733, 1115648
  store i32 %734, ptr %731, align 8
  %735 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %736 unwind label %715

736:                                              ; preds = %730
  %737 = getelementptr inbounds %struct.jc_test_fixture, ptr %735, i32 0, i32 4
  store ptr @.str.3, ptr %737, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %738 unwind label %715

738:                                              ; preds = %736
  %739 = load ptr, ptr %61, align 8, !tbaa !5
  %740 = invoke noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %739, ptr noundef @.str.388, ptr noundef @.str.507)
          to label %741 unwind label %715

741:                                              ; preds = %738
  %742 = icmp eq i32 %740, 0
  br i1 %742, label %743, label %745

743:                                              ; preds = %741
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %744 unwind label %715

744:                                              ; preds = %743
  store i32 1, ptr %12, align 4
  br label %882

745:                                              ; preds = %741
  br label %746

746:                                              ; preds = %745
  br label %747

747:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  br label %748

748:                                              ; preds = %747
  %749 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %750 unwind label %771

750:                                              ; preds = %748
  %751 = getelementptr inbounds %struct.jc_test_fixture, ptr %749, i32 0, i32 11
  %752 = load i32, ptr %751, align 8
  %753 = and i32 %752, -16776961
  %754 = or i32 %753, 1116160
  store i32 %754, ptr %751, align 8
  %755 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %756 unwind label %771

756:                                              ; preds = %750
  %757 = getelementptr inbounds %struct.jc_test_fixture, ptr %755, i32 0, i32 4
  store ptr @.str.3, ptr %757, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %758 unwind label %771

758:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  store i32 0, ptr %65, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %759, i32 0, i32 2
  %761 = load ptr, ptr %760, align 8, !tbaa !32
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = load ptr, ptr %61, align 8, !tbaa !5
  %764 = invoke noundef i32 %761(ptr noundef %762, ptr noundef %763, ptr noundef %64)
          to label %765 unwind label %775

765:                                              ; preds = %758
  store i32 %764, ptr %66, align 4, !tbaa !14
  %766 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %65, ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef @.str.46, ptr noundef @.str.539, ptr noundef null)
          to label %767 unwind label %775

767:                                              ; preds = %765
  %768 = icmp eq i32 %766, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br i1 %768, label %769, label %779

769:                                              ; preds = %767
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %770 unwind label %771

770:                                              ; preds = %769
  store i32 1, ptr %12, align 4
  br label %881

771:                                              ; preds = %799, %792, %790, %784, %782, %769, %756, %750, %748
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %41, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %42, align 4
  br label %889

775:                                              ; preds = %765, %758
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %41, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br label %889

779:                                              ; preds = %767
  br label %780

780:                                              ; preds = %779
  br label %781

781:                                              ; preds = %780
  br label %782

782:                                              ; preds = %781
  %783 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %784 unwind label %771

784:                                              ; preds = %782
  %785 = getelementptr inbounds %struct.jc_test_fixture, ptr %783, i32 0, i32 11
  %786 = load i32, ptr %785, align 8
  %787 = and i32 %786, -16776961
  %788 = or i32 %787, 1116416
  store i32 %788, ptr %785, align 8
  %789 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %790 unwind label %771

790:                                              ; preds = %784
  %791 = getelementptr inbounds %struct.jc_test_fixture, ptr %789, i32 0, i32 4
  store ptr @.str.3, ptr %791, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %792 unwind label %771

792:                                              ; preds = %790
  %793 = load i32, ptr %59, align 4, !tbaa !14
  %794 = zext i32 %793 to i64
  %795 = getelementptr inbounds [8 x i64], ptr %19, i64 0, i64 %794
  %796 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %795, ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef @.str.540, ptr noundef @.str.510)
          to label %797 unwind label %771

797:                                              ; preds = %792
  %798 = icmp eq i32 %796, 0
  br i1 %798, label %799, label %801

799:                                              ; preds = %797
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %800 unwind label %771

800:                                              ; preds = %799
  store i32 1, ptr %12, align 4
  br label %881

801:                                              ; preds = %797
  br label %802

802:                                              ; preds = %801
  br label %803

803:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %804 = load i64, ptr %64, align 8, !tbaa !15
  %805 = mul i64 1, %804
  %806 = invoke ptr @Longtail_Alloc(ptr noundef null, i64 noundef %805)
          to label %807 unwind label %836

807:                                              ; preds = %803
  store ptr %806, ptr %67, align 8, !tbaa !5
  %808 = load i64, ptr %64, align 8, !tbaa !15
  %809 = icmp ne i64 %808, 0
  br i1 %809, label %810, label %871

810:                                              ; preds = %807
  br label %811

811:                                              ; preds = %810
  %812 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %813 unwind label %836

813:                                              ; preds = %811
  %814 = getelementptr inbounds %struct.jc_test_fixture, ptr %812, i32 0, i32 11
  %815 = load i32, ptr %814, align 8
  %816 = and i32 %815, -16776961
  %817 = or i32 %816, 1117440
  store i32 %817, ptr %814, align 8
  %818 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %819 unwind label %836

819:                                              ; preds = %813
  %820 = getelementptr inbounds %struct.jc_test_fixture, ptr %818, i32 0, i32 4
  store ptr @.str.3, ptr %820, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %821 unwind label %836

821:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  store i32 0, ptr %68, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  %822 = load ptr, ptr %7, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %822, i32 0, i32 3
  %824 = load ptr, ptr %823, align 8, !tbaa !33
  %825 = load ptr, ptr %7, align 8, !tbaa !5
  %826 = load ptr, ptr %61, align 8, !tbaa !5
  %827 = load i64, ptr %64, align 8, !tbaa !15
  %828 = load ptr, ptr %67, align 8, !tbaa !5
  %829 = invoke noundef i32 %824(ptr noundef %825, ptr noundef %826, i64 noundef 0, i64 noundef %827, ptr noundef %828)
          to label %830 unwind label %840

830:                                              ; preds = %821
  store i32 %829, ptr %69, align 4, !tbaa !14
  %831 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %68, ptr noundef nonnull align 4 dereferenceable(4) %69, ptr noundef @.str.46, ptr noundef @.str.541, ptr noundef null)
          to label %832 unwind label %840

832:                                              ; preds = %830
  %833 = icmp eq i32 %831, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br i1 %833, label %834, label %844

834:                                              ; preds = %832
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %835 unwind label %836

835:                                              ; preds = %834
  store i32 1, ptr %12, align 4
  br label %880

836:                                              ; preds = %877, %871, %866, %857, %855, %849, %847, %834, %819, %813, %811, %803
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %41, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %42, align 4
  br label %888

840:                                              ; preds = %830, %821
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %41, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %888

844:                                              ; preds = %832
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845
  br label %847

847:                                              ; preds = %846
  %848 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %849 unwind label %836

849:                                              ; preds = %847
  %850 = getelementptr inbounds %struct.jc_test_fixture, ptr %848, i32 0, i32 11
  %851 = load i32, ptr %850, align 8
  %852 = and i32 %851, -16776961
  %853 = or i32 %852, 1117696
  store i32 %853, ptr %850, align 8
  %854 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %855 unwind label %836

855:                                              ; preds = %849
  %856 = getelementptr inbounds %struct.jc_test_fixture, ptr %854, i32 0, i32 4
  store ptr @.str.3, ptr %856, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %857 unwind label %836

857:                                              ; preds = %855
  %858 = load i32, ptr %59, align 4, !tbaa !14
  %859 = zext i32 %858 to i64
  %860 = getelementptr inbounds [8 x ptr], ptr %18, i64 0, i64 %859
  %861 = load ptr, ptr %860, align 8, !tbaa !5
  %862 = load ptr, ptr %67, align 8, !tbaa !5
  %863 = invoke noundef i32 @_Z17jc_test_cmp_STREQPKcS0_S0_S0_(ptr noundef %861, ptr noundef %862, ptr noundef @.str.542, ptr noundef @.str.513)
          to label %864 unwind label %836

864:                                              ; preds = %857
  %865 = icmp eq i32 %863, 0
  br i1 %865, label %866, label %868

866:                                              ; preds = %864
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %867 unwind label %836

867:                                              ; preds = %866
  store i32 1, ptr %12, align 4
  br label %880

868:                                              ; preds = %864
  br label %869

869:                                              ; preds = %868
  br label %870

870:                                              ; preds = %869
  br label %871

871:                                              ; preds = %870, %807
  %872 = load ptr, ptr %7, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %872, i32 0, i32 9
  %874 = load ptr, ptr %873, align 8, !tbaa !21
  %875 = load ptr, ptr %7, align 8, !tbaa !5
  %876 = load ptr, ptr %61, align 8, !tbaa !5
  invoke void %874(ptr noundef %875, ptr noundef %876)
          to label %877 unwind label %836

877:                                              ; preds = %871
  store ptr null, ptr %61, align 8, !tbaa !5
  %878 = load ptr, ptr %67, align 8, !tbaa !5
  invoke void @Longtail_Free(ptr noundef %878)
          to label %879 unwind label %836

879:                                              ; preds = %877
  store ptr null, ptr %67, align 8, !tbaa !5
  store i32 0, ptr %12, align 4
  br label %880

880:                                              ; preds = %879, %867, %835
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %881

881:                                              ; preds = %880, %800, %770
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %882

882:                                              ; preds = %881, %744, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  %883 = load i32, ptr %12, align 4
  switch i32 %883, label %892 [
    i32 0, label %884
  ]

884:                                              ; preds = %882
  br label %885

885:                                              ; preds = %884
  %886 = load i32, ptr %59, align 4, !tbaa !14
  %887 = add i32 %886, 1
  store i32 %887, ptr %59, align 4, !tbaa !14
  br label %673, !llvm.loop !34

888:                                              ; preds = %840, %836
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %889

889:                                              ; preds = %888, %775, %771
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %890

890:                                              ; preds = %889, %719, %715
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  br label %891

891:                                              ; preds = %890, %711
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %974

892:                                              ; preds = %882, %676
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  %893 = load i32, ptr %12, align 4
  switch i32 %893, label %962 [
    i32 47, label %894
  ]

894:                                              ; preds = %892
  %895 = load ptr, ptr %31, align 8, !tbaa !5
  invoke void @Longtail_Free(ptr noundef %895)
          to label %896 unwind label %612

896:                                              ; preds = %894
  store ptr null, ptr %31, align 8, !tbaa !5
  %897 = load ptr, ptr %54, align 8, !tbaa !5
  invoke void @Longtail_Free(ptr noundef %897)
          to label %898 unwind label %612

898:                                              ; preds = %896
  store ptr null, ptr %54, align 8, !tbaa !5
  %899 = load ptr, ptr %15, align 8, !tbaa !5
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %905

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

904:                                              ; preds = %901
  br label %905

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

908:                                              ; preds = %905
  %909 = load ptr, ptr %14, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %909, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %910)
          to label %911 unwind label %612

911:                                              ; preds = %908
  br label %912

912:                                              ; preds = %911, %905
  %913 = load ptr, ptr %13, align 8, !tbaa !5
  %914 = icmp ne ptr %913, null
  br i1 %914, label %915, label %919

915:                                              ; preds = %912
  %916 = load ptr, ptr %13, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %916, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %917)
          to label %918 unwind label %612

918:                                              ; preds = %915
  br label %919

919:                                              ; preds = %918, %912
  %920 = load ptr, ptr %6, align 8, !tbaa !5
  %921 = icmp ne ptr %920, null
  br i1 %921, label %922, label %926

922:                                              ; preds = %919
  %923 = load ptr, ptr %6, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %923, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %924)
          to label %925 unwind label %612

925:                                              ; preds = %922
  br label %926

926:                                              ; preds = %925, %919
  %927 = load ptr, ptr %5, align 8, !tbaa !5
  %928 = icmp ne ptr %927, null
  br i1 %928, label %929, label %933

929:                                              ; preds = %926
  %930 = load ptr, ptr %5, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %930, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %931)
          to label %932 unwind label %612

932:                                              ; preds = %929
  br label %933

933:                                              ; preds = %932, %926
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = icmp ne ptr %934, null
  br i1 %935, label %936, label %940

936:                                              ; preds = %933
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.Longtail_HashAPI, ptr %937, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %938)
          to label %939 unwind label %612

939:                                              ; preds = %936
  br label %940

940:                                              ; preds = %939, %933
  %941 = load ptr, ptr %3, align 8, !tbaa !5
  %942 = icmp ne ptr %941, null
  br i1 %942, label %943, label %947

943:                                              ; preds = %940
  %944 = load ptr, ptr %3, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %944, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %945)
          to label %946 unwind label %612

946:                                              ; preds = %943
  br label %947

947:                                              ; preds = %946, %940
  %948 = load ptr, ptr %8, align 8, !tbaa !5
  %949 = icmp ne ptr %948, null
  br i1 %949, label %950, label %954

950:                                              ; preds = %947
  %951 = load ptr, ptr %8, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %951, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %952)
          to label %953 unwind label %612

953:                                              ; preds = %950
  br label %954

954:                                              ; preds = %953, %947
  %955 = load ptr, ptr %7, align 8, !tbaa !5
  %956 = icmp ne ptr %955, null
  br i1 %956, label %957, label %961

957:                                              ; preds = %954
  %958 = load ptr, ptr %7, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %958, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %959)
          to label %960 unwind label %612

960:                                              ; preds = %957
  br label %961

961:                                              ; preds = %960, %954
  store i32 0, ptr %12, align 4
  br label %962

962:                                              ; preds = %961, %892, %665, %639, %611
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %963

963:                                              ; preds = %962, %572, %547, %522, %489
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %964

964:                                              ; preds = %963, %450
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %965

965:                                              ; preds = %964, %415
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %966

966:                                              ; preds = %965, %387, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %967

967:                                              ; preds = %966, %338, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %968

968:                                              ; preds = %967, %302
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %969

969:                                              ; preds = %968, %284, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %970

970:                                              ; preds = %969, %253
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %971

971:                                              ; preds = %970, %92
  call void @llvm.lifetime.end.p0(i64 256, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  %972 = load i32, ptr %12, align 4
  switch i32 %972, label %985 [
    i32 0, label %973
    i32 1, label %973
  ]

973:                                              ; preds = %971, %971
  ret void

974:                                              ; preds = %891, %666, %616, %612
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %975

975:                                              ; preds = %974, %573, %548, %523, %498, %494
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %48) #7
  br label %976

976:                                              ; preds = %975, %490
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %977

977:                                              ; preds = %976, %459, %455
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %45) #7
  br label %978

978:                                              ; preds = %977, %451
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %979

979:                                              ; preds = %978, %420, %416
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %980

980:                                              ; preds = %979
  %981 = load ptr, ptr %41, align 8
  %982 = load i32, ptr %42, align 4
  %983 = insertvalue { ptr, i32 } poison, ptr %981, 0
  %984 = insertvalue { ptr, i32 } %983, i32 %982, 1
  resume { ptr, i32 } %984

985:                                              ; preds = %971
  unreachable
}

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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { 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, !6, i64 32}
!10 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !12, i64 88, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 92, !12, i64 96, !12, i64 97, !12, i64 99, !12, i64 100}
!11 = !{!"_ZTS13jc_test_stats", !12, i64 0, !12, i64 4, !12, i64 6, !12, i64 8, !12, i64 12, !13, i64 16}
!12 = !{!"int", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !12, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !6, i64 96}
!17 = !{!"_ZTS19Longtail_StorageAPI", !18, 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}
!18 = !{!"_ZTS12Longtail_API", !6, i64 0}
!19 = !{!17, !6, i64 32}
!20 = !{!17, !6, i64 40}
!21 = !{!17, !6, i64 72}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!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, !12, i64 128, !6, i64 136, !6, i64 144}
!26 = !{!25, !6, i64 96}
!27 = !{!28, !6, i64 56}
!28 = !{!"_ZTS22Longtail_BlockStoreAPI", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!29 = !{!25, !6, i64 104}
!30 = !{!25, !6, i64 112}
!31 = !{!17, !6, i64 8}
!32 = !{!17, !6, i64 16}
!33 = !{!17, !6, i64 24}
!34 = distinct !{!34, !23}


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

%class.TestAsyncBlockStore = type { %struct.Longtail_BlockStoreAPI, ptr, ptr, i32, ptr, ptr, ptr, [8 x ptr], i32, ptr, i64, ptr, i64, ptr, i64, ptr, ptr, ptr }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncFlushComplete = type <{ %struct.Longtail_AsyncFlushAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncFlushAPI = 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.254 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [13 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.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.409 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.507 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.510 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.513 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.526 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.527 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.529 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.530 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.531 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.532 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [173 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.602 = external hidden unnamed_addr constant [69 x i8], align 1
@__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [8 x ptr], align 16
@__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [8 x ptr], align 16
@.str.603 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.604 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.605 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.606 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.607 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.608 = external hidden unnamed_addr constant [27 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

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

; 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), 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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28)) unnamed_addr #5 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_CreateStoreIndex(ptr noundef, i32 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_NEIP19Longtail_StoreIndexS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @Longtail_WriteVersion(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 i32 @_ZN19TestAsyncBlockStore14InitBlockStoreEPS_P16Longtail_HashAPIP15Longtail_JobAPI(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %class.TestAsyncBlockStore, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca [8 x i64], align 16
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %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 i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %struct.TestAsyncFlushComplete, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.TestAsyncFlushComplete, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca %struct.TestAsyncFlushComplete, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = tail call ptr @Longtail_CreateFullCompressionRegistry()
  %48 = tail call ptr @Longtail_CreateBlake3HashAPI()
  %49 = tail call ptr @Longtail_CreateHPCDCChunkerAPI()
  %50 = tail call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  %51 = tail call ptr @Longtail_CreateInMemStorageAPI()
  %52 = tail call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %50, ptr noundef %51, ptr noundef nonnull @.str.601, ptr noundef null, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %2) #6
  %53 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %54 = getelementptr inbounds i8, ptr %53, i64 96
  %55 = load i32, ptr %54, align 8
  %56 = and i32 %55, -16776961
  %57 = or disjoint i32 %56, 1064448
  store i32 %57, ptr %54, align 8
  %58 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %59 = getelementptr inbounds i8, ptr %58, i64 32
  store ptr @.str.3, ptr %59, align 8, !tbaa !5
  tail call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  store i32 0, ptr %3, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  %60 = call noundef i32 @_ZN19TestAsyncBlockStore14InitBlockStoreEPS_P16Longtail_HashAPIP15Longtail_JobAPI(ptr noundef nonnull %2, ptr noundef %48, ptr noundef %50)
  store i32 %60, ptr %4, align 4, !tbaa !13
  %61 = 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) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.602, ptr noundef null)
  %62 = icmp eq i32 %61, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  br i1 %62, label %63, label %64

63:                                               ; preds = %1
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %603

64:                                               ; preds = %1
  %65 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef nonnull %2, ptr noundef %47)
  %66 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %50, ptr noundef %52, ptr noundef %65)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #6
  %67 = load ptr, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, align 16, !tbaa !14
  %68 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %67) #7
  %69 = add i64 %68, 1
  store i64 %69, ptr %5, align 16, !tbaa !15
  %70 = getelementptr inbounds i8, ptr %5, i64 8
  %71 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 8), align 8, !tbaa !14
  %72 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %71) #7
  %73 = add i64 %72, 1
  store i64 %73, ptr %70, align 8, !tbaa !15
  %74 = getelementptr inbounds i8, ptr %5, i64 16
  %75 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 16), align 16, !tbaa !14
  %76 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %75) #7
  %77 = add i64 %76, 1
  store i64 %77, ptr %74, align 16, !tbaa !15
  %78 = getelementptr inbounds i8, ptr %5, i64 24
  %79 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 24), align 8, !tbaa !14
  %80 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %79) #7
  %81 = add i64 %80, 1
  store i64 %81, ptr %78, align 8, !tbaa !15
  %82 = getelementptr inbounds i8, ptr %5, i64 32
  %83 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 32), align 16, !tbaa !14
  %84 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %83) #7
  %85 = add i64 %84, 1
  store i64 %85, ptr %82, align 16, !tbaa !15
  %86 = getelementptr inbounds i8, ptr %5, i64 40
  store i64 0, ptr %86, align 8, !tbaa !15
  %87 = getelementptr inbounds i8, ptr %5, i64 48
  %88 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 48), align 16, !tbaa !14
  %89 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %88) #7
  %90 = add i64 %89, 1
  store i64 %90, ptr %87, align 16, !tbaa !15
  %91 = getelementptr inbounds i8, ptr %5, i64 56
  %92 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 56), align 8, !tbaa !14
  %93 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %92) #7
  %94 = add i64 %93, 1
  store i64 %94, ptr %91, align 8, !tbaa !15
  %95 = getelementptr inbounds i8, ptr %51, i64 96
  %96 = getelementptr inbounds i8, ptr %51, i64 32
  %97 = getelementptr inbounds i8, ptr %51, i64 40
  %98 = getelementptr inbounds i8, ptr %51, i64 72
  br label %99

99:                                               ; preds = %64, %156
  %indvars.iv = phi i64 [ 0, %64 ], [ %indvars.iv.next, %156 ]
  %100 = load ptr, ptr %95, align 8, !tbaa !16
  %101 = getelementptr inbounds [8 x ptr], ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_FILENAMES, i64 0, i64 %indvars.iv
  %102 = load ptr, ptr %101, align 8, !tbaa !14
  %103 = call noundef ptr %100(ptr noundef %51, ptr noundef nonnull @.str.409, ptr noundef %102)
  %104 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %105 = getelementptr inbounds i8, ptr %104, i64 96
  %106 = load i32, ptr %105, align 8
  %107 = and i32 %106, -16776961
  %108 = or disjoint i32 %107, 1087232
  store i32 %108, ptr %105, align 8
  %109 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %110 = getelementptr inbounds i8, ptr %109, i64 32
  store ptr @.str.3, ptr %110, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %111 = call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %51, ptr noundef %103)
  %112 = call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %111, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.526)
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %.thread, label %114

.thread:                                          ; preds = %99
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %602

114:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %115 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %116 = getelementptr inbounds i8, ptr %115, i64 96
  %117 = load i32, ptr %116, align 8
  %118 = and i32 %117, -16776961
  %119 = or disjoint i32 %118, 1087744
  store i32 %119, ptr %116, align 8
  %120 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %121 = getelementptr inbounds i8, ptr %120, i64 32
  store ptr @.str.3, ptr %121, align 8, !tbaa !5
  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 !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  %122 = load ptr, ptr %96, align 8, !tbaa !19
  %123 = call noundef i32 %122(ptr noundef nonnull %51, ptr noundef %103, i64 noundef 0, ptr noundef nonnull %6)
  store i32 %123, ptr %8, align 4, !tbaa !13
  %124 = 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.527, ptr noundef null)
  %125 = icmp eq i32 %124, 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 %125, label %.thread157, label %126

126:                                              ; preds = %114
  call void @Longtail_Free(ptr noundef %103)
  %127 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %128 = getelementptr inbounds i8, ptr %127, i64 96
  %129 = load i32, ptr %128, align 8
  %130 = and i32 %129, -16776961
  %131 = or disjoint i32 %130, 1088256
  store i32 %131, ptr %128, align 8
  %132 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %133 = getelementptr inbounds i8, ptr %132, i64 32
  store ptr @.str.3, ptr %133, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %134 = load ptr, ptr %6, align 8, !tbaa !14
  %135 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %134, ptr noundef nonnull @.str.388, ptr noundef nonnull @.str.389)
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %.thread157, label %137

137:                                              ; preds = %126
  %138 = getelementptr inbounds [8 x i64], ptr %5, i64 0, i64 %indvars.iv
  %139 = load i64, ptr %138, align 8, !tbaa !15
  %.not = icmp eq i64 %139, 0
  br i1 %.not, label %156, label %140

140:                                              ; preds = %137
  %141 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %142 = getelementptr inbounds i8, ptr %141, i64 96
  %143 = load i32, ptr %142, align 8
  %144 = and i32 %143, -16776961
  %145 = or disjoint i32 %144, 1089024
  store i32 %145, ptr %142, align 8
  %146 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %147 = getelementptr inbounds i8, ptr %146, i64 32
  store ptr @.str.3, ptr %147, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 0, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %148 = load ptr, ptr %97, align 8, !tbaa !20
  %149 = load ptr, ptr %6, align 8, !tbaa !14
  %150 = load i64, ptr %138, align 8, !tbaa !15
  %151 = getelementptr inbounds [8 x ptr], ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 0, i64 %indvars.iv
  %152 = load ptr, ptr %151, align 8, !tbaa !14
  %153 = call noundef i32 %148(ptr noundef nonnull %51, ptr noundef %149, i64 noundef 0, i64 noundef %150, ptr noundef %152)
  store i32 %153, ptr %10, align 4, !tbaa !13
  %154 = 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) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.528, ptr noundef null)
  %155 = icmp eq i32 %154, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br i1 %155, label %.thread157, label %156

.thread157:                                       ; preds = %140, %126, %114
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %602

156:                                              ; preds = %140, %137
  %157 = load ptr, ptr %98, align 8, !tbaa !21
  %158 = load ptr, ptr %6, align 8, !tbaa !14
  call void %157(ptr noundef nonnull %51, ptr noundef %158)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond = icmp eq i64 %indvars.iv.next, 8
  br i1 %exitcond, label %.critedge, label %99, !llvm.loop !22

.critedge:                                        ; preds = %156
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %159 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %160 = getelementptr inbounds i8, ptr %159, i64 96
  %161 = load i32, ptr %160, align 8
  %162 = and i32 %161, -16776961
  %163 = or disjoint i32 %162, 1090816
  store i32 %163, ptr %160, align 8
  %164 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %165 = getelementptr inbounds i8, ptr %164, i64 32
  store ptr @.str.3, ptr %165, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 0, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  %166 = call i32 @Longtail_GetFilesRecursively2(ptr noundef nonnull %51, ptr noundef %50, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.409, ptr noundef nonnull %11)
  store i32 %166, ptr %13, align 4, !tbaa !13
  %167 = 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) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.529, ptr noundef null)
  %168 = icmp eq i32 %167, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %168, label %169, label %170

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

170:                                              ; preds = %.critedge
  %171 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %172 = getelementptr inbounds i8, ptr %171, i64 96
  %173 = load i32, ptr %172, align 8
  %174 = and i32 %173, -16776961
  %175 = or disjoint i32 %174, 1091072
  store i32 %175, ptr %172, align 8
  %176 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %177 = getelementptr inbounds i8, ptr %176, i64 32
  store ptr @.str.3, ptr %177, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %178 = load ptr, ptr %11, align 8, !tbaa !14
  %179 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %178, ptr noundef nonnull @.str.253, ptr noundef nonnull @.str.254)
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %182

181:                                              ; preds = %170
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %601

182:                                              ; preds = %170
  %183 = load ptr, ptr %11, align 8, !tbaa !14
  %184 = call noundef ptr @_ZL12GetAssetTagsP19Longtail_StorageAPIPK18Longtail_FileInfos(ptr noundef nonnull %51, ptr noundef %183)
  %185 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %186 = getelementptr inbounds i8, ptr %185, i64 96
  %187 = load i32, ptr %186, align 8
  %188 = and i32 %187, -16776961
  %189 = or disjoint i32 %188, 1091584
  store i32 %189, ptr %186, align 8
  %190 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %191 = getelementptr inbounds i8, ptr %190, i64 32
  store ptr @.str.3, ptr %191, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %192 = call noundef i32 @_Z14jc_test_cmp_NEIPjS0_EiT_T0_PKcS4_(ptr noundef null, ptr noundef %184, ptr noundef nonnull @.str.255, ptr noundef nonnull @.str.530)
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %182
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %601

195:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %196 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %197 = getelementptr inbounds i8, ptr %196, i64 96
  %198 = load i32, ptr %197, align 8
  %199 = and i32 %198, -16776961
  %200 = or disjoint i32 %199, 1095424
  store i32 %200, ptr %197, align 8
  %201 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  store ptr @.str.3, ptr %202, align 8, !tbaa !5
  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 !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  %203 = load ptr, ptr %11, align 8, !tbaa !14
  %204 = call i32 @Longtail_CreateVersionIndex(ptr noundef nonnull %51, ptr noundef %48, ptr noundef %49, ptr noundef %50, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.409, ptr noundef %203, ptr noundef %184, i32 noundef 50, i32 noundef 0, ptr noundef nonnull %14)
  store i32 %204, ptr %16, align 4, !tbaa !13
  %205 = 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.531, ptr noundef null)
  %206 = icmp eq i32 %205, 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 %206, label %207, label %208

207:                                              ; preds = %195
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %600

208:                                              ; preds = %195
  %209 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %210 = getelementptr inbounds i8, ptr %209, i64 96
  %211 = load i32, ptr %210, align 8
  %212 = and i32 %211, -16776961
  %213 = or disjoint i32 %212, 1095680
  store i32 %213, ptr %210, align 8
  %214 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %215 = getelementptr inbounds i8, ptr %214, i64 32
  store ptr @.str.3, ptr %215, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %216 = load ptr, ptr %14, align 8, !tbaa !14
  %217 = call noundef i32 @_Z14jc_test_cmp_NEIP21Longtail_VersionIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %216, ptr noundef nonnull @.str.259, ptr noundef nonnull @.str.260)
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %220

219:                                              ; preds = %208
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %600

220:                                              ; preds = %208
  call void @Longtail_Free(ptr noundef %184)
  %221 = load ptr, ptr %11, align 8, !tbaa !14
  call void @Longtail_Free(ptr noundef %221)
  store ptr null, ptr %11, align 8, !tbaa !14
  %222 = load ptr, ptr %14, align 8, !tbaa !14
  %223 = getelementptr inbounds i8, ptr %222, i64 32
  %224 = load ptr, ptr %223, align 8, !tbaa !24
  %225 = load i32, ptr %224, align 4, !tbaa !13
  %226 = getelementptr inbounds i8, ptr %222, i64 96
  %227 = load ptr, ptr %226, align 8, !tbaa !26
  %228 = call noundef ptr @_ZL22SyncGetExistingContentP22Longtail_BlockStoreAPIjPKmj(ptr noundef %66, i32 noundef %225, ptr noundef %227, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %229 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %230 = getelementptr inbounds i8, ptr %229, i64 96
  %231 = load i32, ptr %230, align 8
  %232 = and i32 %231, -16776961
  %233 = or disjoint i32 %232, 1099520
  store i32 %233, ptr %230, align 8
  %234 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %235 = getelementptr inbounds i8, ptr %234, i64 32
  store ptr @.str.3, ptr %235, align 8, !tbaa !5
  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 !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  %236 = load ptr, ptr %14, align 8, !tbaa !14
  %237 = call i32 @Longtail_CreateMissingContent(ptr noundef %48, ptr noundef %228, ptr noundef %236, i32 noundef 32, i32 noundef 3, ptr noundef nonnull %17)
  store i32 %237, ptr %19, align 4, !tbaa !13
  %238 = 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.412, ptr noundef null)
  %239 = icmp eq i32 %238, 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 %239, label %240, label %241

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

241:                                              ; preds = %220
  %242 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %243 = getelementptr inbounds i8, ptr %242, i64 96
  %244 = load i32, ptr %243, align 8
  %245 = and i32 %244, -16776961
  %246 = or disjoint i32 %245, 1102336
  store i32 %246, ptr %243, align 8
  %247 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %248 = getelementptr inbounds i8, ptr %247, i64 32
  store ptr @.str.3, ptr %248, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  store i32 0, ptr %20, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %249 = load ptr, ptr %17, align 8, !tbaa !14
  %250 = load ptr, ptr %14, align 8, !tbaa !14
  %251 = call i32 @Longtail_WriteContent(ptr noundef nonnull %51, ptr noundef %66, ptr noundef %50, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %249, ptr noundef %250, ptr noundef nonnull @.str.409)
  store i32 %251, ptr %21, align 4, !tbaa !13
  %252 = 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) %20, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.532, ptr noundef null)
  %253 = icmp eq i32 %252, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br i1 %253, label %254, label %255

254:                                              ; preds = %241
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %599

255:                                              ; preds = %241
  %256 = load ptr, ptr %17, align 8, !tbaa !14
  call void @Longtail_Free(ptr noundef %256)
  store ptr null, ptr %17, align 8, !tbaa !14
  call void @Longtail_Free(ptr noundef %228)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  call void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22)
  %257 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %258 unwind label %275

258:                                              ; preds = %255
  %259 = getelementptr inbounds i8, ptr %257, i64 96
  %260 = load i32, ptr %259, align 8
  %261 = and i32 %260, -16776961
  %262 = or disjoint i32 %261, 1104128
  store i32 %262, ptr %259, align 8
  %263 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %264 unwind label %275

264:                                              ; preds = %258
  %265 = getelementptr inbounds i8, ptr %263, i64 32
  store ptr @.str.3, ptr %265, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %266 unwind label %275

266:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 0, ptr %23, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  %267 = getelementptr inbounds i8, ptr %2, i64 56
  %268 = load ptr, ptr %267, align 8, !tbaa !27
  %269 = invoke noundef i32 %268(ptr noundef nonnull %2, ptr noundef nonnull %22)
          to label %270 unwind label %277

270:                                              ; preds = %266
  store i32 %269, ptr %24, align 4, !tbaa !13
  %271 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.603, ptr noundef null)
          to label %272 unwind label %277

272:                                              ; preds = %270
  %273 = icmp eq i32 %271, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br i1 %273, label %274, label %279

274:                                              ; preds = %272
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %598 unwind label %275

275:                                              ; preds = %274, %264, %258, %255
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %609

277:                                              ; preds = %270, %266
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %609

279:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  invoke void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %25)
          to label %280 unwind label %298

280:                                              ; preds = %279
  %281 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %282 unwind label %300

282:                                              ; preds = %280
  %283 = getelementptr inbounds i8, ptr %281, i64 96
  %284 = load i32, ptr %283, align 8
  %285 = and i32 %284, -16776961
  %286 = or disjoint i32 %285, 1104896
  store i32 %286, ptr %283, align 8
  %287 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %288 unwind label %300

288:                                              ; preds = %282
  %289 = getelementptr inbounds i8, ptr %287, i64 32
  store ptr @.str.3, ptr %289, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %290 unwind label %300

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  store i32 0, ptr %26, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  %291 = load ptr, ptr %267, align 8, !tbaa !27
  %292 = invoke noundef i32 %291(ptr noundef nonnull %2, ptr noundef nonnull %25)
          to label %293 unwind label %302

293:                                              ; preds = %290
  store i32 %292, ptr %27, align 4, !tbaa !13
  %294 = invoke 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 nonnull @.str.46, ptr noundef nonnull @.str.604, ptr noundef null)
          to label %295 unwind label %302

295:                                              ; preds = %293
  %296 = icmp eq i32 %294, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br i1 %296, label %297, label %304

297:                                              ; preds = %295
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %597 unwind label %300

298:                                              ; preds = %279
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %608

300:                                              ; preds = %297, %288, %282, %280
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %607

302:                                              ; preds = %293, %290
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br label %607

304:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  invoke void @_ZN22TestAsyncFlushCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28)
          to label %305 unwind label %322

305:                                              ; preds = %304
  %306 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %307 unwind label %324

307:                                              ; preds = %305
  %308 = getelementptr inbounds i8, ptr %306, i64 96
  %309 = load i32, ptr %308, align 8
  %310 = and i32 %309, -16776961
  %311 = or disjoint i32 %310, 1105664
  store i32 %311, ptr %308, align 8
  %312 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %313 unwind label %324

313:                                              ; preds = %307
  %314 = getelementptr inbounds i8, ptr %312, i64 32
  store ptr @.str.3, ptr %314, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %315 unwind label %324

315:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  store i32 0, ptr %29, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  %316 = load ptr, ptr %267, align 8, !tbaa !27
  %317 = invoke noundef i32 %316(ptr noundef nonnull %2, ptr noundef nonnull %28)
          to label %318 unwind label %326

318:                                              ; preds = %315
  store i32 %317, ptr %30, align 4, !tbaa !13
  %319 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.605, ptr noundef null)
          to label %320 unwind label %326

320:                                              ; preds = %318
  %321 = icmp eq i32 %319, 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 %321, label %.invoke, label %328

322:                                              ; preds = %304
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %606

324:                                              ; preds = %.invoke, %373, %367, %365, %364, %355, %349, %347, %346, %337, %331, %329, %328, %313, %307, %305
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %605

326:                                              ; preds = %318, %315
  %327 = landingpad { ptr, i32 }
          cleanup
  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 label %605

328:                                              ; preds = %320
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %22)
          to label %329 unwind label %324

329:                                              ; preds = %328
  %330 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %331 unwind label %324

331:                                              ; preds = %329
  %332 = getelementptr inbounds i8, ptr %330, i64 96
  %333 = load i32, ptr %332, align 8
  %334 = and i32 %333, -16776961
  %335 = or disjoint i32 %334, 1106432
  store i32 %335, ptr %332, align 8
  %336 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %337 unwind label %324

337:                                              ; preds = %331
  %338 = getelementptr inbounds i8, ptr %336, i64 32
  store ptr @.str.3, ptr %338, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %339 unwind label %324

339:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  store i32 0, ptr %31, align 4, !tbaa !13
  %340 = getelementptr inbounds i8, ptr %22, i64 24
  %341 = invoke 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) %340, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.606, ptr noundef null)
          to label %342 unwind label %344

342:                                              ; preds = %339
  %343 = icmp eq i32 %341, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  br i1 %343, label %.invoke, label %346

344:                                              ; preds = %339
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  br label %605

346:                                              ; preds = %342
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %25)
          to label %347 unwind label %324

347:                                              ; preds = %346
  %348 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %349 unwind label %324

349:                                              ; preds = %347
  %350 = getelementptr inbounds i8, ptr %348, i64 96
  %351 = load i32, ptr %350, align 8
  %352 = and i32 %351, -16776961
  %353 = or disjoint i32 %352, 1106944
  store i32 %353, ptr %350, align 8
  %354 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %355 unwind label %324

355:                                              ; preds = %349
  %356 = getelementptr inbounds i8, ptr %354, i64 32
  store ptr @.str.3, ptr %356, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %357 unwind label %324

357:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  store i32 0, ptr %32, align 4, !tbaa !13
  %358 = getelementptr inbounds i8, ptr %25, i64 24
  %359 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %358, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.607, ptr noundef null)
          to label %360 unwind label %362

360:                                              ; preds = %357
  %361 = icmp eq i32 %359, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  br i1 %361, label %.invoke, label %364

362:                                              ; preds = %357
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  br label %605

364:                                              ; preds = %360
  invoke void @_ZN22TestAsyncFlushComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %28)
          to label %365 unwind label %324

365:                                              ; preds = %364
  %366 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %367 unwind label %324

367:                                              ; preds = %365
  %368 = getelementptr inbounds i8, ptr %366, i64 96
  %369 = load i32, ptr %368, align 8
  %370 = and i32 %369, -16776961
  %371 = or disjoint i32 %370, 1107456
  store i32 %371, ptr %368, align 8
  %372 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %373 unwind label %324

373:                                              ; preds = %367
  %374 = getelementptr inbounds i8, ptr %372, i64 32
  store ptr @.str.3, ptr %374, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %375 unwind label %324

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  store i32 0, ptr %33, align 4, !tbaa !13
  %376 = getelementptr inbounds i8, ptr %28, i64 24
  %377 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %376, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.608, ptr noundef null)
          to label %378 unwind label %380

378:                                              ; preds = %375
  %379 = icmp eq i32 %377, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  br i1 %379, label %.invoke, label %382

.invoke:                                          ; preds = %320, %378, %360, %342
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %596 unwind label %324

380:                                              ; preds = %375
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  br label %605

382:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %383 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %384 unwind label %408

384:                                              ; preds = %382
  %385 = getelementptr inbounds i8, ptr %383, i64 96
  %386 = load i32, ptr %385, align 8
  %387 = and i32 %386, -16776961
  %388 = or disjoint i32 %387, 1110272
  store i32 %388, ptr %385, align 8
  %389 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %390 unwind label %408

390:                                              ; preds = %384
  %391 = getelementptr inbounds i8, ptr %389, i64 32
  store ptr @.str.3, ptr %391, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %392 unwind label %408

392:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  store i32 0, ptr %35, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  %393 = load ptr, ptr %14, align 8, !tbaa !14
  %394 = getelementptr inbounds i8, ptr %393, i64 32
  %395 = load ptr, ptr %394, align 8, !tbaa !24
  %396 = load i32, ptr %395, align 4, !tbaa !13
  %397 = getelementptr inbounds i8, ptr %393, i64 96
  %398 = load ptr, ptr %397, align 8, !tbaa !26
  %399 = getelementptr inbounds i8, ptr %393, i64 104
  %400 = load ptr, ptr %399, align 8, !tbaa !29
  %401 = getelementptr inbounds i8, ptr %393, i64 112
  %402 = load ptr, ptr %401, align 8, !tbaa !30
  %403 = invoke i32 @Longtail_CreateStoreIndex(ptr noundef %48, i32 noundef %396, ptr noundef %398, ptr noundef %400, ptr noundef %402, i32 noundef 32, i32 noundef 3, ptr noundef nonnull %34)
          to label %404 unwind label %410

404:                                              ; preds = %392
  store i32 %403, ptr %36, align 4, !tbaa !13
  %405 = invoke 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 nonnull @.str.46, ptr noundef nonnull @.str.533, ptr noundef null)
          to label %406 unwind label %410

406:                                              ; preds = %404
  %407 = icmp eq i32 %405, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  br i1 %407, label %.invoke185, label %412

408:                                              ; preds = %.invoke185, %594, %593, %591, %589, %587, %585, %583, %582, %580, %577, %.critedge154, %435, %429, %427, %422, %420, %414, %412, %390, %384, %382
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %604

410:                                              ; preds = %404, %392
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  br label %604

412:                                              ; preds = %406
  %413 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %414 unwind label %408

414:                                              ; preds = %412
  %415 = getelementptr inbounds i8, ptr %413, i64 96
  %416 = load i32, ptr %415, align 8
  %417 = and i32 %416, -16776961
  %418 = or disjoint i32 %417, 1110528
  store i32 %418, ptr %415, align 8
  %419 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %420 unwind label %408

420:                                              ; preds = %414
  %421 = getelementptr inbounds i8, ptr %419, i64 32
  store ptr @.str.3, ptr %421, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %422 unwind label %408

422:                                              ; preds = %420
  %423 = load ptr, ptr %34, align 8, !tbaa !14
  %424 = invoke noundef i32 @_Z14jc_test_cmp_NEIP19Longtail_StoreIndexS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %423, ptr noundef nonnull @.str.534, ptr noundef nonnull @.str.535)
          to label %425 unwind label %408

425:                                              ; preds = %422
  %426 = icmp eq i32 %424, 0
  br i1 %426, label %.invoke185, label %427

427:                                              ; preds = %425
  %428 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %429 unwind label %408

429:                                              ; preds = %427
  %430 = getelementptr inbounds i8, ptr %428, i64 96
  %431 = load i32, ptr %430, align 8
  %432 = and i32 %431, -16776961
  %433 = or disjoint i32 %432, 1113600
  store i32 %433, ptr %430, align 8
  %434 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %435 unwind label %408

435:                                              ; preds = %429
  %436 = getelementptr inbounds i8, ptr %434, i64 32
  store ptr @.str.3, ptr %436, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %437 unwind label %408

437:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  store i32 0, ptr %37, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  %438 = load ptr, ptr %34, align 8, !tbaa !14
  %439 = load ptr, ptr %14, align 8, !tbaa !14
  %440 = invoke i32 @Longtail_WriteVersion(ptr noundef %66, ptr noundef nonnull %51, ptr noundef %50, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %438, ptr noundef %439, ptr noundef nonnull @.str.536, i32 noundef 1)
          to label %441 unwind label %448

441:                                              ; preds = %437
  store i32 %440, ptr %38, align 4, !tbaa !13
  %442 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.537, ptr noundef null)
          to label %443 unwind label %448

443:                                              ; preds = %441
  %444 = icmp eq i32 %442, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  br i1 %444, label %.invoke185, label %.preheader

.preheader:                                       ; preds = %443
  %445 = getelementptr inbounds i8, ptr %51, i64 8
  %446 = getelementptr inbounds i8, ptr %51, i64 16
  %447 = getelementptr inbounds i8, ptr %51, i64 24
  br label %450

.invoke185:                                       ; preds = %406, %443, %425
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %595 unwind label %408

448:                                              ; preds = %441, %437
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  br label %604

450:                                              ; preds = %.preheader, %573
  %indvars.iv181 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next182, %573 ]
  %451 = load ptr, ptr %95, align 8, !tbaa !16
  %452 = getelementptr inbounds [8 x ptr], ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_FILENAMES, i64 0, i64 %indvars.iv181
  %453 = load ptr, ptr %452, align 8, !tbaa !14
  %454 = invoke noundef ptr %451(ptr noundef nonnull %51, ptr noundef nonnull @.str.536, ptr noundef %453)
          to label %455 unwind label %472

455:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %456 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %457 unwind label %.loopexit

457:                                              ; preds = %455
  %458 = getelementptr inbounds i8, ptr %456, i64 96
  %459 = load i32, ptr %458, align 8
  %460 = and i32 %459, -16776961
  %461 = or disjoint i32 %460, 1115136
  store i32 %461, ptr %458, align 8
  %462 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %463 unwind label %.loopexit

463:                                              ; preds = %457
  %464 = getelementptr inbounds i8, ptr %462, i64 32
  store ptr @.str.3, ptr %464, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %465 unwind label %.loopexit

465:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  store i32 0, ptr %40, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  %466 = load ptr, ptr %445, align 8, !tbaa !31
  %467 = invoke noundef i32 %466(ptr noundef nonnull %51, ptr noundef %454, ptr noundef nonnull %39)
          to label %468 unwind label %474

468:                                              ; preds = %465
  store i32 %467, ptr %41, align 4, !tbaa !13
  %469 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.538, ptr noundef null)
          to label %470 unwind label %474

470:                                              ; preds = %468
  %471 = icmp eq i32 %469, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  br i1 %471, label %.invoke186, label %476

.invoke186:                                       ; preds = %470, %490
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread161 unwind label %.loopexit.split-lp

472:                                              ; preds = %450
  %473 = landingpad { ptr, i32 }
          cleanup
  br label %604

.loopexit:                                        ; preds = %455, %457, %463, %476, %477, %479, %485, %487
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %575

.loopexit.split-lp:                               ; preds = %.invoke186
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %575

474:                                              ; preds = %468, %465
  %475 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  br label %575

476:                                              ; preds = %470
  invoke void @Longtail_Free(ptr noundef %454)
          to label %477 unwind label %.loopexit

477:                                              ; preds = %476
  %478 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %479 unwind label %.loopexit

479:                                              ; preds = %477
  %480 = getelementptr inbounds i8, ptr %478, i64 96
  %481 = load i32, ptr %480, align 8
  %482 = and i32 %481, -16776961
  %483 = or disjoint i32 %482, 1115648
  store i32 %483, ptr %480, align 8
  %484 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %485 unwind label %.loopexit

485:                                              ; preds = %479
  %486 = getelementptr inbounds i8, ptr %484, i64 32
  store ptr @.str.3, ptr %486, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %487 unwind label %.loopexit

487:                                              ; preds = %485
  %488 = load ptr, ptr %39, align 8, !tbaa !14
  %489 = invoke noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %488, ptr noundef nonnull @.str.388, ptr noundef nonnull @.str.507)
          to label %490 unwind label %.loopexit

490:                                              ; preds = %487
  %491 = icmp eq i32 %489, 0
  br i1 %491, label %.invoke186, label %492

492:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  %493 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %494 unwind label %.loopexit168

494:                                              ; preds = %492
  %495 = getelementptr inbounds i8, ptr %493, i64 96
  %496 = load i32, ptr %495, align 8
  %497 = and i32 %496, -16776961
  %498 = or disjoint i32 %497, 1116160
  store i32 %498, ptr %495, align 8
  %499 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %500 unwind label %.loopexit168

500:                                              ; preds = %494
  %501 = getelementptr inbounds i8, ptr %499, i64 32
  store ptr @.str.3, ptr %501, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %502 unwind label %.loopexit168

502:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  store i32 0, ptr %43, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  %503 = load ptr, ptr %446, align 8, !tbaa !32
  %504 = load ptr, ptr %39, align 8, !tbaa !14
  %505 = invoke noundef i32 %503(ptr noundef nonnull %51, ptr noundef %504, ptr noundef nonnull %42)
          to label %506 unwind label %510

506:                                              ; preds = %502
  store i32 %505, ptr %44, align 4, !tbaa !13
  %507 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.539, ptr noundef null)
          to label %508 unwind label %510

508:                                              ; preds = %506
  %509 = icmp eq i32 %507, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  br i1 %509, label %.invoke187, label %512

.invoke187:                                       ; preds = %508, %525
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread165 unwind label %.loopexit.split-lp169

.loopexit168:                                     ; preds = %492, %494, %500, %512, %514, %520, %522
  %lpad.loopexit170 = landingpad { ptr, i32 }
          cleanup
  br label %574

.loopexit.split-lp169:                            ; preds = %.invoke187
  %lpad.loopexit.split-lp171 = landingpad { ptr, i32 }
          cleanup
  br label %574

510:                                              ; preds = %506, %502
  %511 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  br label %574

512:                                              ; preds = %508
  %513 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %514 unwind label %.loopexit168

514:                                              ; preds = %512
  %515 = getelementptr inbounds i8, ptr %513, i64 96
  %516 = load i32, ptr %515, align 8
  %517 = and i32 %516, -16776961
  %518 = or disjoint i32 %517, 1116416
  store i32 %518, ptr %515, align 8
  %519 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %520 unwind label %.loopexit168

520:                                              ; preds = %514
  %521 = getelementptr inbounds i8, ptr %519, i64 32
  store ptr @.str.3, ptr %521, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %522 unwind label %.loopexit168

522:                                              ; preds = %520
  %523 = getelementptr inbounds [8 x i64], ptr %5, i64 0, i64 %indvars.iv181
  %524 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull @.str.540, ptr noundef nonnull @.str.510)
          to label %525 unwind label %.loopexit168

525:                                              ; preds = %522
  %526 = icmp eq i32 %524, 0
  br i1 %526, label %.invoke187, label %527

527:                                              ; preds = %525
  %528 = load i64, ptr %42, align 8, !tbaa !15
  %529 = invoke ptr @Longtail_Alloc(ptr noundef null, i64 noundef %528)
          to label %530 unwind label %.loopexit173

530:                                              ; preds = %527
  %531 = load i64, ptr %42, align 8, !tbaa !15
  %.not128 = icmp eq i64 %531, 0
  br i1 %.not128, label %569, label %532

532:                                              ; preds = %530
  %533 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %534 unwind label %.loopexit173

534:                                              ; preds = %532
  %535 = getelementptr inbounds i8, ptr %533, i64 96
  %536 = load i32, ptr %535, align 8
  %537 = and i32 %536, -16776961
  %538 = or disjoint i32 %537, 1117440
  store i32 %538, ptr %535, align 8
  %539 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %540 unwind label %.loopexit173

540:                                              ; preds = %534
  %541 = getelementptr inbounds i8, ptr %539, i64 32
  store ptr @.str.3, ptr %541, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %542 unwind label %.loopexit173

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #6
  store i32 0, ptr %45, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #6
  %543 = load ptr, ptr %447, align 8, !tbaa !33
  %544 = load ptr, ptr %39, align 8, !tbaa !14
  %545 = load i64, ptr %42, align 8, !tbaa !15
  %546 = invoke noundef i32 %543(ptr noundef nonnull %51, ptr noundef %544, i64 noundef 0, i64 noundef %545, ptr noundef %529)
          to label %547 unwind label %551

547:                                              ; preds = %542
  store i32 %546, ptr %46, align 4, !tbaa !13
  %548 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.541, ptr noundef null)
          to label %549 unwind label %551

549:                                              ; preds = %547
  %550 = icmp eq i32 %548, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #6
  br i1 %550, label %.invoke188, label %553

.invoke188:                                       ; preds = %549, %567
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread165 unwind label %.loopexit.split-lp174

.loopexit173:                                     ; preds = %527, %532, %534, %540, %553, %555, %561, %563, %569, %572
  %lpad.loopexit175 = landingpad { ptr, i32 }
          cleanup
  br label %574

.loopexit.split-lp174:                            ; preds = %.invoke188
  %lpad.loopexit.split-lp176 = landingpad { ptr, i32 }
          cleanup
  br label %574

551:                                              ; preds = %547, %542
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #6
  br label %574

553:                                              ; preds = %549
  %554 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %555 unwind label %.loopexit173

555:                                              ; preds = %553
  %556 = getelementptr inbounds i8, ptr %554, i64 96
  %557 = load i32, ptr %556, align 8
  %558 = and i32 %557, -16776961
  %559 = or disjoint i32 %558, 1117696
  store i32 %559, ptr %556, align 8
  %560 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %561 unwind label %.loopexit173

561:                                              ; preds = %555
  %562 = getelementptr inbounds i8, ptr %560, i64 32
  store ptr @.str.3, ptr %562, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %563 unwind label %.loopexit173

563:                                              ; preds = %561
  %564 = getelementptr inbounds [8 x ptr], ptr @__const._ZN34Longtail_AsyncBlockStore__TestCase8TestBodyEv.TEST_STRINGS, i64 0, i64 %indvars.iv181
  %565 = load ptr, ptr %564, align 8, !tbaa !14
  %566 = invoke noundef i32 @_Z17jc_test_cmp_STREQPKcS0_S0_S0_(ptr noundef %565, ptr noundef %529, ptr noundef nonnull @.str.542, ptr noundef nonnull @.str.513)
          to label %567 unwind label %.loopexit173

567:                                              ; preds = %563
  %568 = icmp eq i32 %566, 0
  br i1 %568, label %.invoke188, label %569

569:                                              ; preds = %567, %530
  %570 = load ptr, ptr %98, align 8, !tbaa !21
  %571 = load ptr, ptr %39, align 8, !tbaa !14
  invoke void %570(ptr noundef nonnull %51, ptr noundef %571)
          to label %572 unwind label %.loopexit173

572:                                              ; preds = %569
  store ptr null, ptr %39, align 8, !tbaa !14
  invoke void @Longtail_Free(ptr noundef %529)
          to label %573 unwind label %.loopexit173

.thread161:                                       ; preds = %.invoke186
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %595

.thread165:                                       ; preds = %.invoke188, %.invoke187
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %595

573:                                              ; preds = %572
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  %indvars.iv.next182 = add nuw nsw i64 %indvars.iv181, 1
  %exitcond184 = icmp eq i64 %indvars.iv.next182, 8
  br i1 %exitcond184, label %.critedge154, label %450, !llvm.loop !34

574:                                              ; preds = %.loopexit173, %.loopexit.split-lp174, %.loopexit168, %.loopexit.split-lp169, %551, %510
  %.pn130 = phi { ptr, i32 } [ %511, %510 ], [ %552, %551 ], [ %lpad.loopexit170, %.loopexit168 ], [ %lpad.loopexit.split-lp171, %.loopexit.split-lp169 ], [ %lpad.loopexit175, %.loopexit173 ], [ %lpad.loopexit.split-lp176, %.loopexit.split-lp174 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  br label %575

575:                                              ; preds = %.loopexit, %.loopexit.split-lp, %574, %474
  %.pn132 = phi { ptr, i32 } [ %.pn130, %574 ], [ %475, %474 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %604

.critedge154:                                     ; preds = %573
  %576 = load ptr, ptr %14, align 8, !tbaa !14
  invoke void @Longtail_Free(ptr noundef %576)
          to label %577 unwind label %408

577:                                              ; preds = %.critedge154
  store ptr null, ptr %14, align 8, !tbaa !14
  %578 = load ptr, ptr %34, align 8, !tbaa !14
  invoke void @Longtail_Free(ptr noundef %578)
          to label %579 unwind label %408

579:                                              ; preds = %577
  store ptr null, ptr %34, align 8, !tbaa !14
  %.not135 = icmp eq ptr %66, null
  br i1 %.not135, label %581, label %580

580:                                              ; preds = %579
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %66)
          to label %581 unwind label %408

581:                                              ; preds = %580, %579
  %.not136 = icmp eq ptr %65, null
  br i1 %.not136, label %583, label %582

582:                                              ; preds = %581
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %65)
          to label %583 unwind label %408

583:                                              ; preds = %581, %582
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %2)
          to label %584 unwind label %408

584:                                              ; preds = %583
  %.not137 = icmp eq ptr %50, null
  br i1 %.not137, label %586, label %585

585:                                              ; preds = %584
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %50)
          to label %586 unwind label %408

586:                                              ; preds = %585, %584
  %.not138 = icmp eq ptr %49, null
  br i1 %.not138, label %588, label %587

587:                                              ; preds = %586
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %49)
          to label %588 unwind label %408

588:                                              ; preds = %587, %586
  %.not139 = icmp eq ptr %48, null
  br i1 %.not139, label %590, label %589

589:                                              ; preds = %588
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %48)
          to label %590 unwind label %408

590:                                              ; preds = %589, %588
  %.not140 = icmp eq ptr %47, null
  br i1 %.not140, label %592, label %591

591:                                              ; preds = %590
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %47)
          to label %592 unwind label %408

592:                                              ; preds = %591, %590
  %.not141 = icmp eq ptr %52, null
  br i1 %.not141, label %594, label %593

593:                                              ; preds = %592
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %52)
          to label %594 unwind label %408

594:                                              ; preds = %592, %593
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %51)
          to label %595 unwind label %408

595:                                              ; preds = %.invoke185, %.thread161, %.thread165, %594
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  br label %596

596:                                              ; preds = %.invoke, %595
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  br label %597

597:                                              ; preds = %297, %596
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %598

598:                                              ; preds = %274, %597
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br label %599

599:                                              ; preds = %598, %254, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  br label %600

600:                                              ; preds = %599, %219, %207
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %601

601:                                              ; preds = %194, %600, %181, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %602

602:                                              ; preds = %.thread, %.thread157, %601
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #6
  br label %603

603:                                              ; preds = %602, %63
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #6
  ret void

604:                                              ; preds = %472, %575, %448, %410, %408
  %.pn143 = phi { ptr, i32 } [ %409, %408 ], [ %449, %448 ], [ %411, %410 ], [ %.pn132, %575 ], [ %473, %472 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  br label %605

605:                                              ; preds = %604, %380, %362, %344, %326, %324
  %.pn145 = phi { ptr, i32 } [ %325, %324 ], [ %.pn143, %604 ], [ %381, %380 ], [ %363, %362 ], [ %345, %344 ], [ %327, %326 ]
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  br label %606

606:                                              ; preds = %605, %322
  %.pn145.pn = phi { ptr, i32 } [ %.pn145, %605 ], [ %323, %322 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  br label %607

607:                                              ; preds = %606, %302, %300
  %.pn148 = phi { ptr, i32 } [ %301, %300 ], [ %.pn145.pn, %606 ], [ %303, %302 ]
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %25) #6
  br label %608

608:                                              ; preds = %607, %298
  %.pn148.pn = phi { ptr, i32 } [ %.pn148, %607 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %609

609:                                              ; preds = %608, %277, %275
  %.pn151 = phi { ptr, i32 } [ %276, %275 ], [ %.pn148.pn, %608 ], [ %278, %277 ]
  call void @_ZN22TestAsyncFlushCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn151
}

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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !7, i64 32}
!6 = !{!"_ZTS15jc_test_fixture", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !10, i64 64, !11, i64 88, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 92, !11, i64 96, !11, i64 97, !11, i64 99, !11, i64 100}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS13jc_test_stats", !11, i64 0, !11, i64 4, !11, i64 6, !11, i64 8, !11, i64 12, !12, i64 16}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!11, !11, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!12, !12, i64 0}
!16 = !{!17, !7, i64 96}
!17 = !{!"_ZTS19Longtail_StorageAPI", !18, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!18 = !{!"_ZTS12Longtail_API", !7, i64 0}
!19 = !{!17, !7, i64 32}
!20 = !{!17, !7, i64 40}
!21 = !{!17, !7, i64 72}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!25, !7, i64 32}
!25 = !{!"_ZTS21Longtail_VersionIndex", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !11, i64 128, !7, i64 136, !7, i64 144}
!26 = !{!25, !7, i64 96}
!27 = !{!28, !7, i64 56}
!28 = !{!"_ZTS22Longtail_BlockStoreAPI", !18, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56}
!29 = !{!25, !7, i64 104}
!30 = !{!25, !7, i64 112}
!31 = !{!17, !7, i64 8}
!32 = !{!17, !7, i64 16}
!33 = !{!17, !7, i64 24}
!34 = distinct !{!34, !23}


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